<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Technical — LowEndSpirit</title>
        <link>https://lowendspirit.com/index.php?p=/</link>
        <pubDate>Thu, 09 Apr 2026 14:42:10 +0000</pubDate>
        <language>en</language>
            <description>Technical — LowEndSpirit</description>
    <atom:link href="https://lowendspirit.com/index.php?p=/categories/technical/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Anyone doing LetsEncrypt with round robin DNS?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10740/anyone-doing-letsencrypt-with-round-robin-dns</link>
        <pubDate>Wed, 08 Apr 2026 22:01:45 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>WSS</dc:creator>
        <guid isPermaLink="false">10740@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hi Folks.</p>

<p>I've got this zany idea of getting a backup service running on a NAT box behind HAProxy as well as the front-end with it's own dedicated IPs.</p>

<p>I don't really want to rely on rsync, but I probably will have to to ensure data propagation properly- however, I don't really want to do that for SSL certificates for various reasons.  I'm thinking possibly DNS challenge, or being really, really lazy and just letting either box submit it's certbot requests and waiting for the luck of the draw renew them every other day or so.</p>

<p>Thoughts? Implementations on your side?</p>
]]>
        </description>
    </item>
    <item>
        <title>Post some YABS bench here</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/592/post-some-yabs-bench-here</link>
        <pubDate>Fri, 07 Feb 2020 12:25:41 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>cybertech</dc:creator>
        <guid isPermaLink="false">592@/index.php?p=/discussions</guid>
        <description><![CDATA[<p></p><div>

<h1><strong>Welcome to OCD Benchmarking Thread</strong></h1>

<p><em>Only in here, benchmark walks. The rest is talk.</em><br />
</p></div>

<hr />

<p>When sharing/posting YABS results, please use the proper code tag/formatting (&#96;&#96;) just so that the results are displayed neatly.</p>

<p>In addition to the above, it would be very much appreciated if you were to include details such as the Provider, Plan, Location and Price. Other details like date of purchase can be included as well, or just indicate if it's a deal bought on a special occasion, i.e., Black Friday, Cyber Monday, Independence Day etc.</p>

<p>If you're posting results of a custom built machine, or something locally of your own, it would be nice if you could share details of your build and/or hardware - just to serve as an "FYI" for the community members.</p>

<p>Here's an example of the format you can use to share your YABS results:</p>

<div>  <p>ShockHosting SSD-KVM-2GB - Piscataway NJ US - $29.99/year (4th of July Deal)</p>

<pre><code># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2022-06-11                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Mon 04 Jul 2022 04:28:07 PM EDT

Basic System Information:
---------------------------------
Uptime     : 0 days, 0 hours, 6 minutes
Processor  : Intel(R) Xeon(R) Gold 5315Y CPU @ 3.20GHz
CPU cores  : 1 @ 3199.998 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 1.9 GiB
Swap       : 975.0 MiB
Disk       : 28.4 GiB
Distro     : Debian GNU/Linux 11 (bullseye)
Kernel     : 5.10.0-15-amd64

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 264.91 MB/s  (66.2k) | 3.46 GB/s    (54.1k)
Write      | 265.61 MB/s  (66.4k) | 3.48 GB/s    (54.4k)
Total      | 530.52 MB/s (132.6k) | 6.95 GB/s   (108.6k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 9.32 GB/s    (18.2k) | 7.95 GB/s     (7.7k)
Write      | 9.82 GB/s    (19.1k) | 8.48 GB/s     (8.2k)
Total      | 19.15 GB/s   (37.4k) | 16.44 GB/s   (16.0k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 828 Mbits/sec   | 469 Mbits/sec
Online.net      | Paris, FR (10G)           | 882 Mbits/sec   | 262 Mbits/sec
Hybula          | The Netherlands (40G)     | 882 Mbits/sec   | 823 Mbits/sec
Uztelecom       | Tashkent, UZ (10G)        | 577 Mbits/sec   | 307 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 940 Mbits/sec   | 939 Mbits/sec
Clouvider       | Dallas, TX, US (10G)      | 746 Mbits/sec   | 155 Mbits/sec
Clouvider       | Los Angeles, CA, US (10G) | 796 Mbits/sec   | 619 Mbits/sec

iperf3 Network Speed Tests (IPv6):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 705 Mbits/sec   | 435 Mbits/sec
Online.net      | Paris, FR (10G)           | 823 Mbits/sec   | 431 Mbits/sec
Hybula          | The Netherlands (40G)     | 714 Mbits/sec   | 725 Mbits/sec
Uztelecom       | Tashkent, UZ (10G)        | 676 Mbits/sec   | 410 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 926 Mbits/sec   | 926 Mbits/sec
Clouvider       | Dallas, TX, US (10G)      | 904 Mbits/sec   | 775 Mbits/sec
Clouvider       | Los Angeles, CA, US (10G) | 885 Mbits/sec   | 632 Mbits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 1036
Multi Core      | 1005
Full Test       | https://browser.geekbench.com/v5/cpu/15825267
</code></pre></div>

<p>Thank you and happy YABS-ing! <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/heart.png" title="&lt;3" alt="&lt;3" height="18" /></p>

<p></p><hr />
]]>
        </description>
    </item>
    <item>
        <title>Alpine Linux 3.23 - 23mb ram | 71mb disk - guide</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10647/alpine-linux-3-23-23mb-ram-71mb-disk-guide</link>
        <pubDate>Thu, 12 Mar 2026 18:35:01 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10647@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><strong>Minimising Alpine 3.23 on a KVM VPS ran on TierHive</strong></p>

<p>This guide documents how to strip a freshly deployed Alpine 3.23 (should be fine on 3.22 also) VPS down to the minimum RAM and disk footprint without breaking it.</p>

<p>For those reading it running it outside of TierHive, please note this targets KVM-based VPS instances with a virtio-blk disk (<code>/dev/vda</code>), a single network interface, and a static IP assigned at deployment. If your disk is virtio-scsi (<code>/dev/sda</code>) there is one step that differs, noted inline.</p>

<hr />

<h2>Before</h2>

<p>Fresh deploy, cloud-init has run, nothing changed yet, cant run apk, not enough free ram.</p>

<pre><code>              total        used        free      shared  buff/cache   available
Mem:             91          38          25           2          28          47
Swap:             0           0           0
</code></pre>

<pre><code>Filesystem      Size      Used Available Use% Mounted on
/dev/vda       953.0M    164.4M    741.7M  18% /
</code></pre>

<hr />

<h2>Stage 1: Kernel Module Blacklist and Initramfs</h2>

<p>The Alpine virt kernel loads modules that have no purpose on a headless KVM VPS: USB controllers, graphics drivers, cloud-specific network drivers for AWS and GCP, I2C buses, input devices, and more. Blacklisting them stops them loading on boot.</p>

<p>Some modules, however, are listed in the kernel <code>modules=</code> boot parameter and load before the blacklist is read. They also need removing from the initramfs features list. Do all three together so only one <code>mkinitfs</code> run is needed.</p>

<p>Create the blacklist:</p>

<pre><code>cat &gt; /etc/modprobe.d/blacklist-unnecessary.conf &lt;&lt; 'EOF'
# Graphics (headless server)
blacklist drm
blacklist drm_kms_helper
blacklist simpledrm
blacklist virtio_gpu
blacklist fb

# KVM (not nesting VMs)
blacklist kvm
blacklist kvm_amd
blacklist kvm_intel

# Legacy devices
blacklist floppy
blacklist cdrom
blacklist sr_mod
blacklist isofs

# HID/input (headless)
blacklist hid
blacklist usbhid
blacklist hid_generic
blacklist psmouse
blacklist mousedev

# Wrong cloud drivers (not GCP/AWS)
blacklist gve
blacklist ena

# Force block DRM (blacklist alone does not work, ACPI triggers it)
install drm /bin/true
install drm_kms_helper /bin/true
install simpledrm /bin/true
install fb /bin/true

# USB (not needed on VPS)
blacklist usbcore
blacklist xhci_hcd
blacklist xhci_pci
blacklist usb_common

# I2C (not needed)
blacklist i2c_core
blacklist i2c_smbus
blacklist i2c_piix4

# Input (headless)
blacklist evdev
blacklist button

# Misc not needed
blacklist loop
blacklist ata_generic
blacklist i6300esb
blacklist qemu_fw_cfg

# Memory ballooning
blacklist virtio_balloon

# Hard block loop device (blacklist entry alone is not always sufficient)
install loop /bin/true
EOF
</code></pre>

<p>Strip the initramfs down to what a KVM virtio-blk instance actually needs. The default includes USB, CDROM, NVMe, RAID, SCSI, and cloud-specific drivers that will never be used:</p>

<pre><code>sed -i 's/^features=.*/features="base ext4 virtio"/' /etc/mkinitfs/mkinitfs.conf
</code></pre>

<blockquote><div>
  <p>If your disk is virtio-scsi (<code>/dev/sda</code>) keep <code>scsi</code> in the features list: <code>features="base ext4 scsi virtio"</code></p>
</div></blockquote>

<p>Fix the bootloader. The <code>modules=</code> parameter loads drivers early, before the blacklist runs. Remove <code>usb-storage</code>, <code>ena</code>, and <code>gve</code> from it. Also add the tuning parameters now so they are in place for the reboot at the end of this guide.</p>

<p>For <code>/boot/extlinux.conf</code>:</p>

<pre><code>sed -i 's/,usb-storage,ext4,ena,gve/,ext4 ipv6.disable=1 audit=0 nowatchdog/' /boot/extlinux.conf
</code></pre>

<p>For <code>/etc/update-extlinux.conf</code> (persists the change across kernel updates):</p>

<pre><code>sed -i 's/,usb-storage,ext4,ena,gve/,ext4/' /etc/update-extlinux.conf
sed -i 's/default_kernel_opts="/default_kernel_opts="ipv6.disable=1 audit=0 nowatchdog /' /etc/update-extlinux.conf
</code></pre>

<p>The parameters added:</p>

<ul>
<li><code>ipv6.disable=1</code> disables IPv6 at kernel level, removing the associated threads and memory allocations. Skip this if you use IPv6.</li>
<li><code>audit=0</code> disables the Linux audit subsystem. It serves no purpose on a VPS, runs a kernel thread, and pre-allocates slab memory.</li>
<li><code>nowatchdog</code> disables the softlockup and hardlockup detectors.</li>
</ul>

<p>Rebuild the initramfs:</p>

<pre><code>mkinitfs
</code></pre>

<hr />

<h2>Stage 2: Replace OpenSSH with Dropbear</h2>

<p>Dropbear is a minimal SSH server designed for low-resource systems. It is significantly smaller than OpenSSH and links against far fewer libraries. On a NAT VPS with a single exposed port, the switch must be done atomically: stop sshd and start dropbear in one command or you will lose access.</p>

<pre><code>apk add dropbear
rc-service sshd stop &amp;&amp; rc-service dropbear start
rc-update del sshd default
rc-update add dropbear default
apk del openssh openssh-client-common openssh-client-default openssh-keygen openssh-server openssh-server-common openssh-server-common-openrc openssh-server-pam openssh-sftp-server
</code></pre>

<p>Your session might drop. Reconnect on the same port as before.</p>

<hr />

<h2>Stage 3: Remove Cloud-Init and Python</h2>

<p>Cloud-init runs once at first boot to configure the instance from the provider metadata. After that it does nothing. It pulls in Python 3 and a large set of dependencies. Since it has already run and the instance is configured, all of it can be removed, if you want to keep python, remove the '|py3-|python3|pyc' part in the command.</p>

<pre><code>apk del $(grep "^P:" /lib/apk/db/installed | sed 's/^P://' | grep -E "^(cloud-init|cloud-utils|py3-|python3|pyc)")
</code></pre>

<hr />

<h2>Stage 4: Package Cleanup</h2>

<p>Remove packages that serve no purpose on a running VPS. This covers NTP replacement, redundant shell and user management tools, hardware management utilities for hardware that does not exist, and network drivers for other cloud platforms.</p>

<p><strong>Replace chrony with busybox ntpd.</strong> Chrony is a full-featured NTP implementation. Busybox includes a lightweight ntpd applet that requires no additional package:</p>

<pre><code>rc-service chronyd stop
rc-update del chronyd default
rc-update add ntpd default
apk del chrony chrony-openrc
</code></pre>

<blockquote><div>
  <p><strong>NTP is optional on KVM.</strong> The guest clock is disciplined by the hypervisor via <code>kvm-clock</code>. On TierHive and similar platforms where the end user has no control over VM suspension or migration, the hypervisor keeps the clock accurate and ntpd adds no value. To skip NTP entirely, do not add the ntpd service.</p>
</div></blockquote>

<p>Remove packages with no runtime use:</p>

<pre><code>apk del bash sudo doas nvme-cli syslinux mtools numactl curl e2fsprogs-extra partx qemu-guest-agent qemu-guest-agent-openrc
</code></pre>

<blockquote><div>
  <p><code>qemu-guest-agent</code> enables live snapshots and guest introspection from the hypervisor. If your hosting platform uses QEMU guest operations, keep it.</p>
</div></blockquote>

<p>Remove orphaned libraries left behind by the packages above. Some will be retained by apk because the kernel package depends on them, which is expected:</p>

<pre><code>apk del readline gdbm mpdecimal sqlite-libs yaml p11-kit libtasn1 gnutls nettle gmp libidn2 libunistring libexpat libedit libffi shadow tzdata libseccomp libncursesw libpanelw ncurses-terminfo-base
</code></pre>

<p>Remove dhcpcd. Once a VPS has a static IP assigned at deployment, the DHCP client is not needed:</p>

<pre><code>apk del dhcpcd dhcpcd-openrc
</code></pre>

<p>Clear the package cache:</p>

<pre><code>rm -rf /var/cache/apk/*
</code></pre>

<hr />

<h2>Stage 5: Service Cleanup</h2>

<p>Disable services that have nothing to do on a KVM VPS:</p>

<pre><code>rc-update del acpid boot
rc-update del hwclock boot
rc-update del swap boot
</code></pre>

<ul>
<li><code>acpid</code> handles ACPI events such as power button presses. The hypervisor manages power state on a VPS, not the guest.</li>
<li><code>hwclock</code> syncs the hardware clock at boot and shutdown. On KVM the RTC is virtualised and managed by the hypervisor.</li>
<li><code>swap</code> checks for and activates swap devices. There is no swap.</li>
</ul>

<hr />

<h2>Stage 6: System Tuning</h2>

<p><strong>Fix IPv6 sysctl errors</strong></p>

<p>With <code>ipv6.disable=1</code> set, the kernel no longer has IPv6 sysctl keys. The default Alpine sysctl file tries to set them anyway and produces errors at boot. Comment them out:</p>

<pre><code>sed -i '/net\.ipv6/s/^/# /' /usr/lib/sysctl.d/00-alpine.conf
</code></pre>

<p><strong>Prevent debugfs and tracefs from mounting</strong></p>

<p>These kernel debug filesystems expose internal state and are not needed on a production VPS. Note that the memory for the tracing framework is allocated at kernel initialisation regardless; this only stops the filesystems from being accessible:</p>

<pre><code>sed -i 's/mount -n -t debugfs/: #mount -n -t debugfs/' /etc/init.d/sysfs
sed -i 's/mount -n -t tracefs/: #mount -n -t tracefs/' /etc/init.d/sysfs
</code></pre>

<p><strong>Sysctl tuning</strong></p>

<p>The default network socket buffers are sized for servers under heavy load, not minimal VPS instances. Reduce them along with a few other settings:</p>

<pre><code>cat &gt; /etc/sysctl.d/10-minvps.conf &lt;&lt; 'EOF'
# Reduce network socket buffers
net.core.rmem_default = 32768
net.core.wmem_default = 32768
net.core.rmem_max = 131072
net.core.wmem_max = 131072
net.core.netdev_max_backlog = 64
net.core.somaxconn = 128

# Reclaim inode and dentry caches more aggressively under memory pressure
vm.vfs_cache_pressure = 500

# Reduce PID table overhead
kernel.pid_max = 4096

# Dirty page writeback thresholds
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

# Disable watchdog
kernel.watchdog = 0
EOF
</code></pre>

<p><strong>Switch syslogd to in-memory circular buffer</strong></p>

<p>By default syslogd writes to <code>/var/log/messages</code> on disk. Switching to a circular buffer stores logs in memory instead. They remain accessible via <code>logread</code>. This removes the ongoing disk writes and the associated page cache overhead:</p>

<pre><code>sed -i 's/SYSLOGD_OPTS="-t"/SYSLOGD_OPTS="-t -C64"/' /etc/conf.d/syslog
</code></pre>

<p><strong>Reduce block device read-ahead</strong></p>

<p>The kernel defaults to 8MB of read-ahead on the block device. On virtual storage this is wasted memory. 128KB is more than sufficient:</p>

<pre><code>echo 128 &gt; /sys/block/vda/queue/read_ahead_kb

cat &gt; /etc/local.d/readahead.start &lt;&lt; 'EOF'
#!/bin/sh
echo 128 &gt; /sys/block/vda/queue/read_ahead_kb
EOF

chmod +x /etc/local.d/readahead.start
rc-update add local default
</code></pre>

<hr />

<h2>Reboot</h2>

<pre><code>reboot
</code></pre>

<hr />

<h2>After</h2>

<pre><code>              total        used        free      shared  buff/cache   available
Mem:             91          23          51           0          17          63
Swap:             0           0           0
</code></pre>

<pre><code>Filesystem      Size      Used Available Use% Mounted on
/dev/vda       953.0M     71.9M    834.1M   8% /
</code></pre>

<p>RAM down from 38MB to 23MB. Disk down from 164.4MB to 71.9MB.</p>

<hr />

<h2>What Is Still Running</h2>

<p>The only userspace processes after boot are <code>syslogd</code> (circular buffer mode), <code>dropbear</code>, and two getty processes: one on <code>ttyS0</code> for serial console access and one on <code>tty1</code> for the browser-based console panel.</p>

<p>The loaded kernel modules are exactly what the system requires: the virtio stack (virtio-blk, virtio-net, virtio-rng), the ext4 filesystem stack (ext4, jbd2, mbcache, crc16), hardware AES acceleration (aesni-intel, ghash-clmulni-intel, gf128mul), rng-core, net-failover, failover, and af-packet for raw socket support.</p>

<p>Notes for tinkerers:</p>

<p>Two kernel threads will appear in <code>ps aux</code> that look surprising: <code>[scsi_eh_0]</code> and <code>[scsi_eh_1]</code>. These are SCSI error handler threads compiled into the virt kernel. They are dormant and cannot be removed without a custom kernel.</p>

<p>Similarly, <code>[watchdogd]</code> persists despite <code>nowatchdog</code> in the cmdline. There is no <code>/dev/watchdog</code> device present and no watchdog module loaded. The thread does nothing.</p>

<hr />

<p>I have done this on the VPS that runs <a href="https://backtogeek.com" rel="nofollow">https://backtogeek.com</a> if you want to have a look as a performance indication, the whole thing runs on the 128mb, 1gb disk, low priority tier (the $0.10 /month $0.000135 /hour one) its a nothing site, just playing with rust to see how compact i can get a bespoke thingy running with tls support, it uses about 25mb in total to run that site, i will finish it one day and release it (open source) as a hackernews clone/micro blog platform</p>

<p>Anyway... hopefully that injects some low-end spirit into you!</p>

<p>More to come, its not meant to be a tierhive promotion, but it's what I have to work on, and it does not get much more low end than tierhive, this should work on pretty much any kvm host, if any hosts want to provide a VPS for me to test future crap on, I am happy to use your links instead!</p>

<p>version on the tierhive blog: <a href="https://tierhive.com/blog/tierhive-howto/how-to-run-alpine-with-just-23mb-ram" rel="nofollow">https://tierhive.com/blog/tierhive-howto/how-to-run-alpine-with-just-23mb-ram</a></p>

<p>Coming soon, similar guide for Debian 13</p>
]]>
        </description>
    </item>
    <item>
        <title>Installing OpenBSD on a KVM VPS via ipxe/VNC console, no template required. (128mb ram, 1GB Disk)</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10697/installing-openbsd-on-a-kvm-vps-via-ipxe-vnc-console-no-template-required-128mb-ram-1gb-disk</link>
        <pubDate>Fri, 27 Mar 2026 19:01:17 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10697@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Ok, I know, I said last time I would not do any more for a while, but a few things that were said in response to the other ones got me thinking more down the OpenBSD route.</p>

<p>So again, armed with a 128mb <a rel="nofollow" href="https://tierhive.com" title="TierHive">TierHive </a>VPS with 1GB disk, I got to work.</p>

<p>This should work on any host that provides an HTML5 VNC console in theory, as long as they have enabled the ability for you to drop into boot options, I think that's pretty standard now?</p>

<p>It's really going to help if your host also supports a clipboard for the html5 console, but not the end of the world if not.</p>

<p>First off, just install any OS to get the VPS set up with the package and specs you want, let it finish setup, I just used the Alpine template as its the only one that allows 128mb and 1GB disk, its a good idea to let this fully finish if you are on other hosts, I know from experience not everyone sets the default disk drivers etc until you actually install an os and you dont wantto be using the ide driver (solusvm)</p>

<p>Then get ready to catch the reboot aand start pressing escape in the html5 vnc console:</p>

<p><img src="https://lowendspirit.com/uploads/editor/64/hl9oqramp5nc.png" alt="bsd vps" title="" /></p>

<p>You will need to catch the ctrl+b option to drop you into the IPXE shell, like the above image shows, if you have DHCP enabled, just type <code>dhcp</code> and press enter; otherwise, you will need to configure your network at this stage, for example:</p>

<pre><code>set net0/ip 192.168.1.123
set net0/netmask 255.255.255.0
set net0/gateway 192.168.1.1
set dns 8.8.8.8
ifopen net0
</code></pre>

<p>The ipxe shell should now have internet access, so we can pull the cd78.iso</p>

<pre><code>sanboot http://cdn.openbsd.org/pub/OpenBSD/7.8/amd64/cd78.iso
</code></pre>

<p><img src="https://lowendspirit.com/uploads/editor/a8/uvbfz13gqsz6.png" alt="bsd vps ipxe install" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/dr/zxq0fhckt9xu.png" alt="bsd vps ipxe install" title="" /></p>

<p>Let that run for a bit, if you dont have dhcp you will need to enter the network details again otherise dhcp will sort that out for you, and you will eventually get to the install options:</p>

<p><img src="https://lowendspirit.com/uploads/editor/jz/nx07u4fk7w3k.png" alt="bsd ipxe install" title="" /></p>

<p>Now select (I)nstall and run through the obvious options for ssh, user password etc, in most cases the defaults are fine but I will assume you have some clue about them if you are even attempting this, I used an auto disk layout for speed.</p>

<p><img src="https://lowendspirit.com/uploads/editor/jg/f3pzabbbb62s.png" alt="bsd ipxe install" title="" /></p>

<p>Select [http] (also the default) for sets.</p>

<p>And when it prompts for an HTTP Server, use <code>cdn.openbsd.org</code></p>

<p><img src="https://lowendspirit.com/uploads/editor/19/dv5nnzspktw5.png" alt="openbsd ipxe install vps" title="" /></p>

<p>Select the sets for a minimal install, deselect everything that is not needed:</p>

<pre><code>-comp78.tgz -man78.tgz -game78.tgz -xbase78.tgz -xserv78.tgz -xshare78.tgz -xfont78.tgz -bsd.rd
</code></pre>

<p><img src="https://lowendspirit.com/uploads/editor/rz/6svoshetb3g4.png" alt="openbsd ipxe install vps" title="" /><br />
<img src="https://lowendspirit.com/uploads/editor/i3/04f8eg86lydm.png" alt="openbsd ipxe install vps" title="" /></p>

<p>You will see a prompt about the prefetch area; the default is no, type <code>yes</code></p>

<p><img src="https://lowendspirit.com/uploads/editor/vi/ds56dm3r1c1u.png" alt="openbsd ipxe kvm vps install" title="" /></p>

<p>Now its going to pull the sets and then ask you if you want any more sets, the default [done] option is fine.</p>

<p><img src="https://lowendspirit.com/uploads/editor/fk/yxtumbnvaj0n.png" alt="hi wss" title="" /></p>

<p>The install will finish up, you will see a load of warnings about /mnt file system is full, it's fine, just run <code>syspatch</code> after first boot a few times, you can now reboot, and enjoy <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/6r/qqdacebbk9es.png" alt="Hi Not_Oles" title="" /></p>

<pre><code>Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

testbsd# syspatch
Get/Verify syspatch78-001_syspatc... 100% |***************************************************************************************************|  8538       00:00    
Installing patch 001_syspatch
syspatch: updated itself, run it again to install missing patches
testbsd# syspatch 
Get/Verify syspatch78-003_unbound... 100% |***************************************************************************************************|  2952 KB    00:00    
Installing patch 003_unbound
Get/Verify syspatch78-004_libssl.tgz 100% |***************************************************************************************************|  2553 KB    00:00    
Installing patch 004_libssl
Get/Verify syspatch78-005_smtpd.tgz 100% |****************************************************************************************************|   218 KB    00:00    
Installing patch 005_smtpd
Get/Verify syspatch78-006_libunwi... 100% |***************************************************************************************************|  1669 KB    00:00    
Installing patch 006_libunwind
Get/Verify syspatch78-010_unbound... 100% |***************************************************************************************************|  2953 KB    00:00    
Installing patch 010_unbound
Get/Verify syspatch78-012_rpki.tgz 100% |*****************************************************************************************************|   141 KB    00:00    
Installing patch 012_rpki
Get/Verify syspatch78-013_httpd.tgz 100% |****************************************************************************************************| 79409       00:00    
Installing patch 013_httpd
Get/Verify syspatch78-014_expat.tgz 100% |****************************************************************************************************|   685 KB    00:00    
Installing patch 014_expat
Get/Verify syspatch78-015_tmppath... 100% |***************************************************************************************************|  1135 KB    00:00    
Installing patch 015_tmppath
Get/Verify syspatch78-017_tmppath... 100% |***************************************************************************************************| 79182       00:00    
Installing patch 017_tmppath
Get/Verify syspatch78-021_calenda... 100% |***************************************************************************************************| 14278       00:00    
Installing patch 021_calendar
Get/Verify syspatch78-023_calenda... 100% |***************************************************************************************************| 14646       00:00    
Installing patch 023_calendar
Get/Verify syspatch78-024_expat.tgz 100% |****************************************************************************************************|   683 KB    00:00    
Installing patch 024_expat
Get/Verify syspatch78-026_smtpd.tgz 100% |****************************************************************************************************|   310 KB    00:00    
Installing patch 026_smtpd
Errata can be reviewed under /var/syspatch
</code></pre>

<p>Fresh install, nothing changed yet.</p>

<pre><code>Memory: Real: 21M/88M act/tot Free: 3936K Cache: 13M Swap: 3272K/17M
</code></pre>

<pre><code>Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a      975M    634M    292M    69%    /
</code></pre>

<pre><code>USER       PID %CPU %MEM   VSZ   RSS TT  STAT   STARTED       TIME COMMAND
root         1  0.0  0.3   944   376 ??  I       2:03PM    0:00.01 /sbin/init
root     25349  0.0  0.0  1108    24 ??  Ip      2:03PM    0:00.01 /sbin/slaacd
_slaacd  29575  0.0  0.1  1116   112 ??  Ip      2:03PM    0:00.01 slaacd: engi
_slaacd  82864  0.0  0.1  1112    96 ??  IpU     2:03PM    0:00.02 slaacd: fron
root     99250  0.0  0.0  1120    24 ??  IU      2:03PM    0:00.00 /sbin/dhcple
_dhcp    56878  0.0  0.5  1132   596 ??  Ip      2:03PM    0:00.01 dhcpleased:
_dhcp    40899  0.0  0.6  1140   688 ??  IpU     2:03PM    0:00.01 dhcpleased:
root     33511  0.0  0.0   832    24 ??  IpU     2:03PM    0:00.01 /sbin/resolvd
root     18053  0.0  1.6  1048  1836 ??  IpU     2:04PM    0:00.01 syslogd: [pr
_syslogd 75114  0.0  1.4  1492  1632 ??  Spc     2:04PM    0:00.04 /usr/sbin/sy
root     13046  0.0  0.7   976   760 ??  IU      2:04PM    0:00.00 pflogd: [pri
_pflogd  85025  0.0  0.8  1016   904 ??  Ipc     2:04PM    0:00.00 pflogd: [run
_ntp     68896  0.0  2.0  1176  2324 ??  S&lt;pc    2:04PM    0:00.16 ntpd: ntp en
_ntp     79900  0.0  1.6  1128  1856 ??  Ip      2:04PM    0:00.01 ntpd: dns en
root     89475  0.0  1.5  1756  1676 ??  I&lt;pU    2:04PM    0:00.01 /usr/sbin/nt
root      4509  0.1  2.5  1100  2848 ??  S       2:04PM    0:00.07 sshd: /usr/s
root      3013  0.0  1.6  1816  1864 ??  Ip      2:04PM    0:00.01 /usr/sbin/sm
_smtpd   85973  0.0  2.0  1552  2240 ??  Ipc     2:04PM    0:00.00 smtpd: crypt
_smtpd   42320  0.0  2.2  1876  2516 ??  Ipc     2:04PM    0:00.01 smtpd: contr
_smtpd   39534  0.0  2.6  1652  2952 ??  Ip      2:04PM    0:00.01 smtpd: looku
_smtpd   39115  0.0  4.1  2384  4680 ??  Ipc     2:04PM    0:00.01 smtpd: dispa
_smtpq   64001  0.0  2.9  1776  3296 ??  Ipc     2:04PM    0:00.01 smtpd: queue
_smtpd   12214  0.0  2.8  1556  3164 ??  Ipc     2:04PM    0:00.01 smtpd: sched
_sndiop  81722  0.0  0.8  9060   932 ??  IpU     2:04PM    0:00.00 sndiod: help
_sndio   52312  0.0  0.7  9060   828 ??  I&lt;pc    2:04PM    0:00.00 /usr/bin/snd
root     45289  0.0  1.2  1136  1400 ??  Ip      2:05PM    0:00.01 /usr/sbin/cr
</code></pre>

<p>Services enabled at boot:</p>

<pre><code>check_quotas
cron
dhcpleased
library_aslr
ntpd
pf
pflogd
resolvd
slaacd
smtpd
sndiod
sshd
syslogd
</code></pre>

<p>I am sure someone that is more of a regular BSD user will probably know a few things that could improve this. I encourage you to comment.</p>

<p>And.... you can probably guess what is coming next....</p>

<p>AI Declaration: There was <strong>no</strong> AI involved in this; the work is my own. I did not even bother using it for formatting, as this was a speed run; you can just live with my shitty English spelling and grammar</p>

<p>Enjoy!</p>
]]>
        </description>
    </item>
    <item>
        <title>Debian 13, minimum ram and disk, 38mb - Guide - Part 1 (running nothing)</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10684/debian-13-minimum-ram-and-disk-38mb-guide-part-1-running-nothing</link>
        <pubDate>Tue, 24 Mar 2026 13:05:16 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10684@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Took longer than expected, but here we are, the minimal Debian 13 guide, without recompiling the kernel and on a 256mb TierHive VPS the kernel eats 44mb as standard in the daily Debian 13 cloud image and will also require an additional 88mb of userspace memory, so thats 132MB this is what we are targeting and this is why you don't get away with 128mb as standard.</p>

<p>AI USE Declaration: md formatting, spelling, grammar done with Claude, the work and methods is my own.</p>

<h1>Minimising Debian 13 on a KVM VPS</h1>

<p>This guide documents how to strip a freshly deployed Debian 13 (trixie) VPS down to the minimum RAM and disk footprint without breaking it.</p>

<p>This targets KVM-based VPS instances with a virtio-blk disk (<code>/dev/vda</code>), a single network interface with a static IP assigned at deployment, and BIOS boot. The instance is a NAT VPS: SSH is exposed on a forwarded external port, not directly on port 22. Adjust the port forwarding in your provider portal where noted if you use NAT or just use your external IP and port 22 if a fixed IP is assigned.</p>

<hr />

<h2>Before</h2>

<p>Fresh deploy, cloud-init has run, nothing changed yet.</p>

<pre><code>               total        used        free      shared  buff/cache   available
Mem:             213          88          27           0         108         124
Swap:              0           0           0
</code></pre>

<pre><code>Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       2.8G  832M  1.8G  32% /
</code></pre>

<hr />

<h2>Note your network details before starting</h2>

<p>Stage 5 replaces systemd-networkd with a static <code>/etc/network/interfaces</code> file. old school debain style, before making any changes, record your interface name, IP address, and gateway. You will need them later.</p>

<pre><code>ip a
ip route show
</code></pre>

<p>On TierHive the interface is <code>ens3</code>, this may vary (but probably not) The IP and gateway are shown in the VPS control panel and in the output above. Note them down before proceeding.</p>

<hr />

<h2>Stage 1: GRUB Cmdline</h2>

<p>Reduce the boot timeout (Because why not) and add kernel parameters to cut memory overhead.</p>

<pre><code>sed -i 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=1/' /etc/default/grub
sed -i 's|^GRUB_DISTRIBUTOR=.*|GRUB_DISTRIBUTOR=Debian|' /etc/default/grub
sed -i 's|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX="mitigations=off console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 ipv6.disable=1 audit=0 nowatchdog"|' /etc/default/grub
update-grub
</code></pre>

<p>The <code>GRUB_DISTRIBUTOR</code> line is changed from a shell call to <code>lsb_release</code> to a static string. The <code>lsb-release</code> package is removed later; leaving the shell call in place would cause <code>update-grub</code> to fail after that point.</p>

<p>Remove the GRUB locale files. They exist to translate GRUB menu entries. On a headless server booting via serial console, you can live without them:</p>

<pre><code>rm -rf /boot/grub/locale
</code></pre>

<p>The details on the parameters added to <code>GRUB_CMDLINE_LINUX</code>:</p>

<ul>
<li><code>mitigations=off</code> disables all Spectre and Meltdown mitigations. On a single-user VPS where you control all running code, these protect against nobody as VM-to-VM isolation is handled by the hypervisor. This eliminates the overhead of PTI (page table isolation on every syscall), IBRS, IBPB, and several other mitigations <strong>Skip this if you run untrusted code.</strong></li>
<li><code>ipv6.disable=1</code> disables IPv6 at kernel level. This is a NAT VPS with an IPv4 address only. Skip this if you use IPv6 or are <a href="https://lowendspirit.com/index.php?p=/profile/yoursunny" rel="nofollow">@yoursunny</a></li>
<li><code>audit=0</code> disables the Linux audit subsystem. you can live without it.</li>
<li><code>nowatchdog</code> disables the softlockup and hardlockup detectors.</li>
</ul>

<hr />

<h2>Stage 2: Replace OpenSSH with Dropbear</h2>

<p>Dropbear is a minimal SSH server designed for low-resource systems. It is significantly smaller than OpenSSH and links against far fewer libraries. On a NAT VPS with a single exposed port, the switch must be done atomically: stop sshd and start dropbear in one command or you will lose access, you might anyway, but should be able to get back in fine after.</p>

<pre><code>DEBIAN_FRONTEND=noninteractive apt-get install -y dropbear
</code></pre>

<p>Dropbear is now installed but cannot start because OpenSSH holds port 22. Set the empty extra-args variable to suppress a harmless boot warning:</p>

<pre><code>sed -i 's/#DROPBEAR_EXTRA_ARGS=""/DROPBEAR_EXTRA_ARGS=""/' /etc/default/dropbear
</code></pre>

<p>Now do the atomic swap. Debian 13 uses socket activation for SSH stopping <code>ssh.service</code> alone does not release port 22 because <code>ssh.socket</code> continues to hold it. Both must be stopped together:</p>

<pre><code>systemctl stop ssh.socket ssh &amp;&amp; systemctl start dropbear &amp;&amp; systemctl disable ssh ssh.socket
</code></pre>

<p>Your session will drop. Reconnect on the same external port as before. Dropbear converts and reuses the existing OpenSSH host keys, so the host fingerprint is unchanged.</p>

<p>Once reconnected, remove OpenSSH:</p>

<pre><code>DEBIAN_FRONTEND=noninteractive apt-get purge -y \
    openssh-server openssh-sftp-server openssh-client ssh-import-id
apt-get autoremove -y --purge
</code></pre>

<hr />

<h2>Stage 3: Remove Cloud-Init and Python</h2>

<p>Cloud-init runs once at first boot to configure the instance. It has already run. It pulls in Python 3 and approximately 40 Python packages. All of it can be removed.</p>

<p>First disable the unattended-upgrades service and its associated timers, which also depend on Python:</p>

<pre><code>systemctl stop unattended-upgrades
systemctl disable unattended-upgrades apt-daily.timer apt-daily-upgrade.timer apt-listchanges.timer man-db.timer dpkg-db-backup.timer
</code></pre>

<p>Remove cloud-init, its utilities, unattended-upgrades, and netplan. Netplan was used by cloud-init to generate the systemd-networkd configuration. The generated network config file persists after netplan is removed and will be used again in Stage 5:</p>

<pre><code>DEBIAN_FRONTEND=noninteractive apt-get purge -y cloud-init cloud-guest-utils cloud-image-utils cloud-utils cloud-initramfs-growroot unattended-upgrades apt-listchanges  netplan.io python3-netplan reportbug

DEBIAN_FRONTEND=noninteractive apt-get purge -y $(dpkg -l | grep '^ii' | awk '{print $2}' | grep -E '^(python3|python-apt-common|libpython3)')

apt-get autoremove -y --purge
</code></pre>

<blockquote><div>
  <p>Removing <code>cloud-initramfs-growroot</code> triggers an automatic <code>update-initramfs</code> run via the package post-remove hook. This is expected. The initramfs will be rebuilt again with optimised settings in Stage 7.</p>
</div></blockquote>

<p>Remove the cloud-init data directory, which persists after the package is removed:</p>

<pre><code>rm -rf /var/lib/cloud
</code></pre>

<hr />

<h2>Stage 4: Package Cleanup</h2>

<p>Remove packages that serve no purpose on a running headless VPS:</p>

<pre><code>DEBIAN_FRONTEND=noninteractive apt-get purge -y vim vim-runtime vim-tiny man-db groff-base manpages locales libc-l10n sudo qemu-guest-agent qemu-utils polkitd pciutils bind9-host traceroute socat wget ethtool screen apparmor lsb-release

apt-get autoremove -y --purge
apt-get clean
</code></pre>

<p>The autoremove step may remove <code>procps</code> as an orphaned dependency. Reinstall it explicitly. <code>ps</code>, <code>free</code>, and <code>kill</code> are probably wanted even when cut to the bone.</p>

<pre><code>apt-get install -y procps
</code></pre>

<p><strong>Configure dpkg to suppress docs and man pages on future installs.</strong> Without this, any subsequent <code>apt-get install</code> will reinstall them:</p>

<pre><code>cat &gt; /etc/dpkg/dpkg.cfg.d/nodoc &lt;&lt; 'EOF'
path-exclude=/usr/share/doc/*
path-include=/usr/share/doc/*/copyright
path-exclude=/usr/share/man/*
path-exclude=/usr/share/groff/*
path-exclude=/usr/share/info/*
path-exclude=/usr/share/lintian/*
EOF
</code></pre>

<p>Remove the doc and man page files already installed by previous packages:</p>

<pre><code>find /usr/share/doc -depth -type f ! -name 'copyright' -delete
find /usr/share/doc -depth -empty -type d -delete
rm -rf /usr/share/man /usr/share/groff /usr/share/info /usr/share/lintian
</code></pre>

<p>Remove non-English locale files. The <code>locales</code> package was removed above, but locale data installed by glibc and other packages remains. Only the <code>en_US</code> directory is kept:</p>

<pre><code>find /usr/share/locale -mindepth 1 -maxdepth 1 -type d ! -name 'en_US' -exec rm -rf {} +
find /usr/share/locale -mindepth 1 -maxdepth 1 ! -type d -delete
</code></pre>

<p>Remove all timezone data except UTC. The system clock is set to UTC at deployment and the hypervisor maintains it:</p>

<pre><code>find /usr/share/zoneinfo -mindepth 1 -maxdepth 1 ! -name 'Etc' -exec rm -rf {} +
find /usr/share/zoneinfo/Etc -mindepth 1 ! -name 'UTC' -delete
</code></pre>

<p>Remove the <code>deb-src</code> lines from the apt sources file. Source package lists are never needed on a production server and regenerate as 55MB on every <code>apt-get update</code> if left in place:</p>

<pre><code>sed -i 's/^Types: deb deb-src/Types: deb/' /etc/apt/sources.list.d/debian.sources
</code></pre>

<hr />

<h2>Stage 5: Replace systemd-networkd with ifupdown</h2>

<p>systemd-networkd runs as a persistent daemon consuming approximately 11MB of RAM. For a server with a static IP that never changes, a traditional <code>/etc/network/interfaces</code> file managed by the lightweight <code>ifupdown</code> package is sufficient and leaves no daemon running after the interface is up.</p>

<p><strong>Fix DNS before removing systemd-resolved.</strong> The current <code>/etc/resolv.conf</code> is a symlink to the resolved stub. Replace it with a static file first:</p>

<pre><code>rm /etc/resolv.conf
printf 'nameserver 1.1.1.1\nnameserver 1.0.0.1\n' &gt; /etc/resolv.conf
</code></pre>

<p>Remove the <code>resolve</code> NSS module reference from <code>/etc/nsswitch.conf</code>, then remove the package:</p>

<pre><code>sed -i 's/resolve \[!UNAVAIL=return\] //g' /etc/nsswitch.conf
sed -i 's/ resolve//g' /etc/nsswitch.conf
systemctl stop systemd-resolved
DEBIAN_FRONTEND=noninteractive apt-get purge -y systemd-resolved libnss-resolve
</code></pre>

<p>Install ifupdown. It pulls in <code>dhcpcd-base</code> as a dependency; remove it immediately since the IP is static:</p>

<pre><code>DEBIAN_FRONTEND=noninteractive apt-get install -y ifupdown
DEBIAN_FRONTEND=noninteractive apt-get purge -y dhcpcd-base
</code></pre>

<p>Write the network configuration. Replace the address and gateway with the values you recorded before starting:</p>

<pre><code>cat &gt; /etc/network/interfaces &lt;&lt; 'EOF'
auto lo
iface lo inet loopback

auto ens3
iface ens3 inet static
    address YOUR_IP/24
    gateway YOUR_GATEWAY
EOF
</code></pre>

<blockquote><div>
  <p>The interface name on TierHive KVM instances is <code>ens3</code>. If yours differs, use the name shown by <code>ip a</code>. The subnet prefix <code>/24</code> is standard for TierHive instances; adjust if your allocation differs on your host.</p>
</div></blockquote>

<p>Disable and mask systemd-networkd, then remove the network configuration directory it managed:</p>

<pre><code>systemctl disable systemd-networkd systemd-networkd.socket systemd-network-generator.service systemctl mask systemd-networkd systemd-networkd.socket systemctl mask systemd-networkd-wait-online.service
rm -rf /etc/systemd/network/
</code></pre>

<p>ifupdown's <code>networking.service</code> was enabled automatically when the package was installed. It is a oneshot service that brings up interfaces at boot and exits, leaving no daemon.</p>

<hr />

<h2>Stage 6: Service Cleanup</h2>

<p><strong>Disable systemd-timesyncd.</strong> On KVM the guest clock is disciplined by the hypervisor via <code>kvm-clock</code>. The hypervisor keeps the clock accurate and timesyncd adds no value:</p>

<pre><code>systemctl disable --now systemd-timesyncd
</code></pre>

<p>Mask kernel debug and config filesystems, EFI pstore, binfmt_misc, and timers that have no purpose on a headless VPS:</p>

<pre><code>systemctl mask sys-kernel-config.mount
systemctl mask sys-kernel-debug.mount
systemctl mask sys-kernel-tracing.mount
systemctl mask systemd-pstore.service
systemctl mask proc-sys-fs-binfmt_misc.automount
systemctl mask proc-sys-fs-binfmt_misc.mount
systemctl disable fstrim.timer
systemctl mask uuidd.socket
systemctl disable e2scrub_reap.service e2scrub_all.timer
</code></pre>

<ul>
<li><code>sys-kernel-config.mount</code> — configfs for USB gadgets and iSCSI</li>
<li><code>sys-kernel-debug.mount</code> / <code>sys-kernel-tracing.mount</code> — kernel debug filesystems</li>
<li><code>systemd-pstore.service</code> — EFI pstore crash dump collection; the <code>efi_pstore</code> module is blacklisted in Stage 7</li>
<li><code>proc-sys-fs-binfmt_misc</code> — binary format handlers for Wine, Java, etc.</li>
<li><code>fstrim.timer</code> — TRIM does not pass through virtual storage</li>
<li><code>uuidd.socket</code> — UUID daemon, not needed</li>
<li><code>e2scrub</code> — online ext4 filesystem checks, not needed on a VPS</li>
</ul>

<p><strong>Remove PAM session tracking.</strong> The <code>pam_systemd.so</code> module registers each login session with systemd-logind via dbus. On a root-only dropbear server there is no use for session tracking. Without this change, every SSH login activates dbus, which then auto-activates logind:</p>

<pre><code>sed -i '/pam_systemd\.so/s/^/# /' /etc/pam.d/common-session
</code></pre>

<p><strong>Mask systemd-logind.</strong> Logind is wired into <code>multi-user.target</code> by the systemd package and starts at every boot. It manages user seats and sessions, neither of which exist on a headless server:</p>

<pre><code>systemctl mask systemd-logind.service
</code></pre>

<p><strong>Provide clean reboot and poweroff commands.</strong> Masking logind causes the standard <code>reboot</code> binary to print errors when it attempts to notify logind via dbus before falling back to systemd's private socket. The reboot succeeds either way, but the errors are avoidable. Replace the commands with wrappers that go directly to systemd:</p>

<pre><code>cat &gt; /usr/local/sbin/reboot &lt;&lt; 'EOF'
#!/bin/sh
exec systemctl reboot --no-wall 2&gt;/dev/null
EOF
chmod +x /usr/local/sbin/reboot

cat &gt; /usr/local/sbin/poweroff &lt;&lt; 'EOF'
#!/bin/sh
exec systemctl poweroff --no-wall 2&gt;/dev/null
EOF
chmod +x /usr/local/sbin/poweroff
</code></pre>

<hr />

<h2>Stage 7: Kernel Module Blacklist and Initramfs</h2>

<p>Set the explicit module list and switch the initramfs from <code>most</code> (load everything) to <code>dep</code> (load only what this hardware needs). The three lines below are a safety net: with <code>MODULES=dep</code>, <code>update-initramfs</code> scans running modules and their dependencies, so virtio_blk and ext4 would be detected automatically. The explicit list ensures they are included even if detection misses them:</p>

<pre><code>cat &gt; /etc/initramfs-tools/modules &lt;&lt; 'EOF'
virtio_blk
virtio_net
ext4
EOF

sed -i 's/^MODULES=most/MODULES=dep/' /etc/initramfs-tools/initramfs.conf
</code></pre>

<p>Create the module blacklist:</p>

<pre><code>cat &gt; /etc/modprobe.d/blacklist-vps.conf &lt;&lt; 'EOF'
# CD/ISO (no optical drive on VPS)
blacklist isofs
blacklist sr_mod
blacklist cdrom

# KVM (not nesting VMs)
blacklist kvm_intel
blacklist kvm
install kvm /bin/true
install kvm_intel /bin/true

# Memory ballooning
blacklist virtio_balloon

# ATA/IDE (using virtio-blk, not ATA)
blacklist ata_piix
blacklist ata_generic
blacklist libata

# Input devices (headless)
blacklist evdev
blacklist button
blacklist serio_raw

# VMware VSOCK stack (not VMware)
blacklist vmw_vmci
blacklist vmw_vsock_vmci_transport
blacklist vmw_vsock_virtio_transport_common
blacklist vsock_loopback
blacklist vsock
install vsock /bin/true

# QEMU firmware config (already booted)
blacklist qemu_fw_cfg

# SCSI generic (no SCSI devices)
blacklist sg

# i6300ESB watchdog
blacklist i6300esb

# Intel RAPL power management (not needed on VPS)
blacklist intel_rapl_msr
blacklist intel_rapl_common
blacklist iosf_mbi
blacklist rapl

# EFI pstore (crash dump storage in EFI vars, not needed)
blacklist efi_pstore

# Binary format handlers (Wine, Java, etc)
blacklist binfmt_misc

# Automount
blacklist autofs4

# Watchdog hardware driver
blacklist watchdog

# configfs (USB gadgets, iSCSI config filesystem)
blacklist configfs
install configfs /bin/true

# T10 DIF SCSI data integrity (no SCSI on this VPS)
blacklist crct10dif_pclmul
EOF
</code></pre>

<p>Rebuild the initramfs once with all of the above in place:</p>

<pre><code>update-initramfs -u -k all
</code></pre>

<hr />

<h2>Stage 8: System Tuning</h2>

<p><strong>Sysctl tuning.</strong> The file is named <code>90-</code> to ensure it loads after systemd's <code>/usr/lib/sysctl.d/50-pid-max.conf</code>, which sets <code>kernel.pid_max = 4194304</code>. A file with a lower prefix would be overridden by it:</p>

<pre><code>mkdir -p /etc/sysctl.d
cat &gt; /etc/sysctl.d/90-minvps.conf &lt;&lt; 'EOF'
# Reduce network socket buffers
net.core.rmem_default = 32768
net.core.wmem_default = 32768
net.core.rmem_max = 131072
net.core.wmem_max = 131072
net.core.netdev_max_backlog = 64
net.core.somaxconn = 128

# Reclaim inode and dentry caches more aggressively under memory pressure
vm.vfs_cache_pressure = 500

# Reduce PID table overhead
kernel.pid_max = 4096

# Dirty page writeback thresholds
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

# Disable watchdog
kernel.watchdog = 0
EOF
</code></pre>

<p><strong>Reduce block device read-ahead.</strong> The kernel defaults to 8MB of read-ahead on the block device. On virtual storage this is wasted memory. 128KB is sufficient as it only needs to exist, it does nothing this is a legacy thing from days gone by that still exists for physical spinners I guess but it holds some Ram.</p>

<pre><code>echo 128 &gt; /sys/block/vda/queue/read_ahead_kb

cat &gt; /etc/systemd/system/readahead.service &lt;&lt; 'EOF'
[Unit]
Description=Set block device read-ahead
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo 128 &gt; /sys/block/vda/queue/read_ahead_kb'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

systemctl enable readahead.service
</code></pre>

<p><strong>Replace systemd-journald with busybox syslogd.</strong> journald runs as a persistent 8MB process. Busybox syslogd with a 64KB in-memory circular buffer does the same job for a minimal server at a fraction of the cost. Logs are accessed with <code>busybox logread</code>:</p>

<pre><code>DEBIAN_FRONTEND=noninteractive apt-get install -y busybox

cat &gt; /etc/systemd/system/syslogd.service &lt;&lt; 'EOF'
[Unit]
Description=Busybox syslogd
DefaultDependencies=false
After=systemd-tmpfiles-setup.service
Before=sysinit.target

[Service]
Type=simple
ExecStart=/bin/busybox syslogd -n -C64
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl enable syslogd.service

systemctl mask systemd-journald.service
systemctl mask systemd-journald.socket
systemctl mask systemd-journald-dev-log.socket
systemctl mask systemd-journald-audit.socket 2&gt;/dev/null
</code></pre>

<blockquote><div>
  <p><code>journalctl</code> no longer works after this step. Use <code>busybox logread</code> to view logs and <code>busybox logread -f</code> to follow them. <code>systemctl status</code> continues to work for checking individual service states as it uses systemd's own data, not the journal.</p>
</div></blockquote>

<hr />

<h2>Final Cleanup</h2>

<p>All package operations are now complete. Clear the apt package lists and cache binaries. They consume around 150MB and are not needed until the next time packages are installed, at which point <code>apt-get update</code> will regenerate them:</p>

<pre><code>rm -rf /var/lib/apt/lists/* /var/cache/apt/*.bin
apt-get clean
</code></pre>

<hr />

<h2>Reboot</h2>

<pre><code>reboot
</code></pre>

<hr />

<h2>After</h2>

<pre><code>               total        used        free      shared  buff/cache   available
Mem:             213          38         141           0          41         174
Swap:              0           0           0
</code></pre>

<pre><code>Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       2.8G  275M  2.4G  11% /
</code></pre>

<p>RAM down from 88MB to 38MB. Disk down from 832MB to 275MB, meaning total ram use for kernel and userspace is 82mb so this now fits into 128mb ram, if your provider supports that, you can now downgrade and save some money <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> but realistically, if you want to run web based services, you will probably want to stay on 256mb</p>

<hr />

<h2>What Is Still Running</h2>

<p>The running userspace processes after boot are systemd (PID 1, 13MB), systemd-udevd (9.5MB), dbus-daemon (2MB), busybox syslogd in circular buffer mode (2MB), dropbear (3MB), and two getty processes: one on ttyS0 for serial console access and one on tty1 for the browser-based console panel.</p>

<p><code>dbus-daemon</code> starts at boot via socket activation and runs persistently. The PAM change in Stage 6 prevents SSH logins from activating systemd-logind through it, but dbus itself is socket-activated early in the boot sequence and stays running.</p>

<p>The loaded kernel modules after reboot are: the virtio stack (<code>virtio_blk</code>, <code>virtio_net</code>, <code>virtio_rng</code>), the EFI partition (<code>vfat</code>, <code>fat</code>, <code>nls_ascii</code>, <code>nls_cp437</code>), hardware AES acceleration (<code>aesni_intel</code>, <code>gf128mul</code>, <code>crypto_simd</code>, <code>cryptd</code>, <code>ghash_clmulni_intel</code>), SHA acceleration (<code>sha256_ssse3</code>, <code>sha512_ssse3</code>, <code>sha1_ssse3</code>), CRC (<code>crc32c_intel</code>, <code>crc32_pclmul</code>), netfilter (<code>ip_tables</code>, <code>x_tables</code>, <code>nfnetlink</code>), and network failover (<code>net_failover</code>, <code>failover</code>).</p>

<p>Also posted on the tierhive blog: <a href="https://tierhive.com/blog/tierhive-howto/debian-13-minimal-guide-reduce-ram-to-38mb-and-disk-to-275mb" rel="nofollow">https://tierhive.com/blog/tierhive-howto/debian-13-minimal-guide-reduce-ram-to-38mb-and-disk-to-275mb</a></p>

<p>I will add making WordPress fit in this VPS guide next.</p>
]]>
        </description>
    </item>
    <item>
        <title>Alpine minimal remote desktop on a 128mb VPS - Guide</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10658/alpine-minimal-remote-desktop-on-a-128mb-vps-guide</link>
        <pubDate>Wed, 18 Mar 2026 18:12:14 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10658@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>The guide no one asked for an no one wanted is finally here! follow up from <a href="https://lowendspirit.com/discussion/10647/alpine-linux-3-23-23mb-ram-71mb-disk-guide" rel="nofollow">https://lowendspirit.com/discussion/10647/alpine-linux-3-23-23mb-ram-71mb-disk-guide</a></p>

<h1>Adding a Remote Desktop to Alpine 3.23 (128MB tier)</h1>

<p>This guide adds a functional graphical desktop to the minimised Alpine 3.23 system built in the previous guide. Every command has been run on a real instance and the results recorded.</p>

<p><strong>This guide assumes the minimised Alpine 3.23 base from the previous guide.</strong> <a href="https://tierhive.com/blog/tierhive-howto/how-to-run-alpine-with-just-23mb-ram" rel="nofollow">https://tierhive.com/blog/tierhive-howto/how-to-run-alpine-with-just-23mb-ram</a> Starting from a stock Alpine install may produce different results.</p>

<p><strong>Minimum RAM: 128MB.</strong> The desktop stack consumes around 58MB with a session active.</p>

<hr />

<h2>Before</h2>

<p>End state of the minimisation guide, nothing changed yet.</p>

<pre><code>              total        used        free      shared  buff/cache   available
Mem:             91          23          51           0          17          62
Swap:             0           0           0
</code></pre>

<pre><code>Filesystem      Size      Used Available Use% Mounted on
/dev/vda       953.0M     71.9M    834.1M   8% /
</code></pre>

<hr />

<h2>Choices made</h2>

<p><strong>Remote access: XRDP.</strong> RDP is natively supported by Windows, and available on Linux via Remmina and FreeRDP. No client software to install on Windows machines. The session persists when you disconnect. Reconnect and your desktop is exactly as you left it.</p>

<p><strong>Window manager: WindowMaker.</strong> Extensive testing against IceWM, FVWM, Openbox and others showed WindowMaker to have the cleanest dependency chain on Alpine. It uses its own WINGs toolkit and pulls in no GTK, no Python, no audio stack, no video codec libraries.</p>

<p><strong>Terminal: st.</strong> A minimal X terminal with no dependencies beyond the X libraries already present.</p>

<p><strong>Browser: dillo.</strong> Lightweight graphical browser with TLS support built against mbedTLS.</p>

<p><strong>Text editor: nedit.</strong> Graphical editor using the Motif toolkit. Two packages added.</p>

<p><strong>File manager: xfe.</strong> Dual-pane graphical file manager using the FOX toolkit. Four packages added. Midnight Commander (<code>mc</code>) is also installed for terminal use.</p>

<p><strong>Mail: neomutt.</strong> No graphical mail client in the Alpine repositories has an acceptable dependency chain.</p>

<p><strong>IRC: weechat.</strong> Terminal IRC client. Seven packages added.</p>

<p><strong>Image viewer: feh.</strong> Lightweight image viewer that also handles wallpaper. Pulls in imlib2 and associated codec libraries as dependencies.</p>

<p><strong>PDF viewer: mupdf.</strong> Minimal PDF viewer written in C.</p>

<p><strong>System utilities: htop, fastfetch, scrot, xcalc.</strong> htop and xcalc add one package each. scrot for screenshots. fastfetch for system information.</p>

<hr />

<h2>A note on Mesa</h2>

<p>Installing <code>xorg-server</code> on Alpine 3.23 pulls in the full Mesa stack including LLVM. This adds approximately 250MB to disk. It is a hard dependency of the Alpine xorg-server package. It cannot be removed without removing Xorg itself. On a 1GB disk this is going to be a pain, but it is what it is.</p>

<hr />

<h2>Step 1: Install the desktop stack</h2>

<p>The minimisation guide removed OpenSSH and its dependencies, including OpenSSL. The xrdp post-install script uses the <code>openssl</code> CLI to generate its RSA key pair. Install it first, remove it after.</p>

<blockquote><div>
  <p><code>xorgxrdp</code> does not pull in <code>xorg-server</code> as a dependency on Alpine. Install it explicitly or Xorg will not be present and sessions will fail to start.</p>
</div></blockquote>

<pre><code>apk add openssl
apk add xrdp xorgxrdp xorg-server windowmaker st dillo-mbedtls font-misc-misc font-dejavu neomutt xmessage fastfetch nedit xfe xcalc htop mupdf feh scrot mc weechat dillo-mbedtls
apk del openssl
</code></pre>

<p>Total added: 220 packages, approximately 410MB of disk. The big cost is LLVM (Mesa software renderer).</p>

<hr />

<h2>Step 2: Configure xrdp</h2>

<p><strong>Set the colour depth.</strong> The Alpine xrdp package defaults to 16bpp. Modern RDP clients request 32bpp and use the GFX protocol for dynamic resizing. With 16bpp the GFX protocol is rejected and dynamic resizing fails and you really want this.</p>

<pre><code>sed -i 's/max_bpp=16/max_bpp=32/' /etc/xrdp/xrdp.ini
</code></pre>

<p><strong>Set the session limit.</strong> The default allows 50 simultaneous sessions. On a single-user 128MB VPS this is stupid and the number should reflect reality:</p>

<pre><code>sed -i 's/MaxSessions=50/MaxSessions=1/' /etc/xrdp/sesman.ini
</code></pre>

<p><code>KillDisconnected</code> defaults to <code>false</code>. Sessions survive disconnection and resume when you reconnect. No change needed.</p>

<p><strong>Fix the session startup script.</strong> On Alpine, xrdp's <code>startwm.sh</code> detects the distro and falls through to <code>/etc/X11/xinit/xinitrc</code>. This does not read <code>~/.xsession</code>. Replace the script entirely:</p>

<pre><code>cat &gt; /etc/xrdp/startwm.sh &lt;&lt; 'EOF'
#!/bin/sh
mkdir -p /root/GNUstep/Defaults
[ -f /root/GNUstep/Defaults/WindowMaker ] || printf '{\n}\n' &gt; /root/GNUstep/Defaults/WindowMaker
printf '"%s"\n' '/root/GNUstep/Library/WindowMaker/menu' &gt; /root/GNUstep/Defaults/WMRootMenu
exec wmaker
EOF
chmod +x /etc/xrdp/startwm.sh
</code></pre>

<blockquote><div>
  <p>When <code>~/GNUstep/Defaults/WindowMaker</code> does not exist, WindowMaker treats the session as a first run and calls <code>wmmenugen</code> to build a menu from XDG <code>.desktop</code> files in <code>/usr/share/applications/</code>, overwriting <code>WMRootMenu</code> before displaying anything. Creating an empty prefs file prevents this. <code>WMRootMenu</code> must contain a quoted proplist string pointing to the text-format menu file, not inline proplist content, which breaks on menu labels containing spaces.</p>
</div></blockquote>

<p><strong>Set a root password.</strong> if you have not already done that i.e. maybe using kay based auth xrdp authenticates via PAM and requires a password. SSH key authentication is not available over RDP:</p>

<pre><code>passwd root
</code></pre>

<hr />

<h2>Step 3: Enable and start services</h2>

<p>xrdp runs as two separate services: the RDP listener and the session manager. Both must be running.</p>

<pre><code>rc-update add xrdp default
rc-update add xrdp-sesman default
rc-service xrdp start
rc-service xrdp-sesman start
</code></pre>

<p>xrdp listens on port 3389. On a NAT VPS, forward an external port to 3389 in your provider's portal.</p>

<hr />

<h2>Step 4: Configure the WindowMaker menu</h2>

<p>WindowMaker's right-click menu is loaded from a text file. generic names used, feel free to modify, Create the file:</p>

<pre><code>mkdir -p ~/GNUstep/Library/WindowMaker ~/GNUstep/Defaults
cat &gt; ~/GNUstep/Library/WindowMaker/menu &lt;&lt; 'EOF'
"WindowMaker" MENU
  "Applications" MENU
    "Terminal" EXEC st
    "Browser" EXEC dillo-mbedtls
    "Editor" EXEC nedit
    "Files" EXEC xfe
    "Mail" SHEXEC "st -e neomutt"
    "IRC" SHEXEC "st -e weechat"
    "Image Viewer" EXEC feh
    "PDF Viewer" EXEC mupdf
    "Calculator" EXEC xcalc
    "System Monitor" SHEXEC "st -e htop"
    "Screenshot" EXEC scrot
    "File Manager" SHEXEC "st -e mc"
  "Applications" END
  "Workspaces" WORKSPACE_MENU
  "Workspace" MENU
    "Hide Others" HIDE_OTHERS
    "Show All" SHOW_ALL
    "Refresh" REFRESH
  "Workspace" END
  "Restart WindowMaker" RESTART
  "Exit WindowMaker" EXIT
"WindowMaker" END
EOF
</code></pre>

<p>To reload after editing the menu file, right click and reload WindowMaker or just disconnect and reconnect via RDP. The updated menu should load automatically on the next session start.</p>

<hr />

<h2>Step 5: Configure neomutt</h2>

<p>NeoMutt supports Gmail via POP3 using an app password. Basic password authentication was removed by Google in 2022 ?!?. If 2-stage Verification is enabled on the Google account, an app password can be generated at <strong>myaccount.google.com &gt; Security &gt; 2-Step Verification &gt; App passwords</strong>. Enable POP3 in Gmail at <strong>Settings &gt; Forwarding and POP/IMAP &gt; Enable POP for mail that arrives from now on</strong>.</p>

<p>I believe you can do something similar for MS based email, but I don't have one to test.</p>

<p>Create the notification script:</p>

<pre><code>cat &gt; /usr/local/bin/mutt-notify &lt;&lt; 'EOF'
#!/bin/sh
xmessage -timeout 5 -center "New mail: $1 messages in $2" &amp;
EOF
chmod +x /usr/local/bin/mutt-notify
</code></pre>

<p>Create the neomutt configuration:</p>

<pre><code>mkdir -p ~/.cache/neomutt
cat &gt; ~/.neomuttrc &lt;&lt; 'EOF'
set realname = "Your Name"
set from = "you@gmail.com"

set folder = "pops://pop.gmail.com:995"
set spoolfile = "pops://pop.gmail.com:995"

set pop_user = "you@gmail.com"
set pop_pass = "your-app-password"

set pop_delete = no
set pop_reconnect = yes

set record = ""
set postponed = ""

set new_mail_command = "mutt-notify %n %f"
set header_cache = "~/.cache/neomutt/headers"

set sort = threads
set sort_aux = reverse-last-date-received
EOF
</code></pre>

<hr />

<h2>Connecting</h2>

<p>Use any RDP client. On Windows, the built-in Remote Desktop Connection works without additional software. On Linux, Remmina or <code>xfreerdp</code> both work.</p>

<p>Connect to your external IP and forwarded port. Log in as root with the password set above.</p>

<hr />

<h2>Using WindowMaker</h2>

<p>WindowMaker uses the NeXTSTEP (Hello old people) desktop paradigm, which differs from a Windows-style taskbar layout. The key elements:</p>

<ul>
<li><strong>Right-click the desktop</strong> to open the application menu. This is how you launch applications.</li>
<li><strong>Top-left corner</strong>: the Clip, workspace switcher and application dock.</li>
<li><strong>Top-right corner</strong>: the Dock, pinned application icons.</li>
<li><strong>Minimised windows</strong> become small icons on the desktop, not entries in a taskbar.</li>
</ul>

<p>It takes ten minutes to become comfortable with. The right-click menu is the main thing to get used too.</p>

<hr />

<h2>After</h2>

<pre><code>              total        used        free      shared  buff/cache   available
Mem:             91          58          27           0           6          27
</code></pre>

<pre><code>Filesystem      Size      Used Available Use% Mounted on
/dev/vda       953.0M    478.5M    436.5M  52% /
</code></pre>

<table>
<thead>
<tr>
  <th></th>
  <th>RAM</th>
  <th>Disk</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Minimal Alpine (end of previous guide)</td>
  <td>23MB</td>
  <td>71.9MB</td>
</tr>
<tr>
  <td>xrdp daemon, no session</td>
  <td>—</td>
  <td>—</td>
</tr>
<tr>
  <td>Active session</td>
  <td>58MB</td>
  <td>—</td>
</tr>
<tr>
  <td><strong>Full stack installed</strong></td>
  <td>—</td>
  <td><strong>478.5MB</strong></td>
</tr>
</tbody>
</table>

<hr />

<h2>What is running in a connected session</h2>

<ul>
<li><code>xrdp</code> — RDP listener</li>
<li><code>xrdp-sesman</code> — session manager</li>
<li><code>Xorg</code> — X server (via xorgxrdp driver, outputting to RDP client)</li>
<li><code>wmaker</code> — WindowMaker</li>
<li><code>syslogd</code>, <code>dropbear</code>, <code>getty</code> — from the base system</li>
</ul>

<hr />

<h2>Package management before connecting</h2>

<p>On a 128MB system, running <code>apk</code> with an active desktop session leaves very little headroom and risks the OOM killer terminating apk mid-operation, which can hurt the package database. Install everything you need before starting a session, or stop xrdp-sesman first:</p>

<pre><code>rc-service xrdp-sesman stop
# run apk operations
rc-service xrdp-sesman start
</code></pre>

<h2>Screenshots</h2>

<p><img src="https://lowendspirit.com/uploads/editor/oe/d4r0ips8agvx.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/45/owa807yra3ex.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/ni/4i8me2hq95yd.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/y5/61y3s105xurp.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/6d/zbyudqn2q4wi.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/dc/6of3qc0ecgy7.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/uq/67uezgeqydky.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/1e/2jhwqsfoex1u.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/9t/r9gvthro5miy.png" alt="" title="" /></p>

<p>So that is a remote desktop for basic stuff for about $0.10 /month if you use tierhive but it should work anywhere there is kvm!</p>

<p>Also published on the blog <a href="https://tierhive.com/blog/tierhive-howto/alpine-minimal-remote-desktop-on-a-128mb-vps" rel="nofollow">https://tierhive.com/blog/tierhive-howto/alpine-minimal-remote-desktop-on-a-128mb-vps</a></p>

<p>I have also done a 256mb IceWM version with some slightly bigger apps e.g. hexchat instead of wechat, netsurf instead of dillo etc, it also has an option to go for 512-768mb for running firefox and stripping it to the bone so it actually works.</p>
]]>
        </description>
    </item>
    <item>
        <title>Alpine minimal remote desktop on a 256mb-512mb VPS (LXQt) - last Alpine guide</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10660/alpine-minimal-remote-desktop-on-a-256mb-512mb-vps-lxqt-last-alpine-guide</link>
        <pubDate>Thu, 19 Mar 2026 13:49:41 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10660@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Further to: <a href="https://lowendspirit.com/discussion/10658/alpine-minimal-remote-desktop-on-a-128mb-vps-guide" rel="nofollow">https://lowendspirit.com/discussion/10658/alpine-minimal-remote-desktop-on-a-128mb-vps-guide</a> this is the last one for an Alpine Desktop, but if your gonna do it you might as well test it a bit <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/grin.png" title=":D" alt=":D" height="18" /></p>

<p>I hinted at IceWM in the other thread, and it is a valid choice, but found LXQt gives a much more modern feel as well as better application support for the menu etc.</p>

<p>On my own version, I have both, the ram use difference is close enough not to care in 256mb so I switched at the end and because of the things LXQt pulls in, other things are possible without as much overhead.</p>

<h1>Adding a more capable Desktop to Alpine 3.23 (256MB tier)</h1>

<p>Full graphical desktop on the minimised Alpine 3.23 system built in the first guide. It targets a more capable desktop experience with a proper application menu, graphical email, IRC, and file management. It is an alternative to the 128MB WindowMaker path, probably about as functional as a G3 mac in reality but a bit of fun.</p>

<p><strong>This guide assumes the minimised Alpine 3.23 base from the first guide.</strong> Starting from a stock Alpine install will produce different results.</p>

<p><strong>Minimum RAM: 256MB. Minimum disk: 2GB.</strong></p>

<hr />

<h2>Before</h2>

<p>End state of the minimisation guide on a 256MB / 2GB instance, after expanding the partition which I wont cover, I assume you can or will just start with the right size disk.</p>

<pre><code>              total        used        free      shared  buff/cache   available
Mem:            217          26         152           0          39         183
Swap:             0           0           0
</code></pre>

<pre><code>Filesystem      Size      Used Available Use% Mounted on
/dev/vda        1.9G     72.0M      1.7G   4% /
</code></pre>

<hr />

<h2>Choices made</h2>

<p><strong>Desktop environment: LXQt.</strong> LXDE (which is probably to big anyway) is not packaged for Alpine 3.23. LXQt 2.3.0 is available in the community repository and is the lightest full desktop environment available. It uses Openbox as its window manager and lxqt-panel for the taskbar, which implements the XDG menu specification correctly  (So if you install something, it is pretty much always in the menu without extra configuration.)</p>

<p><strong>Remote access: XRDP.</strong> Same rationale as the 128MB guide. Native RDP support on Windows, sessions persist across disconnections.</p>

<p><strong>File manager: PCManFM-Qt.</strong> Included in <code>lxqt-desktop</code>. Replaces xfe.</p>

<p><strong>Terminal: QTerminal.</strong> Included in <code>lxqt-desktop</code>. Replaces xterm.</p>

<p><strong>Image viewer: LXImage-Qt.</strong> Native LXQt image viewer with a proper <code>.desktop</code> file.</p>

<p><strong>Calculator: Qalculate-Qt.</strong> Full-featured Qt calculator. The Alpine <code>xcalc</code> package does not ship a <code>.desktop</code> file and would not appear in the menu without a manual workaround.</p>

<p><strong>Browser: NetSurf.</strong> Lightweight GTK3 browser. JavaScript is non-functional in NetSurf. Firefox ESR and Chromium are in the Alpine repositories but both require significantly more than 256MB RAM to run. JavaScript-capable browsing is not viable at this memory tier.</p>

<p><strong>Email: Sylpheed.</strong> Lightweight GTK2 graphical email client. Account setup is handled through a GUI wizard on first launch. No Qt mail client with an acceptable dependency chain is available in the Alpine 3.23 repositories.</p>

<p><strong>IRC: HexChat.</strong> GTK2 graphical IRC client. No lightweight Qt IRC client is available in the Alpine 3.23 repositories.</p>

<p><strong>PDF viewer: MuPDF.</strong> Same as the 128MB guide.</p>

<p><strong>System utilities: htop, fastfetch, scrot, mc.</strong> CLI tools, no change from the 128MB guide.</p>

<hr />

<h2>A note on Mesa</h2>

<p>Installing <code>xorg-server</code> on Alpine 3.23 pulls in the full Mesa stack including LLVM. This adds approximately 250MB to disk and is unavoidable. It is a hard dependency of the Alpine xorg-server package.</p>

<hr />

<h2>A note on breeze-icons</h2>

<p>LXQt's default icon theme is Breeze. The Alpine <code>lxqt-desktop</code> package does not declare it as a dependency. Without it, the desktop loads with broken or missing icons throughout. It must be installed explicitly if you want fancy icons, but as this is stripped down, you probably dont care.</p>

<hr />

<h2>A note on dbus</h2>

<p>LXQt requires <code>dbus-launch</code> to start a session bus. The Alpine <code>dbus</code> package does not include <code>dbus-launch</code>  it is in the separate <code>dbus-x11</code> package. Both must be installed or the session exits immediately on connect.</p>

<hr />

<h2>Stage 1: Install the desktop stack</h2>

<p>Stop any active session before running package operations. On a 256MB system, running <code>apk</code> with an active desktop session risks the OOM killer terminating apk mid-operation, which corrupts the package database.</p>

<p>The minimisation guide removed OpenSSH and its dependencies including OpenSSL. The xrdp post-install script uses the <code>openssl</code> CLI to generate its RSA key pair. Install it first and like the last time remove it after.</p>

<blockquote><div>
  <p><code>xorgxrdp</code> does not pull in <code>xorg-server</code> as a dependency on Alpine. Install it explicitly or Xorg will not be present and sessions will fail to start.</p>
</div></blockquote>

<pre><code>apk add openssl
apk add lxqt-desktop xrdp xorgxrdp xorg-server breeze-icons dbus dbus-x11 lximage-qt netsurf sylpheed hexchat qalculate-qt mupdf font-misc-misc font-dejavu fastfetch scrot htop mc
apk del openssl
rm -rf /var/cache/apk/*
</code></pre>

<p>Total: approximately 800MB of disk. The dominant costs are LLVM (Mesa software renderer), the Breeze icon theme, and the LXQt component stack.</p>

<hr />

<h2>Stage 2: Configure xrdp</h2>

<p><strong>Set the colour depth:</strong></p>

<p>(helps with dynamic resize on the rdp client)</p>

<pre><code>sed -i 's/max_bpp=16/max_bpp=32/' /etc/xrdp/xrdp.ini
</code></pre>

<p><strong>Set the session limit:</strong></p>

<pre><code>sed -i 's/MaxSessions=50/MaxSessions=1/' /etc/xrdp/sesman.ini
</code></pre>

<p><strong>Set the session startup script:</strong></p>

<pre><code>cat &gt; /etc/xrdp/startwm.sh &lt;&lt; 'EOF'
#!/bin/sh
exec startlxqt
EOF
chmod +x /etc/xrdp/startwm.sh
</code></pre>

<p><strong>Set a root password if one is not already set.</strong> xrdp authenticates via PAM and requires a password:</p>

<pre><code>passwd root
</code></pre>

<hr />

<h2>Stage 3: Enable services</h2>

<pre><code>rc-update add dbus default
rc-update add xrdp default
rc-update add xrdp-sesman default
rc-service dbus start
rc-service xrdp start
rc-service xrdp-sesman start
</code></pre>

<p>xrdp listens on port 3389. On a NAT VPS, forward an external port to 3389 in your favourite NAT provider's portal.</p>

<hr />

<h2>Stage 4: Configure LXQt for the VPS environment</h2>

<p>LXQt is designed for physical machines. Several components it starts by default have no purpose on a headless KVM VPS and must be disabled explicitly. All configuration below is written to user-level paths under <code>/root/.config/</code>, which take precedence over system defaults without modifying package-managed files.</p>

<p><strong>Disable autostart entries with no purpose on a VPS.</strong></p>

<p>The XDG autostart specification allows entries to be suppressed with <code>Hidden=true</code> in a user-level override:</p>

<pre><code>mkdir -p /root/.config/autostart

for entry in lxqt-powermanagement lxqt-xscreensaver-autostart at-spi-dbus-bus xdg-user-dirs; do
    printf '[Desktop Entry]\nHidden=true\n' &gt; /root/.config/autostart/${entry}.desktop
done
</code></pre>

<ul>
<li><code>lxqt-powermanagement</code> - battery and ACPI power management. No battery, no physical power button on a VPS.</li>
<li><code>lxqt-xscreensaver-autostart</code> -  screensaver. No physical screen to protect.</li>
<li><code>at-spi-dbus-bus</code> - accessibility framework. No use on a single-user headless VPS.</li>
<li><code>xdg-user-dirs</code> - creates and updates <code>~/Desktop</code>, <code>~/Documents</code> etc. Not needed.</li>
</ul>

<p><strong>Configure the panel.</strong> Remove plugins that require hardware the VPS does not have, and switch to a classic cascading menu:</p>

<pre><code>mkdir -p /root/.config/lxqt
cat &gt; /root/.config/lxqt/panel.conf &lt;&lt; 'EOF'
panels=panel1

[panel1]
plugins=mainmenu,taskbar,statusnotifier,tray,worldclock,showdesktop
position=Bottom
desktop=0

[mainmenu]
type=mainmenu
alignment=Left

[taskbar]
type=taskbar
buttonWidth=220
closeOnMiddleClick=true
groupingEnabled=false

[worldclock]
type=worldclock

[showdesktop]
alignment=Right
type=showdesktop

[statusnotifier]
alignment=Right
type=statusnotifier

[tray]
type=tray
EOF
</code></pre>

<p>Removed plugins:</p>

<ul>
<li><code>volume</code> - no audio hardware</li>
<li><code>mount</code> - no removable media</li>
<li><code>desktopswitch</code> - only one desktop</li>
<li><code>quicklaunch</code> - empty by default, replaced by the application menu</li>
</ul>

<p><strong>Configure the session.</strong> The default cursor theme (<code>whiteglass</code>) is not installed on Alpine. Set it to <code>breeze</code>:</p>

<pre><code>cat &gt; /root/.config/lxqt/session.conf &lt;&lt; 'EOF'
[General]
leave_confirmation=false

[Environment]
GTK_CSD=0
GTK_OVERLAY_SCROLLING=0

[Mouse]
cursor_size=24
cursor_theme=breeze
acc_factor=20
acc_threshold=10
left_handed=false

[Keyboard]
delay=500
interval=30
beep=false

[Font]
antialias=true
hinting=true
dpi=96
EOF
</code></pre>

<p><strong>Configure Openbox.</strong> Set one desktop and disable animations:</p>

<pre><code>mkdir -p /root/.config/openbox
cp /etc/xdg/openbox/rc.xml /root/.config/openbox/lxqt-rc.xml
sed -i 's/&lt;number&gt;4&lt;\/number&gt;/&lt;number&gt;1&lt;\/number&gt;/' /root/.config/openbox/lxqt-rc.xml
sed -i 's/&lt;animateIconify&gt;yes&lt;\/animateIconify&gt;/&lt;animateIconify&gt;no&lt;\/animateIconify&gt;/' /root/.config/openbox/lxqt-rc.xml
sed -i 's/&lt;drawContents&gt;yes&lt;\/drawContents&gt;/&lt;drawContents&gt;no&lt;\/drawContents&gt;/' /root/.config/openbox/lxqt-rc.xml
sed -i 's/&lt;focusDelay&gt;200&lt;\/focusDelay&gt;/&lt;focusDelay&gt;0&lt;\/focusDelay&gt;/' /root/.config/openbox/lxqt-rc.xml
sed -i 's/&lt;popupTime&gt;875&lt;\/popupTime&gt;/&lt;popupTime&gt;0&lt;\/popupTime&gt;/' /root/.config/openbox/lxqt-rc.xml
</code></pre>

<p><strong>Configure the desktop.</strong> Remove the Computer and Trash icons. Both require gvfs to function, which pulls in the full GNOME stack (yes, really haha!, GStreamer, GTK4, GNOME Online Accounts etc) at a cost of over 300MB. The trade-off is not worth it on a 2GB disk:</p>

<pre><code>mkdir -p /root/.config/pcmanfm-qt/lxqt
cat &gt; /root/.config/pcmanfm-qt/lxqt/settings.conf &lt;&lt; 'EOF'
[System]
Archiver=lxqt-archiver

[Desktop]
ShowTrash=false
ShowComputer=false
ShowHomeDir=true
EOF
</code></pre>

<hr />

<h2>Connecting</h2>

<p>Use any RDP client. On Windows, the built-in Remote Desktop Connection works without additional software. On Linux, Remmina or <code>xfreerdp</code> both work.</p>

<p>Connect to your external IP and forwarded port. Log in as root with the password set above.</p>

<hr />

<h2>Using LXQt</h2>

<p>LXQt uses a conventional taskbar layout.</p>

<ul>
<li><strong>Application menu</strong>: the button at the left of the taskbar. Applications are grouped by category and populated automatically from installed packages.</li>
<li><strong>Right-click the desktop</strong> for an Openbox menu with session options.</li>
<li>Minimised windows appear in the taskbar centre.</li>
</ul>

<hr />

<h2>After (with all applications running)</h2>

<pre><code>               total        used        free      shared  buff/cache   available
  Mem:            217         168          14          11          35          24
  Swap:             0           0           0
</code></pre>

<pre><code>Filesystem      Size      Used Available Use% Mounted on
/dev/vda        1.9G    799.0M      1.0G  44% /
</code></pre>

<p>RAM at idle with xrdp and dbus running is approximately 45MB. An active LXQt session with no applications open consumes approximately 150MB, leaving around 60MB headroom for applications.</p>

<hr />

<h2>Do your package management before connecting</h2>

<p>On a 256MB system, running <code>apk</code> with an active desktop session risks OOM-killing apk mid-operation, which corrupts the package database. Always stop the session manager before running package operations:</p>

<pre><code>rc-service xrdp-sesman stop
# run apk operations
rc-service xrdp-sesman start
</code></pre>

<p>Or just make sure you close everything first.</p>

<hr />

<h2>Optional: Adding Firefox ESR (512 MB tier)</h2>

<p>NetSurf covers basic browsing at the 256MB tier. If you want a modern browser that handles current websites, Firefox ESR is available in the Alpine repositories but requires more RAM.</p>

<p>Testing results:</p>

<table>
<thead>
<tr>
  <th>RAM</th>
  <th>Result</th>
</tr>
</thead>
<tbody>
<tr>
  <td>256MB</td>
  <td>Firefox will not open</td>
</tr>
<tr>
  <td>512MB</td>
  <td>Opens. One tab maximum. 41MB headroom. Fragile.</td>
</tr>
<tr>
  <td>768MB</td>
  <td>Reliable single-tab browsing with accepted remote desktop limitations</td>
</tr>
</tbody>
</table>

<p>Upgrade the VPS to 768MB before proceeding.</p>

<p><strong>Remove NetSurf and install Firefox ESR:</strong></p>

<pre><code>apk del netsurf
apk add firefox-esr
rm -rf /var/cache/apk/*
</code></pre>

<p><strong>Create the wrapper script.</strong> Firefox is launched through this rather than directly. The environment variables set here cannot be set in the preferences file.</p>

<pre><code>cat &gt; /usr/local/bin/firefox-esr &lt;&lt; 'EOF'
#!/bin/sh
# Single malloc arena on single core there is no thread contention,
# multiple arenas only waste memory on heap metadata
export MALLOC_ARENA_MAX=1
export MALLOC_TRIM_THRESHOLD_=65536
export MALLOC_MMAP_THRESHOLD_=131072
# Use EGL instead of GLX skips the GLX extension stack
export MOZ_X11_EGL=1
export MOZ_DISABLE_RDD_SANDBOX=1
# Prevent GTK loading the AT-SPI accessibility bridge
export NO_AT_BRIDGE=1
export MESA_NO_ERROR=1
exec /usr/lib/firefox-esr/firefox-esr "$@"
EOF
chmod +x /usr/local/bin/firefox-esr
</code></pre>

<p><strong>Override the desktop entry</strong> to use the wrapper:</p>

<pre><code>cat &gt; /usr/local/share/applications/firefox-esr.desktop &lt;&lt; 'EOF'
[Desktop Entry]
Type=Application
Name=Firefox ESR
GenericName=Web Browser
Exec=/usr/local/bin/firefox-esr %u
Terminal=false
StartupNotify=false
StartupWMClass=firefox-esr
Categories=Network;WebBrowser;
EOF
</code></pre>

<p><strong>Launch Firefox once and close it immediately.</strong> (pkill firefox*) Firefox creates its own profile directory on first launch and writes an <code>installs.ini</code> file that locks itself to that profile, overriding any profile configured in advance. The profile path cannot be known until after this first launch. Connect via RDP, open Firefox from the application menu, wait for it to appear, then close it.</p>

<p>Back in the SSH session, find the profile Firefox created:</p>

<pre><code>PROFILE=$(find /root/.mozilla/firefox -name "prefs.js" | head -1 | xargs dirname)
</code></pre>

<p><strong>Write the memory configuration</strong> to that profile. Firefox reads <code>user.js</code> on every startup and applies these preferences before anything else loads:</p>

<pre><code>cat &gt; $PROFILE/user.js &lt;&lt; 'EOF'
// === Process model ===
user_pref("dom.ipc.processCount", 1);
user_pref("dom.ipc.processCount.webIsolated", 1);
user_pref("dom.ipc.processCount.file", 1);
user_pref("fission.autostart", false);
user_pref("dom.ipc.useSocketProcess", false);

// === Content sandbox ===
user_pref("security.sandbox.content.level", 0);

// === JavaScript JIT ===
user_pref("javascript.options.baselinejit", false);
user_pref("javascript.options.ion", false);
user_pref("javascript.options.native_regexp", false);
user_pref("javascript.options.wasm", false);
user_pref("javascript.options.wasm_baselinejit", false);
user_pref("javascript.options.wasm_optimizingjit", false);
user_pref("javascript.options.discardSystemSource", true);

// === JavaScript heap and GC ===
user_pref("javascript.options.mem.max", 64);
user_pref("javascript.options.mem.high_water_mark", 32);
user_pref("javascript.options.mem.gc_max_empty_chunk_count", 1);
user_pref("javascript.options.mem.gc_min_empty_chunk_count", 0);

// === Single core ===
user_pref("javascript.options.parallel-parsing", false);
user_pref("dom.workers.maxPerDomain", 2);
user_pref("layout.frame_rate", 24);

// === Graphics ===
user_pref("webgl.disabled", true);
user_pref("webgl.enable-webgl2", false);
user_pref("layers.acceleration.disabled", true);
user_pref("gfx.canvas.accelerated", false);
user_pref("media.hardware-video-decoding.enabled", false);
user_pref("media.hardware-video-decoding.force-enabled", false);
user_pref("media.ffmpeg.vaapi.enabled", false);

// === Fonts ===
user_pref("gfx.font_rendering.graphite.enabled", false);
user_pref("gfx.font_rendering.opentype_svg.enabled", false);
user_pref("layout.spellcheckDefault", 0);

// === Cache ===
user_pref("browser.cache.disk.enable", false);
user_pref("browser.cache.memory.enable", false);

// === Image memory ===
user_pref("image.mem.max_decoded_image_kb", 512);
user_pref("image.mem.decode_bytes_at_a_time", 4096);
user_pref("image.cache.size", 1048576);

// === Safe Browsing ===
user_pref("browser.safebrowsing.malware.enabled", false);
user_pref("browser.safebrowsing.phishing.enabled", false);
user_pref("browser.safebrowsing.downloads.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.blockedURIs.enabled", false);

// === Tracking protection ===
user_pref("privacy.trackingprotection.enabled", false);
user_pref("privacy.trackingprotection.pbmode.enabled", false);
user_pref("privacy.trackingprotection.socialtracking.enabled", false);

// === Startup ===
user_pref("browser.startup.homepage", "about:blank");
user_pref("browser.startup.page", 0);
user_pref("browser.sessionstore.resume_from_crash", false);
user_pref("browser.sessionstore.interval", 60000);
user_pref("browser.sessionstore.max_tabs_undo", 0);
user_pref("browser.sessionstore.max_windows_undo", 0);
user_pref("browser.sessionhistory.max_entries", 5);
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.newtab.preload", false);
user_pref("browser.aboutwelcome.enabled", false);
user_pref("browser.laterrun.enabled", false);
user_pref("startup.homepage_override_url", "");
user_pref("startup.homepage_welcome_url", "");
user_pref("startup.homepage_welcome_url.additional", "");
user_pref("datareporting.policy.dataSubmissionPolicyBypassNotification", true);

// === Network ===
user_pref("network.prefetch-next", false);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.predictor.enabled", false);
user_pref("network.http.speculative-parallel-limit", 0);
user_pref("network.http.max-connections", 6);
user_pref("network.http.max-persistent-connections-per-server", 2);
user_pref("network.http.max-persistent-connections-per-proxy", 2);
user_pref("network.dnsCacheEntries", 50);
user_pref("network.http.http3.enabled", false);
user_pref("network.websocket.enabled", false);
user_pref("network.captive-portal-service.enabled", false);
user_pref("network.connectivity-service.enabled", false);

// === Geolocation ===
user_pref("geo.enabled", false);
user_pref("geo.provider.network.url", "");
user_pref("browser.region.network.scan.enabled", false);
user_pref("browser.region.update.enabled", false);

// === Media ===
user_pref("media.peerconnection.enabled", false);
user_pref("media.eme.enabled", false);
user_pref("media.ffmpeg.enabled", false);
user_pref("media.autoplay.default", 5);
user_pref("media.webspeech.recognition.enable", false);
user_pref("media.webspeech.synth.enabled", false);

// === DOM ===
user_pref("dom.push.enabled", false);
user_pref("dom.serviceWorkers.enabled", false);
user_pref("dom.battery.enabled", false);
user_pref("dom.gamepad.enabled", false);
user_pref("dom.vr.enabled", false);
user_pref("dom.webnotifications.enabled", false);

// === Accessibility ===
user_pref("accessibility.force_disabled", 1);

// === URL bar ===
user_pref("browser.urlbar.suggest.searches", false);
user_pref("browser.urlbar.suggest.history", false);
user_pref("browser.urlbar.suggest.bookmark", false);
user_pref("browser.urlbar.suggest.topsites", false);
user_pref("browser.urlbar.maxRichResults", 0);
user_pref("browser.search.suggest.enabled", false);

// === Activity Stream ===
// Activity Stream is the new tab framework. It is separate from
// browser.newtabpage.enabled and loads React, feeds, and telemetry
// independently. Both must be disabled.
user_pref("browser.newtabpage.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
user_pref("browser.newtabpage.activity-stream.feeds.system.topsites", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
user_pref("browser.newtabpage.activity-stream.feeds.system.topstories", false);
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.default.sites", "");
user_pref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false);
user_pref("browser.topsites.contile.enabled", false);

// === Features ===
user_pref("browser.pocket.enabled", false);
user_pref("extensions.pocket.enabled", false);
user_pref("browser.formfill.enable", false);
user_pref("signon.rememberSignons", false);
user_pref("places.history.enabled", false);
user_pref("pdfjs.disabled", true);
user_pref("reader.parse-on-load.enabled", false);
user_pref("browser.pagethumbnails.capturing_disabled", true);

// === Built-in extensions ===
user_pref("extensions.webcompat.enabled", false);
user_pref("extensions.webcompat-reporter.enabled", false);
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
user_pref("extensions.htmlaboutaddons.discovery.enabled", false);

// === Normandy ===
// Normandy is Mozilla's remote experiment system. It can push changes
// that silently override preferences set in this file.
user_pref("app.normandy.enabled", false);
user_pref("app.normandy.api_url", "");

// === Telemetry ===
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("app.shield.optoutstudies.enabled", false);
user_pref("browser.discovery.enabled", false);
user_pref("browser.messaging-system.whatsNewPanel.enabled", false);
user_pref("breakpad.reportURL", "");
user_pref("browser.crashReports.unsubmittedCheck.enabled", false);
user_pref("extensions.getAddons.cache.enabled", false);

// === UI ===
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.tabs.firefox-view", false);
user_pref("browser.migration.enabled", false);
user_pref("browser.uitour.enabled", false);

// === Updates ===
user_pref("app.update.enabled", false);
user_pref("app.update.auto", false);
user_pref("extensions.update.enabled", false);
user_pref("extensions.update.autoUpdateDefault", false);

// === Tab memory ===
user_pref("browser.tabs.unloadOnLowMemory", true);
EOF
</code></pre>

<p>Relaunch Firefox. It should open to a blank tab with no additional tabs and no first-run pages, honestly I messed with this for hours, I might have met myself coming back a few times, so any feedback from anyone who tested this is welcome.</p>

<p><strong>After, Firefox opens with one or 2 tabs loaded at 512MB on LXQt:</strong></p>

<pre><code>              total        used        free      shared  buff/cache   available
Mem:            469         390          12          26          66          41
</code></pre>

<p>At 640/768MB there is sufficient headroom for reliable use. One tab at a time. Video playback sort of works, but you have to set your defaults super low and thats not really what this is for, but YT opens, and extensions are not really viable at this tier.</p>

<h2>Screenshots</h2>

<p><img src="https://lowendspirit.com/uploads/editor/ua/cbr2i5cs3lcu.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/v1/l3oig6jv9lfd.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/dv/l3dbpvsnah1i.png" alt="" title="" /></p>

<p>512mb with firefox example (Honestly though, you should use 640 or 768mb really):</p>

<p><img src="https://lowendspirit.com/uploads/editor/jt/udz4wzxx7j8t.png" alt="" title="" /></p>

<p><a href="https://tierhive.com/blog/tierhive-howto/adding-a-modern-desktop-to-alpine-3-23-256mb-tier" rel="nofollow">https://tierhive.com/blog/tierhive-howto/adding-a-modern-desktop-to-alpine-3-23-256mb-tier</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Spam 3.0 - the new level of AI spam?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10659/spam-3-0-the-new-level-of-ai-spam</link>
        <pubDate>Thu, 19 Mar 2026 05:54:51 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">10659@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I will start by quoting an email I got to my public email (listed on my websites' contact section):</p>

<blockquote><div>
  <p>Title: <strong>Someone actually reads your server migration posts</strong><br />
  Hi Relja,<br />
  This is going to sound weird coming from a stranger, but I've spent more time on bikegremlin than I'd like to admit. The piece where you documented the actual CPU steal time across shared hosts, the one where you showed the graphs nobody asked you to make. That one stuck with me for months.<br />
                                                                                                                                                          I kept thinking about it. Not the data specifically, but the fact that you bothered. You ran the tests, wrote it all up, posted it on your forum where maybe a few hundred people would see it. No affiliate link at the bottom. No sponsor disclaimer at the top. Just a guy who wanted the truth documented somewhere.<br />
                                                                                                                                                          That's rare. You know it's rare. The entire first page of Google for "best web hosting" is affiliate content wearing a lab coat.<br />
  <br />
  I'm Todor Markov, a solo developer. I built a thing called The-Scraper-Site. It scrapes real pricing from 39 hosting providers every day, around 960 plans total. The idea was simple. Show what hosts<br />
  actually charge, including the renewal price they hide behind the asterisk. I built a calculator that shows true cost over 1, 2, 3 years so people can see the bait and switch in plain numbers.                                                                                                                                                                 No rankings you can buy. No "editor's choice" that mysteriously goes to whoever pays the most. Free tool at The-Scraper-Site .com.<br />
  <br />
  I want to be honest about something. Your writing was part of why I built it. Not the only reason, but a real one. I kept finding your posts while researching hosts and thinking, this guy is doing the hard version of what I want to do. If one person with a blog and a forum can be this thorough, there's no excuse for not building a tool that at least gets the pricing part right at scale.<br />
  I'm not emailing to ask you for anything specific. I don't have a pitch. I just wanted you to know that your work reached someone, and it turned into something.<br />
  <br />
  If you ever want to poke around the site and tell me what's wrong with it, I'd genuinely want to hear it. You'd find problems nobody else would. And if you think it's useful enough to mention to your forum people, that's their call and yours.<br />
                                                                                                                                                      Either way, keep doing what you're doing. The internet is worse without people like you on it.</p>
  
  <p>Todor Markov</p>
</div></blockquote>

<p>What makes this spam campaign stand out?</p>

<p>Using a Gmail account to avoid spam filters is nothing new, many spammers use that nowadays. True, this one is doing it with a non-generic address ( The-Scraper-Site <a href="https://lowendspirit.com/index.php?p=/profile/gmail" rel="nofollow">@gmail</a> .com ) - probably the initial go until it gets flagged enough times.</p>

<p>What is new is that it did a decent scrape of my website to write the pitch email. And probably automated that to a thousand other sites in a similar "customized" way. I get quite a few of these so can confirm that this one is pretty well done compared to your average. Looks like a competent use of LLM tools.</p>

<p>When I went to the site, I saw over 20 articles published within a month max, so if it is a one-man project that in itself is a good giveaway of AI use.</p>

<p>I also noticed Bluehost gets listed and recommended in some categories, while no MDDhosting is mentioned, so I am pretty sure that the creator of that site made zero visits to my website.</p>

<p>No affiliate links on the site, but it could be just an experiment to perfect the AI tool use - who knows.</p>

<p>A possible line of thinking (and perhaps prompting too) could be: "Find hosting-themed sites. Analyze each site's technical niche and write a fan email highlighting a specific technical detail that shows I value 'truth over profit' or some other value found on the site."</p>

<p>Googling the signed name is interesting - not sure if it is legit, but it could be as the name comes up from a "Researcher at Anthropic."</p>

<p>The Net is getting more and more scary in terms of being able to (and having to first) figure out if something is machine-made.</p>

<p>Relja <em>HumanMade</em> Novovic</p>

<p>Edit/P.S.</p>

<p>This got me thinking further about the case where Gox's and mine 100% hand made text was judged as AI by what I suppose was a human (can't be 100% sure):</p>

<p><a href="https://www.bikegremlin.net/threads/when-human-replies-look-like-ai-real-youtube-exchange.506/" rel="nofollow">https://www.bikegremlin.net/threads/when-human-replies-look-like-ai-real-youtube-exchange.506/</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Nextcloud - on shared hosting/budget?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10089/nextcloud-on-shared-hosting-budget</link>
        <pubDate>Sun, 19 Oct 2025 07:17:59 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">10089@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I have decided to give Nextcloud a try.</p>

<p>My reasoning was to keep my address book and calendar portable (so I can sync any changes accross several computers and phones), but not rely on Google, Apple or other huge corporation.</p>

<p>For files and photos I suppose the likes of good old offline storage combined with Hetzner and even Pcloud (and Filen.io) are probably a more reasonable choice - correct me if I'm wrong.</p>

<p>Of course, I wanted to keep the costs low, so I tried an installation in a shared hosting environment (well, technically it's under a reseller hosting account, but the principle and access rights are the same).</p>

<p>So far so good.<br />
A few error logs, some warnings, but it does work. LOL.</p>

<p>The details (with a list of warnings and errors I came across):</p>

<p><a href="https://io.bikegremlin.com/38385/nextcloud-selfhosted-install-on-shared-hosting/" rel="nofollow">https://io.bikegremlin.com/38385/nextcloud-selfhosted-install-on-shared-hosting/</a></p>

<p>Corrections, ideas and tips are more than welcome.  <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>
]]>
        </description>
    </item>
    <item>
        <title>[FREE] Domain Monitor - Self-Hosted Domain Expiration Tracking System (PHP 8.1+)</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10055/free-domain-monitor-self-hosted-domain-expiration-tracking-system-php-8-1</link>
        <pubDate>Wed, 08 Oct 2025 15:41:47 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Hosteroid</dc:creator>
        <guid isPermaLink="false">10055@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hey everyone!<br />
I wanted to share a small open-source project we’ve built at Hosteroid — a self-hosted Domain Monitor that helps you track domain expirations and stay on top of renewals.</p>

<p>🔗 GitHub: <a href="https://github.com/Hosteroid/domain-monitor" rel="nofollow">https://github.com/Hosteroid/domain-monitor</a></p>

<p>🚀 Screenshots<br />
<a href="https://prnt.sc/xkf69xwSmS0m" rel="nofollow">https://prnt.sc/xkf69xwSmS0m</a><br />
<a href="https://prnt.sc/13AuZHnh9XDO" rel="nofollow">https://prnt.sc/13AuZHnh9XDO</a><br />
<a href="https://prnt.sc/j1rJfaiJQzPm" rel="nofollow">https://prnt.sc/j1rJfaiJQzPm</a><br />
<a href="https://prnt.sc/xyZ5PyM_12_D" rel="nofollow">https://prnt.sc/xyZ5PyM_12_D</a><br />
<a href="https://prnt.sc/hM5iJyjIs5dK" rel="nofollow">https://prnt.sc/hM5iJyjIs5dK</a><br />
<a href="https://prnt.sc/ckVg7sIQhtHx" rel="nofollow">https://prnt.sc/ckVg7sIQhtHx</a><br />
<a href="https://prnt.sc/_lnXB9KfYiV8" rel="nofollow">https://prnt.sc/_lnXB9KfYiV8</a><br />
<a href="https://prnt.sc/VACXDXnh7kLq" rel="nofollow">https://prnt.sc/VACXDXnh7kLq</a></p>

<p>💡 What it does<br />
Monitors and lists domains with expiry dates.<br />
Sends email notifications before expiration.<br />
Supports cron automation for daily checks.<br />
Works with any standard WHOIS-compatible TLD.<br />
Clean and simple PHP-based interface.</p>

<p>🧰 Requirements<br />
PHP 8.1+<br />
MariaDB or MySQL<br />
Web server (Apache / Nginx)<br />
Cron for periodic checks</p>

<p>🚀 Features<br />
Self-hosted — your data stays on your server.<br />
Easy setup via SQL import and config file.<br />
Modern, lightweight UI.<br />
CLI and browser access for flexibility.</p>

<p>🧩 Why we built it<br />
We needed a simple internal tool to monitor domains we manage and realized others might find it useful too. No SaaS, no subscriptions — just a clean, open-source PHP app you can host yourself.</p>

<p>🧪 Demo &amp; Contributions<br />
Feel free to test it out or fork it!<br />
Issues, feature requests, and PRs are very welcome.</p>

<p>Would love to hear your thoughts, ideas, or improvements!</p>
]]>
        </description>
    </item>
    <item>
        <title>SYN-ACK reflection attacks</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10482/syn-ack-reflection-attacks</link>
        <pubDate>Mon, 26 Jan 2026 16:51:59 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>cmeerw</dc:creator>
        <guid isPermaLink="false">10482@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Is there anything that can be done to prevent your server from being used in a SYN-ACK reflection attack?</p>

<p>It's just a few packets per seconds, and if you wouldn't look for it, you wouldn't really notice...</p>
]]>
        </description>
    </item>
    <item>
        <title>How to (Ab)Use your KS-LE-B for LLM Models</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10471/how-to-ab-use-your-ks-le-b-for-llm-models</link>
        <pubDate>Fri, 23 Jan 2026 12:10:06 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Neoon</dc:creator>
        <guid isPermaLink="false">10471@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>So, you got one of these KS-LE-B and want to run some LLM models?<br />
Smol short guide.</p>

<p>Grab the dependencies we need.<br />
<code>apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev git ccache python3-pip python3.13-venv -y</code></p>

<p>Add a new user which will run the LLM models.<br />
<code>adduser llm</code></p>

<p>Logon<br />
<code>su llm</code></p>

<p>Grab llama.cpp</p>

<pre><code>cd
git clone https://github.com/ggml-org/llama.cpp.git
</code></pre>

<p>Grab huggingface CLI</p>

<pre><code>curl -LsSf https://hf.co/cli/install.sh | bash
export PATH="/home/llm/.local/bin:$PATH"
</code></pre>

<p>I have made a smol script to initial build / update llama.cpp: <a href="https://pastebin.com/raw/gKYBcXqc" rel="nofollow">https://pastebin.com/raw/gKYBcXqc</a></p>

<pre><code>wget -O update.sh https://pastebin.com/raw/gKYBcXq
chmod +x update.sh
bash update.sh
</code></pre>

<p>Lets download our first model.<br />
<code>hf download unsloth/GLM-4.7-Flash-GGUF --include "*Q4_K_M*" --local-dir models/</code></p>

<p>Either you can run llama.cpp on the CLI.<br />
<code>llama.cpp/llama-cli --jinja --model models/GLM-4.7-Flash-Q4_K_M.gguf</code></p>

<p>or use the Webinterface.<br />
<code>llama.cpp/llama-server --jinja --host 127.0.0.1 --port 8888 --models-dir models/</code></p>

<p>Including a model autoloader, which you can select in the webinterface.<br />
Add a nginx reverse proxy and you set.</p>
]]>
        </description>
    </item>
    <item>
        <title>Blink-based Low End VMs?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10454/blink-based-low-end-vms</link>
        <pubDate>Sun, 18 Jan 2026 22:17:01 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">10454@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Reference: <a href="https://github.com/jart/blink" rel="nofollow">https://github.com/jart/blink</a><br />
See also: <a href="https://news.ycombinator.com/item?id=33675462" rel="nofollow">https://news.ycombinator.com/item?id=33675462</a></p>

<p>Is it too crazy to imagine that Low End VMs could be blink-based?</p>

<pre><code># Clone, compile, and test blink
tom@ultra:~ $ date
Sun Jan 18 20:43:13 UTC 2026
tom@ultra:~ $ uname -rs
FreeBSD 16.0-CURRENT
tom@ultra:~ $ git clone https://github.com/jart/blink.git
Cloning into 'blink'...
remote: Enumerating objects: 11448, done.
remote: Counting objects: 100% (2618/2618), done.
remote: Compressing objects: 100% (255/255), done.
remote: Total 11448 (delta 2471), reused 2363 (delta 2363), pack-reused 8830 (from 2)
Receiving objects: 100% (11448/11448), 19.77 MiB | 34.96 MiB/s, done.
Resolving deltas: 100% (6032/6032), done.
tom@ultra:~ $ tom@ultra:~ $ cd blink
tom@ultra:~/blink $ ./configure # Not yet using --enable-vfs (see note below)
  [ . . . ]
tom@ultra:~/blink $ gmake -j 4
  [ . . . ]
cc -pthread -Wl,-z,noseparate-code -Wl,-z,norelro -Wl,-z,common-page-size=65536,-z,max-page-size=65536 -pie  -Wl,--image-base=0x23000000  o//blink/blinkenlights.o o//blink/blink.a  -L/usr/local/lib -lunwind -L/lib -lz -lrt -lm  -o o//blink/blinkenlights
cc -pthread -Wl,-z,noseparate-code -Wl,-z,norelro -Wl,-z,common-page-size=65536,-z,max-page-size=65536 -pie  -Wl,--image-base=0x23000000  o//blink/blink.o o//blink/blink.a  -L/usr/local/lib -lunwind -L/lib -lz -lrt -lm  -o o//blink/blink
touch o/ok

Your Blink Virtual Machine successfully compiled:

  o//blink/blink
  o//blink/blinkenlights

You may also want to run:

  make check
  doas make install

tom@ultra:~/blink $ cd o/blink
tom@ultra:~/blink/o/blink $ ls -l blink blinkenlights
-rwxr-xr-x  1 tom tom 2767368 Jan 18 20:49 blink
-rwxr-xr-x  1 tom tom 3149200 Jan 18 20:49 blinkenlights
tom@ultra:~/blink/o/blink $ ./blink -v
Blink Virtual Machine 1.1.0 (Sun Jan 18 20:49:28 UTC 2026)
Copyright (c) 2023 Justine Alexandra Roberts Tunney
Blink comes with absolutely NO WARRANTY of any kind.
You may redistribute copies of Blink under the ISC License.
For more information, see the file named LICENSE.
Toolchain: FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
Revision: #621 f006a4fc6f9b8de9272504fdff0dbbe5ce5dc580
Config: ./configure MODE= 
tom@ultra:~/blink/o/blink $ ./blink /home/tom/blink/third_party/cosmo/tinyhello.elf
hello world
tom@ultra:~/blink/o/blink $ 
</code></pre>

<p>From the jart/blink README.md :</p>

<blockquote><div>
  <p>If you want to run a full chroot'd Linux distro and require correct handling of absolute symlinks, displaying of certain values in /proc, and so on, and you don't mind paying a small price in terms of size and performance, you can enable the emulated VFS feature by using the following configuration:</p>
  
  <p><code>./configure --enable-vfs</code></p>
</div></blockquote>
]]>
        </description>
    </item>
    <item>
        <title>Default port 22 closure on SolusVM nodes and need for a proper management panel</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10267/default-port-22-closure-on-solusvm-nodes-and-need-for-a-proper-management-panel</link>
        <pubDate>Sat, 29 Nov 2025 19:17:40 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>colonelserver</dc:creator>
        <guid isPermaLink="false">10267@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>We’re planning to close some default ports (including port 22) on our nodes and VMs, but we need a precise and secure management panel that can handle opening and closing these ports per-IP.</p>

<p>SolusVM2 doesn’t provide this feature in a clean or fully automated way.</p>

<p>Has anyone built a similar workflow or implemented a reliable setup for this scenario? Any guidance or suggestions would be appreciated.</p>
]]>
        </description>
    </item>
    <item>
        <title>AWS announced flat rate network plans</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10209/aws-announced-flat-rate-network-plans</link>
        <pubDate>Wed, 19 Nov 2025 23:57:35 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>havoc</dc:creator>
        <guid isPermaLink="false">10209@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Flat-rate pricing plans include the following features for a simple monthly price:</p>

<ul>
<li>CloudFront CDN</li>
<li>AWS WAF and DDoS protection</li>
<li>Bot management and analytics</li>
<li>Amazon Route 53 DNS</li>
<li>Amazon CloudWatch Logs ingestion</li>
<li>Serverless edge compute</li>
<li>Monthly Amazon S3 storage credits</li>
</ul>

<p><a href="https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-flat-rate-pricing-plans-with-no-overages/" rel="nofollow">https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-flat-rate-pricing-plans-with-no-overages/</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Proxmox 9.1 drops - with OCI support</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10208/proxmox-9-1-drops-with-oci-support</link>
        <pubDate>Wed, 19 Nov 2025 21:58:54 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>havoc</dc:creator>
        <guid isPermaLink="false">10208@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>You can now create LXCs from docker images. It works fine, but tooling is still quite far from usual docker-compose etc.</p>

<p>Behaves sorta like a LXC but the image comes from dockerhub</p>

<p><a href="https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-1" rel="nofollow">https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-9-1</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Anydesk alternative that doesn't cost an arm and a leg</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10126/anydesk-alternative-that-doesnt-cost-an-arm-and-a-leg</link>
        <pubDate>Wed, 29 Oct 2025 20:00:49 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">10126@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I'd like to be able to connect from either Windows or Linux to mostly Windows PCs.</p>

<p>And to have the install be idiot friendly so that the clients can install what they need on their end with yes -&gt; next -&gt; accept (as simple as possible).</p>

<p>AnyDesk ticks all the boxes (with unattended access on top which is handy but not crucial now), but costs too much for my taste, and the price seems to be going up year after years.</p>

<p>So, is there a decent alternative?<br />
I wouldn't mind paying, for as long as it's reasonable.</p>

<p>These guys like Anydesk, Teamviewer and similar ask too much, and they want for a full year (I may need it for a month or two, then not) - but even that would not be a problem if it's not in hundreds of dollars.</p>
]]>
        </description>
    </item>
    <item>
        <title>Rclone backup setup for my 'hit-by-a-truck' protocol</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10122/rclone-backup-setup-for-my-hit-by-a-truck-protocol</link>
        <pubDate>Wed, 29 Oct 2025 07:25:21 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">10122@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>When my spare backup HDD at work died (and the warranty is going to take about a month), I configured encrypted Rclone sync from my PC HDD (source of truth) to a Hetzner storage box.</p>

<p>Made a step-by-step tutorial for my best man - my "hit-by-a-truck" protocol for when (motor)cycling goes wrong.  <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>Any corrections are more than welcome - and if it helps other folks, even better:</p>

<p><a href="https://io.bikegremlin.com/38747/rclone-installation-and-configuration-step-by-step/" rel="nofollow">https://io.bikegremlin.com/38747/rclone-installation-and-configuration-step-by-step/</a></p>

<p>Rclone should work with many cloud storage providers - it is just that Hetzner Storage Box has been reliable for hosting server backups for me over the years, and I was already paying for it, so I used that.</p>
]]>
        </description>
    </item>
    <item>
        <title>Oral History of Ken Thompson -- Computer History Museum -- 4.5 Hour Interview (March 15, 2024)</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10128/oral-history-of-ken-thompson-computer-history-museum-4-5-hour-interview-march-15-2024</link>
        <pubDate>Thu, 30 Oct 2025 03:19:37 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">10128@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><span data-youtube="youtube-OmVHkL0IWk4?autoplay=1"><a rel="nofollow" href="https://www.youtube.com/watch?v=OmVHkL0IWk4"><img src="https://img.youtube.com/vi/OmVHkL0IWk4/0.jpg" width="640" height="385" border="0" alt="image" /></a></span></p>
]]>
        </description>
    </item>
    <item>
        <title>Frans Kaashoek on Xv6 at MIT -- John Lions Distinguished Lecture Series 2025</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10117/frans-kaashoek-on-xv6-at-mit-john-lions-distinguished-lecture-series-2025</link>
        <pubDate>Wed, 29 Oct 2025 00:03:38 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">10117@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><span data-youtube="youtube-uY7CNx-P9ao?autoplay=1"><a rel="nofollow" href="https://www.youtube.com/watch?v=uY7CNx-P9ao"><img src="https://img.youtube.com/vi/uY7CNx-P9ao/0.jpg" width="640" height="385" border="0" alt="image" /></a></span></p>
]]>
        </description>
    </item>
    <item>
        <title>Excessive syslog-ng stats log frequency on debian13 templates</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10115/excessive-syslog-ng-stats-log-frequency-on-debian13-templates</link>
        <pubDate>Tue, 28 Oct 2025 14:23:49 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>jtk</dc:creator>
        <guid isPermaLink="false">10115@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I've seen syslog-ng default configs in some hosting provider debian 13 installs (<code>/etc/syslog-ng/syslog-ng.conf</code>) have this option set: <code>stats(freq(1));</code></p>

<p>This will log syslog-ng daemon stats every second.  This will fill your disk.  Not sure where this config option came from, but it should probably be removed.</p>
]]>
        </description>
    </item>
    <item>
        <title>Just for fun: Installing 2019 Vanilla Forums software on LTS Debian 11 Bullseye in 2025!</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10048/just-for-fun-installing-2019-vanilla-forums-software-on-lts-debian-11-bullseye-in-2025</link>
        <pubDate>Tue, 07 Oct 2025 22:45:49 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">10048@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Thanks to and following the kind suggestions from <a href="https://lowendspirit.com/index.php?p=/profile/nwnuyhs" rel="nofollow">@nwnuyhs</a> <a rel="nofollow" href="https://lowendspirit.com/discussion/comment/219908/#Comment_219908">here at LES,</a> I decided to try installing the 2019 <a rel="nofollow" href="https://github.com/vanilla/vanilla/tree/Vanilla_3.3?tab=readme-ov-file">Version 3.3 of Vanilla Forums</a> on Debian 11 LTS Bullseye.</p>

<p>I am posting here as I go along, just for fun. Besides a few laughs, I also will appreciate friendly suggestions and corrections.</p>

<p>The steps should be, approximately, the same as recommended by <a href="https://lowendspirit.com/index.php?p=/profile/nwnuyhs" rel="nofollow">@nwnuyhs</a>:</p>

<ul>
<li>Get a VPS</li>
<li>Install aapanel</li>
<li>Use aapanel to install nginx, PHP 7.4, and mysql 5.7 database</li>
<li>Download the Vanilla zip</li>
<li>Extract the Vanilla zip in the website root</li>
<li>Visit website URL to install</li>
</ul>
]]>
        </description>
    </item>
    <item>
        <title>How to use Vanilla OSS Release 2025.010 (LTS 2)?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10047/how-to-use-vanilla-oss-release-2025-010-lts-2</link>
        <pubDate>Tue, 07 Oct 2025 16:42:59 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>nwnuyhs</dc:creator>
        <guid isPermaLink="false">10047@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hass Anyone used it?<br />
OSS Release 2025.010 (LTS 2)<br />
<a href="https://github.com/vanilla/vanilla/releases/tag/2025.010" rel="nofollow">https://github.com/vanilla/vanilla/releases/tag/2025.010</a><br />
It's not released version，it's a unpacked version.<br />
Can someone tell me how to use it?</p>
]]>
        </description>
    </item>
    <item>
        <title>Post some YABS from your servers i go first :)</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10001/post-some-yabs-from-your-servers-i-go-first</link>
        <pubDate>Tue, 23 Sep 2025 21:53:10 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Take</dc:creator>
        <guid isPermaLink="false">10001@/index.php?p=/discussions</guid>
        <description><![CDATA[<h2>Basic System Information:</h2>

<p>Uptime     : 0 days, 0 hours, 0 minutes<br />
Processor  : AMD Ryzen 9 9950X 16-Core Processor<br />
CPU cores  : 2 @ 4291.912 MHz<br />
AES-NI     : ✔ Enabled<br />
VM-x/AMD-V : ✔ Enabled<br />
RAM        : 3.8 GiB<br />
Swap       : 1.5 GiB<br />
Disk       : 39.9 GiB<br />
Distro     : Debian GNU/Linux 12 (bookworm)<br />
Kernel     : 6.1.0-40-amd64<br />
VM Type    : KVM<br />
IPv4/IPv6  : ✔ Online / ✔ Online</p>

<h2>fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):</h2>

<table>
<thead>
<tr>
  <th>Block Size</th>
  <th>4k            (IOPS)</th>
  <th>64k           (IOPS)</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Read</td>
  <td>615.09 MB/s (153.7k)</td>
  <td>1.62 GB/s    (25.4k)</td>
</tr>
<tr>
  <td>Write</td>
  <td>616.71 MB/s (154.1k)</td>
  <td>1.63 GB/s    (25.5k)</td>
</tr>
<tr>
  <td>Total</td>
  <td>1.23 GB/s   (307.9k)</td>
  <td>3.26 GB/s    (51.0k)</td>
</tr>
<tr>
  <td></td>
  <td></td>
  <td></td>
</tr>
<tr>
  <td>Block Size</td>
  <td>512k          (IOPS)</td>
  <td>1m            (IOPS)</td>
</tr>
<tr>
  <td>------</td>
  <td>---            ----</td>
  <td>----           ----</td>
</tr>
<tr>
  <td>Read</td>
  <td>2.23 GB/s     (4.3k)</td>
  <td>2.81 GB/s     (2.7k)</td>
</tr>
<tr>
  <td>Write</td>
  <td>2.35 GB/s     (4.6k)</td>
  <td>3.00 GB/s     (2.9k)</td>
</tr>
<tr>
  <td>Total</td>
  <td>4.59 GB/s     (8.9k)</td>
  <td>5.82 GB/s     (5.6k)</td>
</tr>
</tbody>
</table>

<h2>iperf3 Network Speed Tests (IPv4):</h2>

<table>
<thead>
<tr>
  <th>Provider</th>
  <th>Location (Link)</th>
  <th>Send Speed</th>
  <th>Recv Speed</th>
  <th>Ping</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Clouvider</td>
  <td>London, UK (10G)</td>
  <td>4.69 Gbits/sec</td>
  <td>5.13 Gbits/sec</td>
  <td>9.16 ms</td>
</tr>
<tr>
  <td>Eranium</td>
  <td>Amsterdam, NL (100G)</td>
  <td>17.7 Gbits/sec</td>
  <td>13.3 Gbits/sec</td>
  <td>3.38 ms</td>
</tr>
<tr>
  <td>Uztelecom</td>
  <td>Tashkent, UZ (10G)</td>
  <td>2.08 Gbits/sec</td>
  <td>869 Mbits/sec</td>
  <td>97.0 ms</td>
</tr>
<tr>
  <td>Leaseweb</td>
  <td>Singapore, SG (10G)</td>
  <td>655 Mbits/sec</td>
  <td>887 Mbits/sec</td>
  <td>159 ms</td>
</tr>
<tr>
  <td>Clouvider</td>
  <td>Los Angeles, CA, US (10G)</td>
  <td>806 Mbits/sec</td>
  <td>482 Mbits/sec</td>
  <td>153 ms</td>
</tr>
<tr>
  <td>Leaseweb</td>
  <td>NYC, NY, US (10G)</td>
  <td>2.02 Gbits/sec</td>
  <td>1.99 Gbits/sec</td>
  <td>79.8 ms</td>
</tr>
<tr>
  <td>Edgoo</td>
  <td>Sao Paulo, BR (1G)</td>
  <td>1.02 Gbits/sec</td>
  <td>272 Mbits/sec</td>
  <td>184 ms</td>
</tr>
</tbody>
</table>

<h2>iperf3 Network Speed Tests (IPv6):</h2>

<table>
<thead>
<tr>
  <th>Provider</th>
  <th>Location (Link)</th>
  <th>Send Speed</th>
  <th>Recv Speed</th>
  <th>Ping</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Clouvider</td>
  <td>London, UK (10G)</td>
  <td>7.52 Gbits/sec</td>
  <td>7.70 Gbits/sec</td>
  <td>9.17 ms</td>
</tr>
<tr>
  <td>Eranium</td>
  <td>Amsterdam, NL (100G)</td>
  <td>10.2 Gbits/sec</td>
  <td>16.8 Gbits/sec</td>
  <td>3.39 ms</td>
</tr>
<tr>
  <td>Uztelecom</td>
  <td>Tashkent, UZ (10G)</td>
  <td>1.56 Gbits/sec</td>
  <td>1.90 Gbits/sec</td>
  <td>97.1 ms</td>
</tr>
<tr>
  <td>Leaseweb</td>
  <td>Singapore, SG (10G)</td>
  <td>1.07 Gbits/sec</td>
  <td>1.13 Gbits/sec</td>
  <td>--</td>
</tr>
<tr>
  <td>Clouvider</td>
  <td>Los Angeles, CA, US (10G)</td>
  <td>1.03 Gbits/sec</td>
  <td>1.17 Gbits/sec</td>
  <td>153 ms</td>
</tr>
<tr>
  <td>Leaseweb</td>
  <td>NYC, NY, US (10G)</td>
  <td>2.10 Gbits/sec</td>
  <td>2.33 Gbits/sec</td>
  <td>79.8 ms</td>
</tr>
<tr>
  <td>Edgoo</td>
  <td>Sao Paulo, BR (1G)</td>
  <td>564 Mbits/sec</td>
  <td>964 Mbits/sec</td>
  <td>184 ms</td>
</tr>
</tbody>
</table>

<h2>Geekbench 6 Benchmark Test:</h2>

<p>Test            | Value<br />
                |<br />
Single Core     | 3238<br />
Multi Core      | 5698<br />
Full Test       | <a href="https://browser.geekbench.com/v6/cpu/14022968" rel="nofollow">https://browser.geekbench.com/v6/cpu/14022968</a></p>
]]>
        </description>
    </item>
    <item>
        <title>A Modern Looking Glass Panel for Multi-Line Monitoring</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9809/a-modern-looking-glass-panel-for-multi-line-monitoring</link>
        <pubDate>Thu, 31 Jul 2025 11:02:49 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>sayyiku</dc:creator>
        <guid isPermaLink="false">9809@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Recently, we needed to perform four-line monitoring tests for a client. After searching extensively online, we discovered that most existing Looking Glass panels were outdated PHP-based solutions—either with limited functionality, obsolete UI, or long-abandoned projects. None could meet our needs.</p>

<p>So, we decided to build our own.</p>

<p>Together with a few friends, we developed NetMirror, a brand-new Looking Glass project aimed at providing a more modern, user-friendly solution for data centers, oneman operations, and networking enthusiasts.</p>

<p>Special thanks to wikihost-opensource and Hybula for the inspiration and architecture ideas their projects provided.</p>

<h2>🚀 What is NetMirror?</h2>

<p>NetMirror is a feature-rich, visually appealing, and modern Looking Glass server-side panel designed for displaying and testing multi-region network nodes. It supports essential networking tools such as ping, traceroute, mtr, speedtest, and more. All nodes are displayed in a unified interface to help users evaluate latency, stability, and performance across different routes.</p>

<h2>🔗 Live Demo</h2>

<p>GitHub Repo: <a href="https://github.com/catcat-blog/NetMirror" rel="nofollow">https://github.com/catcat-blog/NetMirror</a> (Feel free to star 🌟)</p>

<p>Live Demo: <a href="https://lg.catcat.cloud/" rel="nofollow">https://lg.catcat.cloud/</a></p>

<h2>🧩 Features</h2>

<p>Modern UI: Built with Vue 3 and TailwindCSS for a responsive, clean design.<br />
Built-in Tools: Integrated with Ping, iPerf3, Speedtest, BGP information, and more.<br />
Live Traffic Monitoring: See real-time network interface usage.<br />
Interactive Shell: Simulated terminal for basic diagnostics.<br />
Easy Deployment: One-command Docker-based deployment.<br />
Customizable: Configure server info and features via environment variables.<br />
Multi-Node Support: Supports master/slave node grouping for geographic flexibility.<br />
Security First: Only the panel and necessary endpoints are exposed. Nodes communicate securely via gRPC.</p>

<h2>UI Preview</h2>

<p><img src="https://cdn.nodeimage.com/i/vBxfVBoPW6jZPk9vt5OBlJVKwKMAuLYm.webp" alt="753AB0EA840F8C3A8C54F3BD84593D8E.png" /><br />
<img src="https://cdn.nodeimage.com/i/XMRVzjvmT6ayQhtidLWuPvi6RIVQt68Y.webp" alt="image-45.png" /><br />
<img src="https://cdn.nodeimage.com/i/cEdciFUuvuGB83lxlKauDNIUojXAex42.avif" alt="image-46-scaled.avif" /><br />
<img src="https://cdn.nodeimage.com/i/U6VoTbb8zMKER1jsIU0G5UTDXKaILrNq.avif" alt="image-47-scaled.avif" /><br />
<img src="https://cdn.nodeimage.com/i/HoCi87eKXLPu9xYtMlDUJ2smh61s8v6V.avif" alt="image-48-scaled.avif" /><br />
<img src="https://cdn.nodeimage.com/i/S9JHtVcuwT30zBKLxQKzv60O1yPXNC1T.avif" alt="image-49-scaled.avif" /><br />
<img src="https://cdn.nodeimage.com/i/tCKPLRzHuNTZtE1QVdzzCPfSH1nYqnST.webp" alt="image-51.png" /><br />
<img src="https://cdn.nodeimage.com/i/V6eWR2JXGg5XUtbMpslcPeIrdZ2kDvyX.webp" alt="image-50.png" /><br />
<img src="https://cdn.nodeimage.com/i/wrBJ748ajHIK2MQQevmU99yJsqEGvjMO.webp" alt="image-52.png" /><br />
<img src="https://cdn.nodeimage.com/i/ms7BTfnORqjtT7GjoeljvrxiXJApV3xW.webp" alt="image-53.png" /></p>

<h2>📦 Deployment (Docker)</h2>

<p>Clone the Repository</p>

<pre><code>git clone https://github.com/Yuri-NagaSaki/NetMirror.git cd NetMirror
</code></pre>

<p>创建环境文件<br />
复制环境文件示例以创建您自己的配置。</p>

<pre><code>cp .env.example .env
</code></pre>

<p>If .env.example does not exist, simply create a .env file and refer to the documentation or table of variables.</p>

<p>Customize Config (Optional)<br />
Edit .env to set your server region, public IP, and other configurations.</p>

<p>Here’s a sample docker-compose.yml snippet:</p>

<pre><code>services:
  als:
    image: soyorins/netmirror:latest
    container_name: looking-glass-e
    restart: always
    network_mode: host
    user: root
    env_file:
      - .env
    volumes:
      - ./data:/data
      - ./.air.toml:/app/.air.toml
    healthcheck:
      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:${HTTP_PORT:-80}/"]
      interval: 30s
      timeout: 10s
      retries: 3
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

</code></pre>

<pre><code>docker compose up -d 
</code></pre>

<p>Once running, access your instance at:<br />
<a href="http://:3000" rel="nofollow">http://:3000</a><br />
(default port can be modified using the HTTP_PORT environment variable)</p>
]]>
        </description>
    </item>
    <item>
        <title>Comprehensive Speedtest Script | nws.sh | Share your bench</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/5812/comprehensive-speedtest-script-nws-sh-share-your-bench</link>
        <pubDate>Wed, 26 Apr 2023 20:05:36 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>sh97</dc:creator>
        <guid isPermaLink="false">5812@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hi All,<br />
I present to you yet another damn speed test script. I understand there are many speed test scripts out there, but ... well I did it anyway. I've been working on this for a couple of months now and feel it is ready for public use now.<br />
I built this on top of Teddysuns bench.sh - adding my code and removing unnecessary stuff.</p>

<p>All information can be found on <a rel="nofollow" href="https://nws.sh/" title="https://nws.sh/">https://nws.sh/</a> <br />
Special Thanks and shout-out to <a rel="nofollow" href="https://incognet.io/" title="IncogNET">IncogNET </a> for sponsoring the awesome domain.</p>

<p><strong>Test Locations</strong><br />
* North America<br />
* South America<br />
* Europe<br />
* Asia<br />
* Africa<br />
* Australia<br />
* GCC Middle East<br />
* India<br />
* China<br />
* Iran<br />
* Indonesia<br />
* More coming soon!</p>

<p><strong>Usage</strong><br />
For Global Test</p>

<pre><code>wget -qO- nws.sh | bash
</code></pre>

<p>For Regional Test</p>

<pre><code>curl -sL nws.sh | bash -s -- -r region_name
</code></pre>

<p>region_name = na, sa, eu, asia, africa, au, middle-east, india, china, iran, indonesia</p>

<p><strong>Global Test Sample Output</strong></p>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz
 CPU Cores          : 2 @ 2593.992 MHz
 CPU Cache          : 35840 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 30.0 GB (7.8 GB Used)
 Total RAM          : 2.8 GB (729.9 MB Used)
 System uptime      : 2 days, 23 hour 11 min
 Load average       : 0.39, 0.25, 0.24
 OS                 : Ubuntu 22.04.3 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.15.0-83-generic
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : Redoubt Networks
 ASN                : AS400304 REDOUBT NETWORKS
 Host               : Redoubt Networks
 Location           : Spokane, Washington-WA, United States
---------------------------------------------------------------------------
 Speedtest.net (Region: GLOBAL)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Crunchbits, LLC 

 Nearest          16.96 ms    N/A     941.95 Mbps    1015.10 Mbps   Pendleton Fiber - Pendleton, OR 

 Kochi, IN        217.95 ms   0.0%    585.28 Mbps    373.14 Mbps    Asianet Broadband - Cochin 
 Bangalore, IN    253.82 ms   0.0%    748.31 Mbps    372.69 Mbps    Bharti Airtel Ltd - Bangalore 
 Chennai, IN      274.76 ms   N/A     809.48 Mbps    396.58 Mbps    Jio - Chennai 
 Mumbai, IN       254.87 ms   0.0%    865.36 Mbps    322.25 Mbps    i3D.net - Mumbai 
 Delhi, IN        274.26 ms   0.0%    581.84 Mbps    313.11 Mbps    Tata Teleservices Ltd - New Delhi 

 Seattle, US      10.26 ms    0.0%    928.17 Mbps    1003.84 Mbps   Ziply Fiber - Seattle, WA 
 Los Angeles, US  35.94 ms    0.0%    885.51 Mbps    1020.57 Mbps   ReliableSite Hosting - Los Angeles, CA 
 Dallas, US       68.50 ms    0.0%    855.47 Mbps    1098.01 Mbps   Hivelocity - Dallas, TX 
 Miami, US        89.48 ms    0.0%    812.07 Mbps    1078.39 Mbps   AT&amp;T - Miami, FL 
 New York, US     82.31 ms    0.0%    950.73 Mbps    1091.45 Mbps   GSL Networks - New York, NY 
 Toronto, CA      76.81 ms    0.0%    888.84 Mbps    1102.13 Mbps   Rogers - Toronto, ON 

 London, UK       133.49 ms   0.0%    974.81 Mbps    819.59 Mbps    VeloxServ Communications - London 
 Amsterdam, NL    142.53 ms   0.0%    978.69 Mbps    793.53 Mbps    31173 Services AB - Amsterdam 
 Paris, FR        163.76 ms   N/A     984.88 Mbps    468.80 Mbps    Axione - Paris 
 Frankfurt, DE    147.25 ms   0.0%    925.05 Mbps    541.13 Mbps    23M GmbH - Frankfurt am Main 
 Warsaw, PL       186.08 ms   0.0%    663.15 Mbps    480.32 Mbps    UPC Polska - Warszawa 
 Bucharest, RO    174.88 ms   0.0%    737.35 Mbps    312.08 Mbps    Vodafone Romania Fixed – Bucharest - Bucharest 

 Jeddah, SA       203.45 ms   0.0%    890.21 Mbps    517.63 Mbps    Saudi Telecom Company 
 Dubai, AE        256.86 ms   0.0%    821.44 Mbps    462.51 Mbps    du - Dubai  
 Fujairah, AE     253.46 ms   0.0%    935.59 Mbps    453.69 Mbps    ETISALAT-UAE - Fujairah 

 Tokyo, JP        115.01 ms   N/A     856.33 Mbps    654.26 Mbps    fdcservers.net - Tokyo 
 Shanghai, CU-CN  191.28 ms   0.0%    578.51 Mbps    603.30 Mbps    China Unicom 5G - Shanghai 
 Nanjing, CT-CN   206.55 ms   0.0%    694.05 Mbps    9.81 Mbps      China Telecom JiangSu 5G - Nanjing 
 Hong Kong, CN    156.69 ms   N/A     896.45 Mbps    584.13 Mbps    STC - Hong Kong 
 Singapore, SG    168.47 ms   0.0%    873.03 Mbps    554.05 Mbps    i3D.net - Singapore 
 Jakarta, ID      203.15 ms   0.0%    619.90 Mbps    271.19 Mbps    PT. Telekomunikasi Indonesia - Jakarta 
---------------------------------------------------------------------------
 Avg DL Speed       : 825.27 Mbps
 Avg UL Speed       : 619.01 Mbps

 Total DL Data      : 32.31 GB
 Total UL Data      : 23.53 GB
 Total Data         : 55.84 GB
---------------------------------------------------------------------------
 Duration           : 14 min 6 sec
 System Time        : 12/09/2023 - 20:01:16 IST
 Total Script Runs  : 23054
---------------------------------------------------------------------------
</pre>

<p><strong>Regional Test Sample Output</strong><br />
</p><details><br />
<summary> <strong>NA: <a href="https://result.network-speed.xyz/r/1694522045_QVORYM_NA.txt" rel="nofollow">https://result.network-speed.xyz/r/1694522045_QVORYM_NA.txt</a></strong></summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : AMD Ryzen 9 3900X 12-Core Processor
 CPU Cores          : 1 @ 3799.998 MHz
 CPU Cache          : 512 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 19.6 GB (2.7 GB Used)
 Total RAM          : 457.8 MB (73.2 MB Used)
 Total Swap         : 1024.0 MB (8.5 MB Used)
 System uptime      : 11 days, 19 hour 16 min
 Load average       : 0.00, 0.00, 0.00
 OS                 : Debian GNU/Linux 12
 Arch               : x86_64 (64 Bit)
 Kernel             : 6.1.0-11-amd64
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : IncogNET LLC
 ASN                : AS210630 IncogNET LLC
 Host               : Incognet LLC
 Location           : Coeur d'Alene, Idaho-ID, United States
 Location (IPv4)    : Liberty Lake, Washington, US
---------------------------------------------------------------------------
 Speedtest.net (Region: NORTH AMERICA)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: IncogNET LLC 

 Nearest          10.27 ms    0.0%    4388.07 Mbps   2078.65 Mbps   Intechtel - Managed IT Services - Coeur d'Alene, ID 

 Vancouver, BC    14.23 ms    N/A     4254.83 Mbps   1868.32 Mbps   TELUS - Vancouver, BC 
 Calgary, AB      25.67 ms    N/A     4364.03 Mbps   951.55 Mbps    Shaw Communications - Calgary, AB 
 Winnipeg, MB     53.87 ms    0.0%    4272.62 Mbps   450.01 Mbps    Voyageur Internet - Winnipeg, MB 
 Toronto, ON      57.44 ms    0.0%    4182.94 Mbps   426.85 Mbps    Bell Canada - Toronto, ON 
 Montreal, QC     89.83 ms    0.0%    4156.79 Mbps   418.51 Mbps    Rogers Wireless - Montréal, QC 

 New York, NY     77.75 ms    0.0%    3224.79 Mbps   517.52 Mbps    Surfshark Ltd - New York, NY 
 Ashburn, VA      69.73 ms    0.0%    4216.00 Mbps   460.40 Mbps    Rackdog - Ashburn, VA 
 Charlotte, NC    78.39 ms    0.0%    4039.11 Mbps   506.61 Mbps    Windstream - Charlotte, NC 
 Atlanta, GA      70.17 ms    0.0%    3591.94 Mbps   302.66 Mbps    i3D.net - Atlanta, GA 
 Miami, FL        90.52 ms    0.0%    2582.08 Mbps   495.01 Mbps    AT&amp;T - Miami, FL 
 Dallas, TX       68.19 ms    0.0%    3145.09 Mbps   445.25 Mbps    Hivelocity - Dallas, TX 
 Houston, TX      64.35 ms    0.0%    3661.62 Mbps   514.67 Mbps    Ezee Fiber - Houston, TX 
 Kansas, MO       51.98 ms    0.0%    3731.05 Mbps   824.11 Mbps    Xiber LLC - Kansas City, MO 
 Minneapolis, MN  42.24 ms    0.0%    4137.50 Mbps   611.64 Mbps    US Internet - Minneapolis, MN 
 Chicago, IL      57.96 ms    0.0%    3385.17 Mbps   563.70 Mbps    Enzu.com - Chicago, IL 
 Cleveland, OH    65.96 ms    0.0%    3628.61 Mbps   628.28 Mbps    Windstream - Cleveland, OH 
 Albuquerque, NM  52.43 ms    N/A     4213.14 Mbps   647.14 Mbps    Comcast - Albuquerque, NM 
 Denver, CO       37.62 ms    0.0%    4383.44 Mbps   524.57 Mbps    T-Mobile Fiber | Intrepid - Denver, CO 
 Portland, OR     14.54 ms    N/A     4342.97 Mbps   1669.50 Mbps   CenturyLink - Portland, OR 
 Las Vegas, NV    37.90 ms    N/A     3785.99 Mbps   997.47 Mbps    Dish Wireless - Las Vegas, NV 
 Salt Lake, UT    52.41 ms    N/A     3613.92 Mbps   837.56 Mbps    Novva Data Centers - Salt Lake City, UT 
 Phoenix, AZ      51.21 ms    0.0%    4432.55 Mbps   757.47 Mbps    Xiber LLC - Phoenix, AZ 
 Los Angeles, CA  35.60 ms    0.0%    4147.31 Mbps   921.31 Mbps    ReliableSite Hosting - Los Angeles, CA 
 Santa Clara, CA  31.68 ms    0.0%    2812.62 Mbps   926.44 Mbps    AT&amp;T - Santa Clara, CA 
 San Jose, CA     30.04 ms    0.0%    3712.56 Mbps   1099.06 Mbps   Misaka Network, Inc. - San Jose, CA 
 Seattle, WA      11.32 ms    0.0%    4219.65 Mbps   2260.36 Mbps   Misaka Network, Inc. - Seattle, WA 

 Hermosillo, MX   65.15 ms    0.0%    3763.50 Mbps   595.44 Mbps    Megacable - Hermosillo 
 Guadalajara, MX  87.52 ms    0.0%    1875.36 Mbps   449.49 Mbps    AT&amp;T México - Guadalajara 
 Mexico City, MX  79.24 ms    N/A     3946.76 Mbps   489.20 Mbps    INFINITUM - Mexico City 
 Merida, MX       FAILED                                                        
---------------------------------------------------------------------------
 Avg DL Speed       : 3807.07 Mbps
 Avg UL Speed       : 807.96 Mbps

 Total DL Data      : 161.70 GB
 Total UL Data      : 35.72 GB
 Total Data         : 197.42 GB
---------------------------------------------------------------------------
 Duration           : 13 min 59 sec
 System Time        : 12/09/2023 - 18:04:05 IST
 Total Script Runs  : 23044
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>SA: <a href="https://result.network-speed.xyz/r/1694528715_JFU3T1_SA.txt" rel="nofollow">https://result.network-speed.xyz/r/1694528715_JFU3T1_SA.txt</a></strong> </summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
 CPU Cores          : 1 @ 2099.998 MHz
 CPU Cache          : 16384 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 7.2 GB (642.4 MB Used)
 Total RAM          : 244.1 MB (43.0 MB Used)
 System uptime      : 0 days, 15 hour 53 min
 Load average       : 0.14, 0.15, 0.10
 OS                 : Debian GNU/Linux 12
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.15.0-83-generic
 Virtualization     : LXC
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : Zappie Host LLC
 ASN                : AS61138 Zappie Host LLC
 Host               : MicroLXC
 Location           : Valdivia, Los Ríos Region-LR, Chile
---------------------------------------------------------------------------
 Speedtest.net (Region: SOUTH AMERICA)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Zappie Host - Valdivia, Chile 

 Nearest          74.64 ms    0.0%    4.91 Mbps      48.20 Mbps     Globalconnect SpA - Pucon 

 Sao Paulo, BR    116.76 ms   0.0%    3.77 Mbps      45.46 Mbps     i3D.net - São Paulo 
 Rio, BR          124.38 ms   0.0%    3.27 Mbps      49.00 Mbps     TIM Brasil - Rio de Janeiro 
 Salvador, BR     262.67 ms   0.0%    4.92 Mbps      35.13 Mbps     Claro net vírtua - Salvador 
 Buenos, AR       196.04 ms   0.0%    1.06 Mbps      46.95 Mbps     Claro - Buenos Aires 
 Buenos, AR       89.43 ms    N/A     3.08 Mbps      48.60 Mbps     fdcservers.net - Buenos Aires 
 Santiago, CL     70.83 ms    N/A     2.75 Mbps      50.09 Mbps     Claro Chile - Santiago 
 Lima, PE         167.48 ms   0.0%    6.10 Mbps      41.54 Mbps     Claro Perú - Lima 
 Quito, EC        181.04 ms   N/A     4.17 Mbps      50.65 Mbps     Movistar Ecuador - Quito 
 Caracas, VE      208.42 ms   0.0%    2.11 Mbps      48.69 Mbps     WAVE.COM.VE - Caracas 
 Bogota, CO       213.21 ms   0.0%    13.68 Mbps     47.18 Mbps     Claro Colombia - Bogotá 
---------------------------------------------------------------------------
 Avg DL Speed       : 4.53 Mbps
 Avg UL Speed       : 46.50 Mbps

 Total DL Data      : 0.07 GB
 Total UL Data      : 0.66 GB
 Total Data         : 0.72 GB
---------------------------------------------------------------------------
 Duration           : 6 min 17 sec
 System Time        : 12/09/2023 - 14:25:13 UTC
 Total Script Runs  : 23053
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>EU: <a href="https://result.network-speed.xyz/r/1694529083_9KFDDK_EU.txt" rel="nofollow">https://result.network-speed.xyz/r/1694529083_9KFDDK_EU.txt</a></strong></summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel Core Processor (Broadwell, IBRS)
 CPU Cores          : 1 @ 2596.990 MHz
 CPU Cache          : 16384 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 14.9 GB (2.8 GB Used)
 Total RAM          : 926.1 MB (308.6 MB Used)
 Total Swap         : 512.0 MB (1.1 MB Used)
 System uptime      : 15 days, 1 hour 7 min
 Load average       : 0.03, 0.01, 0.00
 OS                 : Debian GNU/Linux 12
 Arch               : x86_64 (64 Bit)
 Kernel             : 6.1.0-11-amd64
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv4
 ISP                : ColocationX Ltd.
 ASN                : AS208046 ColocationX Ltd.
 Host               : Alerdium LLC
 Location           : Amstelveen, North Holland-NH, Netherlands
---------------------------------------------------------------------------
 Speedtest.net (Region: EUROPE)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: ColocationX Ltd. 

 Nearest          73.28 ms    0.0%    1644.95 Mbps   39.66 Mbps     Bakcell LTD - Baku 

 London, UK       15.79 ms    0.0%    1931.65 Mbps   2924.81 Mbps   M247 Ltd - London 
 Edinburgh, UK    27.08 ms    N/A     1472.68 Mbps   2686.71 Mbps   Vodafone UK - Edinburgh 
 Dublin, IE       17.24 ms    0.0%    1888.37 Mbps   3055.84 Mbps   Three Ireland - Dublin 
 Amsterdam, NL    3.84 ms     0.0%    1945.95 Mbps   3714.75 Mbps   GSL Networks - Amsterdam 
 Dronten, NL      6.66 ms     0.0%    1985.75 Mbps   3897.00 Mbps   Serverius Connectivity - Amsterdam 
 Paris, FR        15.08 ms    0.0%    2050.03 Mbps   3300.45 Mbps   ORANGE FRANCE - Paris 
 Marseille, FR    23.75 ms    0.0%    1826.46 Mbps   2942.31 Mbps   GSL Networks - Marseille 
 Madrid, ES       34.74 ms    0.0%    1895.49 Mbps   2574.43 Mbps   Orange - Jazztel - Madrid 
 Barcelona, ES    30.87 ms    0.0%    2052.28 Mbps   1541.53 Mbps   Adamo - Barcelona 
 Lisbon, PT       42.21 ms    0.0%    2009.91 Mbps   1894.51 Mbps   Edgoo Networks - Lisbon 
 Rome, IT         30.46 ms    0.0%    2056.76 Mbps   2017.35 Mbps   TIM SpA - Rome 
 Milan, IT        25.00 ms    0.0%    1940.20 Mbps   1986.02 Mbps   Vodafone IT - Milan 
 Zurich, CH       20.26 ms    0.0%    2017.49 Mbps   2801.86 Mbps   Sunrise Communication AG - Zurich 
 Frankfurt, DE    10.73 ms    0.0%    2126.02 Mbps   1660.52 Mbps   23M GmbH - Frankfurt am Main 
 Berlin, DE       28.87 ms    0.0%    1839.04 Mbps   2826.73 Mbps   Misaka Network, Inc. - Berlin 
 Vienna, AT       22.50 ms    0.0%    1820.73 Mbps   2607.84 Mbps   A1 Telekom Austria AG - Vienna 
 Budapest, HU     23.51 ms    0.0%    1517.32 Mbps   3230.84 Mbps   ATW Internet Kft. - Budapest 
 Gdansk, PL       29.24 ms    0.0%    1741.14 Mbps   2977.61 Mbps   T-Mobile Polska S.A. - Gdańsk 
 Warsaw, PL       29.21 ms    0.0%    1713.35 Mbps   2730.05 Mbps   Orange Polska S.A. - Warsaw 
 Lviv, UA         31.13 ms    0.0%    1980.51 Mbps   2113.50 Mbps   Kyivstar - Lviv 
 Kyiv, UA         38.99 ms    0.0%    1998.03 Mbps   1155.71 Mbps   o3 - Kyiv   
 Minsk, BY        32.83 ms    0.0%    1912.54 Mbps   1838.12 Mbps   A1 - Minsk  
 Bucharest, RO    41.31 ms    0.0%    1956.94 Mbps   836.68 Mbps    Orange Romania Communications - Bucharest 
 Iasi, RO         44.25 ms    0.0%    1903.17 Mbps   1545.38 Mbps   Digi        
 Helsinki, FI     26.40 ms    0.0%    2041.33 Mbps   2465.11 Mbps   Elisa Oyj - Helsinki 
 Stockholm, SE    24.10 ms    0.0%    2127.57 Mbps   3052.27 Mbps   i3D.net - Stockholm 
 Oslo, NO         22.86 ms    0.0%    1922.89 Mbps   2091.63 Mbps   Speedtest.net - Oslo 
 Moscow, RU       46.09 ms    0.0%    1897.71 Mbps   2170.97 Mbps   Rostelecom - Moscow 
 Petersburg, RU   38.16 ms    0.0%    2005.69 Mbps   1745.40 Mbps   MTS OJSC - Saint Petersburg 
 Istanbul, TR     51.45 ms    0.0%    2047.25 Mbps   1934.34 Mbps   Turkcell - Istanbul 
 Tbilisi, GE      75.43 ms    N/A     1889.77 Mbps   1138.05 Mbps   Silknet JSC - Tbilisi 
---------------------------------------------------------------------------
 Avg DL Speed       : 1911.22 Mbps
 Avg UL Speed       : 2296.81 Mbps

 Total DL Data      : 101.10 GB
 Total UL Data      : 100.78 GB
 Total Data         : 201.88 GB
---------------------------------------------------------------------------
 Duration           : 15 min 21 sec
 System Time        : 12/09/2023 - 20:01:51 IST
 Total Script Runs  : 23055
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>Asia: <a href="https://result.network-speed.xyz/r/1694528694_SIR554_ASIA.txt" rel="nofollow">https://result.network-speed.xyz/r/1694528694_SIR554_ASIA.txt</a></strong></summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz
 CPU Cores          : 4 @ 2199.986 MHz
 CPU Cache          : 16384 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 55.1 GB (33.0 GB Used)
 Total RAM          : 7.8 GB (491.2 MB Used)
 Total Swap         : 4.0 GB (0 Used)
 System uptime      : 12 days, 7 hour 9 min
 Load average       : 0.03, 0.10, 0.13
 OS                 : Ubuntu 22.04.3 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.15.0-82-generic
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : Leaseweb Singapore
 ASN                : AS59253 Leaseweb Asia Pacific pte. ltd.
 Host               : Leaseweb Asia Pacific pte. ltd
 Location           : Singapore, Central Singapore-01, Singapore
---------------------------------------------------------------------------
 Speedtest.net (Region: ASIA)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Leaseweb Asia 

 Nearest          0.68 ms     0.0%    5810.81 Mbps   8619.99 Mbps   MyRepublic Singapore - Singapore 

 Mumbai, IN       64.79 ms    0.0%    4330.23 Mbps   139.85 Mbps    i3D.net - Mumbai 
 Chennai, IN      36.73 ms    N/A     4566.77 Mbps   2205.66 Mbps   Jio - Chennai 
 Bangalore, IN    166.69 ms   0.0%    3705.27 Mbps   484.60 Mbps    Bharti Airtel Ltd - Bangalore 
 Singapore, SG    0.83 ms     0.0%    5770.87 Mbps   8515.09 Mbps   MyRepublic Singapore - Singapore 
 Singapore, SG    3.25 ms     N/A     7290.37 Mbps   1793.29 Mbps   StarHub Ltd - Singapore 
 Tokyo, JP        75.96 ms    0.0%    5597.32 Mbps   1122.32 Mbps   Rakuten Mobile, Inc - Tokyo 
 China Telecom    435.69 ms   11.9%   94.92 Mbps     0.66 Mbps      湖南电信5G - Changsha 
 China Unicom     237.32 ms   N/A     2.87 Mbps      0.97 Mbps      湖南联通5G - Changsha 
 China Mobile     FAILED                                                        
 Hong Kong, CN    36.47 ms    0.0%    3687.67 Mbps   2375.37 Mbps   i3D.net - Hong Kong 
 Karachi, PK      76.91 ms    0.0%    2397.50 Mbps   503.05 Mbps    JAZZ - Karachi 
 Islamabad, PK    105.24 ms   N/A     932.61 Mbps    253.79 Mbps    Telenor Pakistan - Islamabad 
 Kathmandu, NP    210.52 ms   0.0%    928.88 Mbps    130.51 Mbps    Nepal Telecom - Hetauda 
 Colombo, SL      49.18 ms    N/A     2843.06 Mbps   1837.13 Mbps   Airtel Lanka - Colombo 
 Dhaka, BD        50.83 ms    N/A     3888.60 Mbps   1455.85 Mbps   Grameenphone Ltd - Dhaka 
 Bangkok, TH      23.73 ms    0.0%    3404.93 Mbps   3434.33 Mbps   3BB - Bangkok 
 Ho Chi Minh, VN  83.16 ms    0.0%    1243.44 Mbps   1339.76 Mbps   Viettel Network - Ho Chi Minh 
 Hanoi, VN        64.52 ms    22.7%   91.27 Mbps     0.67 Mbps      Vietnamobile - Hanoi 
 Manila, PH       39.39 ms    0.0%    4040.06 Mbps   1414.18 Mbps   PLDT - Manila 
 Tapei, TW        184.05 ms   N/A     2980.94 Mbps   485.46 Mbps    Chunghwa Mobile - Taipei 
 Jakarta, ID      12.63 ms    0.0%    3364.26 Mbps   5722.45 Mbps   Biznet Networks - Jakarta 
 Surabaya, ID     23.66 ms    N/A     4297.83 Mbps   2865.90 Mbps   PT. Indonesia Comnets Plus - Surabaya 
 Kuala Lum, MY    10.33 ms    0.0%    6233.27 Mbps   4779.49 Mbps   Telekom Malaysia Berhad - Kuala Lumpur 
 Novosibirsk, RU  237.21 ms   0.0%    30.95 Mbps     475.41 Mbps    MegaFon - Novosibirsk 
 Istanbul, TR     285.04 ms   1.3%    1154.09 Mbps   381.28 Mbps    Turkcell - Istanbul 
 Dubai, AE        80.35 ms    N/A     4308.28 Mbps   967.82 Mbps    ETISALAT-UAE - Dubai 
 Jeddah, SA       107.20 ms   0.0%    2931.15 Mbps   428.80 Mbps    Mobily - Jeddah 
---------------------------------------------------------------------------
 Avg DL Speed       : 3182.53 Mbps
 Avg UL Speed       : 1916.07 Mbps

 Total DL Data      : 107.33 GB
 Total UL Data      : 53.97 GB
 Total Data         : 161.30 GB
---------------------------------------------------------------------------
 Duration           : 12 min 57 sec
 System Time        : 12/09/2023 - 19:54:52 IST
 Total Script Runs  : 23052
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>Africa: <a href="https://result.network-speed.xyz/r/1694537113_747AYT_AFRICA.txt" rel="nofollow">https://result.network-speed.xyz/r/1694537113_747AYT_AFRICA.txt</a></strong> </summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel(R) Xeon(R) CPU D-1521 @ 2.40GHz
 CPU Cores          : 1 @ 1350.000 MHz
 CPU Cache          : 6144 KB
 AES-NI             : ? Enabled
 VM-x/AMD-V         : ? Enabled
 Total Disk         : 4.9 GB (2.0 GB Used)
 Total RAM          : 128.0 MB (86.2 MB Used)
 System uptime      : 76 days, 15 hour 46 min
 Load average       : 0.19, 0.16, 0.14
 OS                 : Ubuntu 20.04.5 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.4.0
 Virtualization     : OPENVZ
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : OVH SAS
 ASN                : AS16276 OVH SAS
 Host               : OVH Ltd
 Location           : Hackney, England-ENG, United Kingdom
---------------------------------------------------------------------------
 Speedtest.net (Region: AFRICA)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server

 ISP: OVH SAS

 Nearest          0.38 ms     0.0%    897.09 Mbps    231.58 Mbps    FlawCra - London

 Cape Town, ZA    180.45 ms   0.0%    949.51 Mbps    220.12 Mbps    MTN SA - Cape Town
 Cape Town, ZA    148.89 ms   0.0%    952.90 Mbps    239.20 Mbps    Vodacom - Cape Town
 Johannesburg, ZA 172.25 ms   0.0%    924.08 Mbps    234.63 Mbps    i3D.net - Johannesburg
 Harare, ZW       195.55 ms   0.0%    450.94 Mbps    4.74 Mbps      Econet Wireless Zimbabwe - Harare
 Maputo, MZ       266.59 ms   14.5%   477.86 Mbps    1.25 Mbps      TMCEL - Mo�ambique Telecom - Maputo
 Antananarivo, MG 193.88 ms   3.2%    802.97 Mbps    190.10 Mbps    Orange Madagascar - Antananarivo
 Darusalaam, TZ   139.81 ms   0.0%    869.31 Mbps    240.66 Mbps    Vodacom Tanzania Ltd - Dar es Salaam
 Nairobi, KE      151.39 ms   0.3%    621.74 Mbps    230.99 Mbps    Airtel Kenya - Nairobi
 Addis Ababa, ET  89.57 ms    N/A     833.43 Mbps    231.13 Mbps    Ethio Telecom - Addis Ababa
 Cairo, EG        59.57 ms    0.0%    937.25 Mbps    234.87 Mbps    Vodafone Egypt - Cairo
 Alexandria, EG   FAILED
 Rabat, MA        43.53 ms    0.0%    945.89 Mbps    247.27 Mbps    Maroc Telecom - Rabat
 Algiers, DZ      65.75 ms    0.4%    939.95 Mbps    200.52 Mbps    Ooredoo Algeria - Algiers
 Lagos, NG        114.07 ms   0.0%    18.18 Mbps     182.37 Mbps    MTN NIGERIA COMMUNICATIONS LTD - Lagos
---------------------------------------------------------------------------
 Avg DL Speed       : 758.65 Mbps
 Avg UL Speed       : 192.10 Mbps

 Total DL Data      : 15.81 GB
 Total UL Data      : 3.83 GB
 Total Data         : 19.64 GB
---------------------------------------------------------------------------
 Duration           : 7 min 27 sec
 System Time        : 12/09/2023 - 16:43:16 UTC
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>AU:</strong> <a href="https://result.network-speed.xyz/r/1694536652_DGXND8_AU.txt" rel="nofollow">https://result.network-speed.xyz/r/1694536652_DGXND8_AU.txt</a></summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
 CPU Cores          : 2 @ 2699.998 MHz
 CPU Cache          : 16384 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ❌ Disabled
 Total Disk         : 52.1 GB (19.2 GB Used)
 Total RAM          : 2.4 GB (575.0 MB Used)
 Total Swap         : 2.0 GB (75.2 MB Used)
 System uptime      : 2 days, 22 hour 45 min
 Load average       : 0.36, 0.37, 0.31
 OS                 : Ubuntu 22.04.3 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.15.0-83-generic
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : Multacom Corporation
 ASN                : AS35916 MULTACOM CORPORATION
 Host               : Multacom Corporation
 Location           : Piney Point Village, Texas-TX, United States
 Location (IPv4)    : Los Angeles, California, US
---------------------------------------------------------------------------
 Speedtest.net (Region: AUSTRALIA/NZ)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Multacom Corporation 

 Nearest          42.29 ms    0.0%    557.25 Mbps    920.97 Mbps    Ideatek Telcom - Wichita, KS 

 Brisbane         167.06 ms   0.0%    406.70 Mbps    527.94 Mbps    APNIC Pty Ltd - Brisbane 
 Sydney           133.57 ms   0.0%    903.26 Mbps    230.42 Mbps    GSL Networks - Sydney 
 Sydney           154.68 ms   0.0%    809.86 Mbps    582.16 Mbps    Telstra - Sydney 
 Perth            194.12 ms   0.0%    521.59 Mbps    480.49 Mbps    Aussie Broadband - Perth 
 Perth            FAILED                                                        
 Melbourne        160.21 ms   0.0%    634.33 Mbps    528.74 Mbps    Digital Pacific - Melbourne 
 Melbourne        166.33 ms   0.0%    692.08 Mbps    560.47 Mbps    Telstra - Melbourne 
 Adelaide         173.68 ms   0.0%    505.10 Mbps    507.53 Mbps    Exetel - Adelaide 
 Canberra         152.12 ms   0.0%    739.89 Mbps    601.24 Mbps    Telstra - Canberra 

 Auckland         136.19 ms   0.0%    791.04 Mbps    541.41 Mbps    One New Zealand - Auckland 
 Auckland         124.08 ms   0.0%    935.37 Mbps    442.25 Mbps    MyRepublic Group Ltd - Auckland 
---------------------------------------------------------------------------
 Avg DL Speed       : 681.50 Mbps
 Avg UL Speed       : 538.51 Mbps

 Total DL Data      : 10.86 GB
 Total UL Data      : 8.31 GB
 Total Data         : 19.17 GB
---------------------------------------------------------------------------
 Duration           : 5 min 48 sec
 System Time        : 12/09/2023 - 22:07:31 IST
 Total Script Runs  : 23062
---------------------------------------------------------------------------

</pre>

<p></p></details><details><br />
<summary> <strong>GCC: <a href="https://result.network-speed.xyz/r/1694531543_BZ6K6M_MIDDLE-EAST.txt" rel="nofollow">https://result.network-speed.xyz/r/1694531543_BZ6K6M_MIDDLE-EAST.txt</a></strong> </summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : AMD EPYC 7452 32-Core Processor
 CPU Cores          : 1 @ 2349.998 MHz
 CPU Cache          : 512 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 24.5 GB (2.1 GB Used)
 Total RAM          : 1.9 GB (619.0 MB Used)
 System uptime      : 12 days, 21 hour 36 min
 Load average       : 0.00, 0.00, 0.00
 OS                 : Debian GNU/Linux 12
 Arch               : x86_64 (64 Bit)
 Kernel             : 6.1.0-10-amd64
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : Maximilian Jacobsen
 ASN                : AS206075 Maximilian Jacobsen
 ASN (IPv4)         : AS13335 Cloudflare, Inc.
 Location           : Stockholm, Stockholm County-AB, Sweden
---------------------------------------------------------------------------
 Speedtest.net (Region: GCC MIDDLE EAST)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: server-factory.com 

 Nearest          0.55 ms     0.0%    992.39 Mbps    1040.93 Mbps   Bahnhof AB - Stockholm 

 Abu Dhabi, AE    151.85 ms   0.0%    442.17 Mbps    643.17 Mbps    du - Abu Dhabi 
 Dubai, AE        137.71 ms   0.0%    988.05 Mbps    150.14 Mbps    i3D.net - Dubai 
 Fujairah, AE     149.77 ms   0.0%    424.39 Mbps    681.76 Mbps    ETISALAT-UAE - Fujairah 
 Muscat, OM       142.23 ms   0.0%    459.76 Mbps    640.28 Mbps    OmanTel - Muscat 
 Seeb, OM         141.16 ms   0.0%    982.74 Mbps    192.14 Mbps    Ooredoo Oman - Seeb 
 Sanaa, YE        164.83 ms   2.9%    457.44 Mbps    206.34 Mbps    Yemen Net - Sanaa 
 Doha, QA         160.63 ms   0.0%    401.23 Mbps    689.61 Mbps    Ooredoo Qatar - Doha 
 Lusail, QA       FAILED                                                        
 Manama, BH       146.16 ms   0.9%    432.42 Mbps    498.97 Mbps    ZainBH - Manama 
 Rifa, BH         123.94 ms   0.0%    375.79 Mbps    618.06 Mbps    stc Bahrain - Riffa 
 Kuwait, KW       170.76 ms   0.0%    985.40 Mbps    181.95 Mbps    Zain Kuwait - Kuwait City 
 Kuwait, KW       123.71 ms   N/A     986.56 Mbps    50.23 Mbps     Ooredoo Kuwait - Kuwait City 
 Riyadh, SA       100.26 ms   0.0%    434.83 Mbps    691.24 Mbps    Mobily - Riyadh 
 Dammam, SA       113.12 ms   0.0%    990.53 Mbps    234.76 Mbps    Saudi Telecom Company 
 Jeddah, SA       126.99 ms   0.8%    442.16 Mbps    686.97 Mbps    Zain KSA - Jeddah 
 Jeddah, SA       99.17 ms    0.0%    1012.35 Mbps   249.05 Mbps    Saudi Telecom Company 
---------------------------------------------------------------------------
 Avg DL Speed       : 675.51 Mbps
 Avg UL Speed       : 465.98 Mbps

 Total DL Data      : 14.95 GB
 Total UL Data      : 10.61 GB
 Total Data         : 25.56 GB
---------------------------------------------------------------------------
 Duration           : 7 min 43 sec
 System Time        : 12/09/2023 - 17:12:21 CEST
 Total Script Runs  : 23058
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>India: <a href="https://result.network-speed.xyz/r/1694530534_3C9IAU_INDIA.txt" rel="nofollow">https://result.network-speed.xyz/r/1694530534_3C9IAU_INDIA.txt</a></strong> </summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : CPU model not detected
 CPU Cores          : 3
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ❌ Disabled
 Total Disk         : 48.4 GB (15.3 GB Used)
 Total RAM          : 17.5 GB (2.2 GB Used)
 System uptime      : 2 days, 21 hour 0 min
 Load average       : 0.34, 0.32, 0.33
 OS                 : Ubuntu 22.04.3 LTS
 Arch               : aarch64 (64 Bit)
 Kernel             : 5.15.0-1040-oracle
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv4
 ISP                : Oracle Corporation
 ASN                : AS31898 Oracle Corporation
 Host               : Oracle Cloud Infrastructure (ap-hyderabad-1)
 Location           : Hyderabad, Telangana-TG, India
---------------------------------------------------------------------------
 Speedtest.net (Region: INDIA भारत)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Oracle Cloud 

 Nearest          0.65 ms     0.0%    806.47 Mbps    922.41 Mbps    Excitel - Hyderabad 

 Mumbai, MH       13.42 ms    0.0%    2885.13 Mbps   834.37 Mbps    Tata Teleservices Ltd - Mumbai 
 Mumbai, MH       16.66 ms    0.0%    2861.96 Mbps   1143.22 Mbps   Airtel Broadband - Mumbai 
 Pune, MH         26.67 ms    0.0%    2976.98 Mbps   730.39 Mbps    Tata Play Fiber - Pune 
 Hyderabad, AP/TL 1.37 ms     N/A     1585.11 Mbps   1693.84 Mbps   Airtel Broadband - Hyderabad 
 Bangalore, KA    18.81 ms    5.7%    2973.75 Mbps   796.04 Mbps    Bharti Airtel Ltd - Bangalore 
 Bangalore, KA    10.15 ms    0.0%    2920.86 Mbps   1126.20 Mbps   ACT FIBERNET - Bangalore 
 Mangalore, KA    16.71 ms    0.0%    1436.57 Mbps   479.96 Mbps    BBNL - Mangalore 
 Chennai, TN      38.96 ms    N/A     3013.24 Mbps   782.67 Mbps    Jio - Chennai 
 Coimbatore, TN   FAILED                                                        
 Madurai, TN      172.70 ms   0.0%    2651.04 Mbps   316.86 Mbps    Vi India - Madurai 
 Kochi, KL        32.22 ms    N/A     2969.97 Mbps   756.55 Mbps    Jio - Kochi 
 Kochi, KL        24.34 ms    0.0%    3031.87 Mbps   691.95 Mbps    Asianet Broadband - Cochin 
 Trivandrum, KL   35.34 ms    0.0%    1968.42 Mbps   604.54 Mbps    Keralavision Broadband - Trivandrum 
 Kolkata, WB      33.87 ms    0.0%    2559.87 Mbps   539.00 Mbps    Alliance Broadband Services Pvt Ltd - Kolkata 
 Delhi, DL        40.88 ms    0.0%    2061.72 Mbps   155.79 Mbps    Extreme IX - New Delhi 
 Gurgaon, HR      23.96 ms    0.0%    2761.97 Mbps   522.31 Mbps    Powernet - Gurgaon 
 Patna, BH        76.64 ms    N/A     2755.07 Mbps   216.12 Mbps    Vi India - Patna 
---------------------------------------------------------------------------
 Avg DL Speed       : 2483.54 Mbps
 Avg UL Speed       : 724.25 Mbps

 Total DL Data      : 54.35 GB
 Total UL Data      : 18.78 GB
 Total Data         : 73.12 GB
---------------------------------------------------------------------------
 Duration           : 7 min 39 sec
 System Time        : 12/09/2023 - 20:25:32 IST
 Total Script Runs  : 23056
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>China: <a href="https://result.network-speed.xyz/r/1694528635_EI46XX_CHINA.txt" rel="nofollow">https://result.network-speed.xyz/r/1694528635_EI46XX_CHINA.txt</a></strong> </summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : AMD Ryzen 9 5950X 16-Core Processor
 CPU Cores          : 1 @ 3393.592 MHz
 CPU Cache          : 512 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 456.1 GB (115.7 GB Used)
 Total RAM          : 1.4 GB (296.8 MB Used)
 System uptime      : 46 days, 20 hour 11 min
 Load average       : 0.66, 0.68, 0.68
 OS                 : Ubuntu 22.04.2 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.15.0-78-generic
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : xTom Pty Ltd
 ASN                : AS3258 xTom Pty Ltd
 Host               : Virtual Machine Solutions LLC
 Location           : Tokyo, Tokyo-13, Japan
---------------------------------------------------------------------------
 Speedtest.net (Region: CHINA 中華人民共和國)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: xTom Pty Ltd 

 Nearest          0.70 ms     0.0%    804.22 Mbps    820.82 Mbps    GSL Networks - Tokyo 

 CU - Shanghai    80.15 ms    0.5%    153.39 Mbps    71.08 Mbps     China Unicom 5G - Shanghai 
 CT - Shanghai    FAILED                                                        
 CM - Beijing     108.49 ms   0.0%    684.01 Mbps    692.15 Mbps    China Mobile Group Beijing Co.Ltd - Beijing 
 CU - Beijing     FAILED                                                        
 CT - Nanjing     35.39 ms    0.7%    520.91 Mbps    18.38 Mbps     China Telecom JiangSu 5G - Nanjing 
 CU - Shenyang    91.04 ms    0.8%    47.63 Mbps     16.21 Mbps     Unicom - Shenyang 
 CT - Suzhou      36.20 ms    N/A     459.57 Mbps    18.78 Mbps     China Telecom JiangSu 5G - Suzhou 
 CT - Yangzhou    83.99 ms    7.3%    387.30 Mbps    1.80 Mbps      江苏电信5G - Yangzhou 
 CM - Hangzhou    73.16 ms    0.0%    639.14 Mbps    694.23 Mbps    China Mobile Zhejiang 5G - Hangzhou 
 CU - Zhengzhou   105.74 ms   N/A     522.65 Mbps    56.18 Mbps     China Unicom HeNan 5G - Zhengzhou 
 CT - Changsha    63.56 ms    9.5%    58.04 Mbps     1.45 Mbps      湖南电信5G - Changsha 
 CU - Changsha    92.86 ms    N/A     5.01 Mbps      32.65 Mbps     湖南联通5G - Changsha 
 CM - Chengdu     103.71 ms   0.0%    733.53 Mbps    468.51 Mbps    China Mobile Group Sichuan - Chengdu 
 CT - Wuhan       FAILED                                                        
 CM - Xi an       102.05 ms   0.0%    550.09 Mbps    647.96 Mbps    陕西移动5G - Xi'an 
 CT - Hefei       38.38 ms    10.2%   543.13 Mbps    2.76 Mbps      China Telecom AnHui 5G - Hefei 
 CT - TianJin     53.30 ms    9.8%    80.10 Mbps     4.19 Mbps      China Telecom TianJin-5G - TianJin 

 CM - Kwai Chung  107.07 ms   5.9%    483.54 Mbps    371.89 Mbps    China Mobile Hong Kong - Kwai Chung 
 CM - Hong Kong   82.23 ms    0.0%    476.20 Mbps    589.46 Mbps    China Mobile Hong Kong Boardband - Hong Kong 
 Hong Kong        53.67 ms    0.0%    678.47 Mbps    848.06 Mbps    HKIX - Hong Kong 
 Hong Kong        244.21 ms   N/A     375.86 Mbps    48.51 Mbps     fdcservers.net - Hong Kong 
 Hong Kong        51.76 ms    0.0%    546.80 Mbps    396.74 Mbps    Misaka Network, Inc. - Hong Kong 
---------------------------------------------------------------------------
 Avg DL Speed       : 437.48 Mbps
 Avg UL Speed       : 290.09 Mbps

 Total DL Data      : 13.08 GB
 Total UL Data      : 8.57 GB
 Total Data         : 21.65 GB
---------------------------------------------------------------------------
 Duration           : 11 min 7 sec
 System Time        : 12/09/2023 - 19:53:52 IST
 Total Script Runs  : 23051
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>Iran: <a href="https://result.network-speed.xyz/r/1694528246_6GOL8A_IRAN.txt" rel="nofollow">https://result.network-speed.xyz/r/1694528246_6GOL8A_IRAN.txt</a></strong> </summary>

<pre>
---------------------------- network-speed.xyz ----------------------------
      A simple script to test network performance using speedtest-cli      
---------------------------------------------------------------------------
 Version            : v2023.09.04
 Global Speedtest   : wget -qO- network-speed.xyz | bash
 Region Speedtest   : wget -qO- network-speed.xyz | bash -s -- -r 
---------------------------------------------------------------------------
 Basic System Info
---------------------------------------------------------------------------
 CPU Model          : Intel Core Processor (Skylake, IBRS)
 CPU Cores          : 1 @ 3408.020 MHz
 CPU Cache          : 16384 KB
 AES-NI             : ✔ Enabled
 VM-x/AMD-V         : ✔ Enabled
 Total Disk         : 726.8 GB (380.5 GB Used)
 Total RAM          : 1.9 GB (633.3 MB Used)
 System uptime      : 2 days, 20 hour 22 min
 Load average       : 0.60, 0.54, 0.56
 OS                 : Ubuntu 20.04.6 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.4.0-162-generic
 Virtualization     : KVM
---------------------------------------------------------------------------
 Basic Network Info
---------------------------------------------------------------------------
 Primary Network    : IPv6
 ISP                : Kuroit Limited
 ASN                : AS203363 Kuroit Limited
 ASN (IPv4)         : AS25369 Hydra Communications Ltd
 Host               : Kuroit Limited
 Location           : London, England-ENG, United Kingdom
---------------------------------------------------------------------------
 Speedtest.net (Region: IRAN ایران)
---------------------------------------------------------------------------
 Location         Latency     Loss    DL Speed       UP Speed       Server      

 ISP: Kuroit Limited 

 Nearest          23.06 ms    0.0%    881.37 Mbps    702.97 Mbps    ADD39 - Coding SRL - Abbadia San Salvatore 

 Tehran           87.77 ms    1.1%    601.46 Mbps    181.43 Mbps    MCI         
 Tehran           88.55 ms    0.0%    881.51 Mbps    477.43 Mbps    Irancell - Tehran 
 Tehran           84.87 ms    0.0%    163.94 Mbps    463.14 Mbps    HostIran.net - Tehran 
 Shiraz           104.00 ms   0.0%    530.22 Mbps    388.79 Mbps    MCI         
 Isfahan          99.80 ms    0.0%    523.11 Mbps    314.49 Mbps    MCI         
 Tabriz           101.04 ms   0.0%    217.35 Mbps    162.56 Mbps    Maxnet - Tabriz 
---------------------------------------------------------------------------
 Avg DL Speed       : 542.71 Mbps
 Avg UL Speed       : 384.40 Mbps

 Total DL Data      : 4.76 GB
 Total UL Data      : 4.03 GB
 Total Data         : 8.78 GB
---------------------------------------------------------------------------
 Duration           : 3 min 22 sec
 System Time        : 12/09/2023 - 19:47:25 IST
 Total Script Runs  : 23050
---------------------------------------------------------------------------
</pre>

<p></p></details><details><br />
<summary> <strong>Indonesia: <a href="https://result.network-speed.xyz/r/1695397374_P9DYIL_INDONESIA.txt" rel="nofollow">https://result.network-speed.xyz/r/1695397374_P9DYIL_INDONESIA.txt</a></strong> </summary>

<pre>
Indonesia: <a href="https://result.network-speed.xyz/r/1695397374_P9DYIL_INDONESIA.txt" rel="nofollow">https://result.network-speed.xyz/r/1695397374_P9DYIL_INDONESIA.txt</a>
</pre>

<p></p></details><br />
Of course, I am actively developing and updating this regularly, so any feedbacks and suggestions are welcome!
]]>
        </description>
    </item>
    <item>
        <title>Bot scrapers overloading servers?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9701/bot-scrapers-overloading-servers</link>
        <pubDate>Sat, 21 Jun 2025 04:09:21 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">9701@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I am wondering if providers (and website owners) have noticed any problems with scraping bots overloading the server with too many requests?</p>

<p>Is it just me, or is it becoming worse month after month?</p>

<p>Cloudflare seems to be an effective way to stop that (along with all its downsides). My article about dealing with recognized bots gone crazy (like Google) and unknown bots and AI-training content scrapers:</p>

<p><a href="https://io.bikegremlin.com/31865/website-attacked-by-ghosts/" rel="nofollow">https://io.bikegremlin.com/31865/website-attacked-by-ghosts/</a></p>
]]>
        </description>
    </item>
    <item>
        <title>best way to proxy proxmox behind nat?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9226/best-way-to-proxy-proxmox-behind-nat</link>
        <pubDate>Wed, 12 Mar 2025 17:32:37 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>aeria</dc:creator>
        <guid isPermaLink="false">9226@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hi all, first post here!</p>

<p>So i'm looking for a software project to do after work and i was thinking of writing a (very basic) hosting backend for some local hardware i have in my homelab in order to share it with friends</p>

<p>The plan was to basically use my local hardware to run small vpses and proxy them through cheap  publicly accessible vpses to avoid needing to share my home ip or port forward, i was thinking of using wireguard + iptables to handle the proxying on the outwards facing vps but i was wondering if anyone here knows of a better solution, maybe with frp/rathole? Thanks and let me know!</p>
]]>
        </description>
    </item>
    <item>
        <title>Per country IP filtering</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9698/per-country-ip-filtering</link>
        <pubDate>Fri, 20 Jun 2025 18:02:53 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>havoc</dc:creator>
        <guid isPermaLink="false">9698@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Before I reinvent the wheel...anybody got tools/scripts to take raw ASN/ARIN data and turn it into something that can be used to geoblock?</p>

<p>Keen to avoid reliance on external database sites/APIs. I want to take the raw data an process it.</p>

<p>Gang here seems like this may be something y'all know about for fraud prevention etc.</p>
]]>
        </description>
    </item>
    <item>
        <title>AI-powered search</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9641/ai-powered-search</link>
        <pubDate>Sat, 31 May 2025 10:39:48 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">9641@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Taking this discussion to a separate topic</p>

<blockquote><div>
  <p><a href="https://lowendspirit.com/index.php?p=/profile/havoc" rel="nofollow">@havoc</a> said:<br />
  Anybody got any good results on ways to integrate search?</p>
  
  <p>Finding myself leaning more &amp; more on online AIs because LLM+Search is better for most of my tech research than either search or LLM separately.</p>
  
  <p>So far Brave API and SearXNG seem like best candidates but haven't actually found time to try it yet. SearXNG I'm pretty sure I'd need to stick on a VPS...cause I heard it fucks up the IP you're on. Not in usual IP rep sense as LES understands it. Google sees the automated search traffic and thus gives you grief on your own casual browsing, logs you out of gmail etc.</p>
</div></blockquote>

<p>I just use several sources - depending on the particular query:<br />
Google search<br />
Yandex search<br />
ChatGPT<br />
DeepSeek<br />
Bing (when all else fails)</p>

<p>Regarding those AI-searches, I tried ChatGPT and it is basically like using Bing directly - only the "robot" regurgitates it (so like most other <a rel="nofollow" href="https://io.bikegremlin.com/28530/microsoft-bing-serp-gone-overnight/#4" title="Bing-reliant search engines">Bing-reliant search engines</a>).</p>
]]>
        </description>
    </item>
    <item>
        <title>Reinventing the ApisCP WAF</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9700/reinventing-the-apiscp-waf</link>
        <pubDate>Sat, 21 Jun 2025 01:34:00 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>nem</dc:creator>
        <guid isPermaLink="false">9700@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Long time since I've posted, and this one's a fun one. I'd like to pick your brains.</p>

<p>ApisCP based its original WAF on <a rel="nofollow" href="https://github.com/jzdziarski/mod_evasive">mod_evasive</a>. It's a simple counter that tracks inbound requests per process. Evasive is easily circumvented if keep-alives are disabled or the client explicitly closes a connection. A "200 OK" CSS request is just as significant as a 404 that flows through to a dispatcher, like WordPress, and serves out a dynamic - fully loaded - WordPress site. As of late, I've seen changes in bot request patterns that makes this solution inadequate.</p>

<p><a rel="nofollow" href="https://forums.apiscp.com/t/mod-shield-next-gen-http-dos-protection-early-testing/859">mod_shield</a> rethinks this approach. It's a full rewrite of Evasive.</p>

<h3>Features</h3>

<ul>
<li><p><strong>Hits are shared across processes</strong></p>

<ul>
<li>Records are fixed at 176 bytes allowing for 3k unique hits over a 2 minute window at 512 KB</li>
<li>Autoexpire, autoeviction w/ LRU policy</li>
<li>Cache resizable</li>
<li>Can be stored to <a rel="nofollow" href="https://httpd.apache.org/docs/2.4/mod/mod_socache_memcache.html">memcached</a> or <a rel="nofollow" href="https://httpd.apache.org/docs/trunk/mod/mod_socache_redis.html">Redis</a> providers to share hits across servers</li>
</ul></li>
<li><p><strong>HTTP statuses and page loads are scorable</strong></p>

<ul>
<li>Status points may penalize 404s allowing for faster blacklisting of random probes</li>
<li>Works with custom HTTP status codes, e.g. returning 499 from backend could score 10000000 resulting in immediate block.</li>
<li>Fast loads remove decrease points while slow loads may add to point total</li>
<li>Complex scoring is possible, e.g. 1s &lt; load &lt; 2s = 5 pts, 2s &lt;= x &lt; 10s = 7 pts, load &gt;= 10s = 10 pts</li>
<li>Addresses DoS situations where bots hit database-heavy requests, like search</li>
</ul></li>
<li><p><strong>Blocks counted per event</strong></p>

<ul>
<li>For each block application, the duration may be longer than previously applied</li>
<li>Counted for life of system service process</li>
<li>Both <a rel="nofollow" href="https://datatracker.ietf.org/doc/html/rfc7231#section-7.1.3">RFC7231</a> "Retry-After" + <a rel="nofollow" href="https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/">RateLimit</a> headers are sent to guide a compliant client</li>
</ul></li>
<li><p><strong>Proxy support</strong></p>

<ul>
<li>Pierces Cloudflare's tunnel in which the edge address cannot be blocked without disrupting Cloudflare usage</li>
<li>Works with any other downstream proxy as defined using <a rel="nofollow" href="https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html">mod_remoteip</a></li>
</ul></li>
<li><p><strong>Fast, Minimal Overhead</strong></p>

<ul>
<li>Occurs early in processing axis, ~13% faster than mod_evasive <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/blush.png" title=":blush:" alt=":blush:" height="18" /></li>
<li>Requires 3 separate memory chunks for per-site, per-page, and active-blocks.</li>
</ul></li>
<li><p><strong>Improved logging</strong></p>

<ul>
<li><p>Status handler executive summary<br />
<img src="https://futz.net/5f7332fb641d327b18f97446cc3f2ec6b116a54b.png" alt="epsilon-status-handler|669x500" /></p></li>
<li><p>Diagnostics, get a better idea of how things score and why. Doubles as a telemetry module without blocking.</p></li>
</ul></li>
</ul>

<pre><code>    [Fri Jun 20 17:27:18.044384 2025] [shield:info] [pid 2241388:tid 2241454] [client 35.196.24.130:58136] Request status 301 flagged with score 25
    [Fri Jun 20 17:27:18.626983 2025] [shield:info] [pid 2241388:tid 2241452] [client 35.196.24.130:58136] Request status 404 flagged with score 50
    [Fri Jun 20 17:27:22.265283 2025] [shield:info] [pid 2241388:tid 2241455] [client 35.196.24.130:60824] blocking period started for IP: 35.196.24.130 (expiry: 1750541242264768)
    [Fri Jun 20 17:31:46.372136 2025] [shield:info] [pid 2246513:tid 2246541] [client 103.205.211.78:47894] Request status 302 flagged with score 25
    [Fri Jun 20 17:31:47.559982 2025] [shield:info] [pid 2246566:tid 2246607] [client 103.205.211.78:40392] Request status 301 flagged with score 25, referer: http://x.com/xmlrpc.php
    [Fri Jun 20 17:31:48.719776 2025] [shield:info] [pid 2246513:tid 2246539] [client 103.205.211.78:40530] Request status 404 flagged with score 50, referer: https://x.com/xmlrpc.php
    [Fri Jun 20 17:32:03.948083 2025] [shield:info] [pid 2241389:tid 2241464] [client 138.117.18.67:52430] Request status 404 flagged with score 50
    [Fri Jun 20 17:39:03.452497 2025] [shield:info] [pid 2246566:tid 2246607] [client 193.203.10.164:32349] Request status 404 flagged with score 50
    [Fri Jun 20 17:41:51.467151 2025] [shield:info] [pid 2246513:tid 2246540] [client 177.10.34.242:13784] Request status 404 flagged with score 50
    [Fri Jun 20 17:43:28.093184 2025] [shield:info] [pid 2246513:tid 2246535] [client 177.204.39.240:58988] Request status 404 flagged with score 50
    [Fri Jun 20 18:18:46.574231 2025] [shield:notice] [pid 2241388:tid 2241446] [client 114.119.128.58:36383] Request round-trip 1069 ms exceeds limit 1000 ms. Scoring 1 /dsc_hdr-copy/ (proto: HTTP/1.1), referer: https://x.com/dsc_hdr-copy/
</code></pre>

<hr />

<h3>Ideas so far</h3>

<ul>
<li><p><strong>GeoIP blocking</strong></p>

<ul>
<li>I'm not a fan, works contrary that this firewall works adaptively based upon malicious traffic. Bad actors should be blocked organically.</li>
</ul></li>
<li><p><strong>JS challenge to unblock</strong></p>

<ul>
<li>Will be added in a later release. For now, blocks can be done within ApisCP's panel.</li>
</ul></li>
</ul>

<p>What else would you like to see added?</p>

<p>Running ApisCP already? You can swap to Shield today: <br />
<code>dnf --enablerepo=apnscp-testing update -y mod_shield</code></p>

<p>Module is RC stage. It'll be part of the next major ApisCP release <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/+1.png" title=":+1:" alt=":+1:" height="18" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Cloudflare ads a TXT DKIM record without docummentation?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9660/cloudflare-ads-a-txt-dkim-record-without-docummentation</link>
        <pubDate>Fri, 06 Jun 2025 19:35:29 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">9660@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Cloudflare have added a TXT record to domains - without any docummentation or consent:</p>

<p>"cf2024-1._domainkey"</p>

<p><img src="https://lowendspirit.com/uploads/editor/q8/373b47aryo6d.png" alt="" title="" /></p>

<p>Based on Google - I'm not the only one.</p>

<p>Strange.</p>
]]>
        </description>
    </item>
    <item>
        <title>Abuse reports: IPv6 ENTRO scanning alert</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9645/abuse-reports-ipv6-entro-scanning-alert</link>
        <pubDate>Mon, 02 Jun 2025 09:56:54 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Brueggus</dc:creator>
        <guid isPermaLink="false">9645@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Over the last days, I have received a number of abuse reports for "network scanning" for services related to my dnscry.pt project.</p>

<p>I'm honestly surprised how easy it is to get a provider to shut down a server just by sending something like this:</p>

<blockquote><div>
  <p>Network scanning alert notification</p>
  
  <p>Target address：2a0e:bc00::185:xxxx:xxxx:xxxx--&gt;CETNET2 IPv6 Networks<br />
  Protocol type：ENTRO<br />
  Number of scans：1,612<br />
  Recording time：2025-05-29 00:51:47</p>
  
  <p>Please check the security configuration of related network devices in time.</p>
  
  <p>This is an automatic email. Please contact zyzh_bj001@163.com or hyj18@mails.tsinghua.edu.cn if you have any questions.<br />
  Network security team Rein240c</p>
</div></blockquote>

<p>I have no idea what this is about and couldn't find any useful information. I tried to contact the email addresses in the report without success.</p>

<p>Has anyone received similar reports and knows what this is about? Does anyone know what CETNET2 or the ENTRO protocol is?</p>
]]>
        </description>
    </item>
    <item>
        <title>Local AI / LLM - and my step-by-step setup</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9639/local-ai-llm-and-my-step-by-step-setup</link>
        <pubDate>Sat, 31 May 2025 07:19:14 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">9639@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I made a local LLM work on my Windows PC, using (for now still) free software, and no Docker.<br />
As simple and idiot-friendly as it gets.<br />
DeepSeek wrote a well-functioning WordPress website scraper, so I could feed all my public knowledge (from <a rel="nofollow" href="https://www.bikegremlin.com/start-here/" title="my websites">my websites</a>) - along with my private <a rel="nofollow" href="https://io.bikegremlin.com/35989/bikegremlin-deathnotes-my-zettelkasten-system/" title="Deathnotes">Deathnotes</a>.</p>

<p>Here is an example:</p>

<p><img src="https://lowendspirit.com/uploads/editor/zx/5j6utklk1ltu.png" alt="" title="" /></p>

<p>Why is this impressive? Because I’m a huge fan of anti-seize mounting pastes and use them on practically every bolt! 🙂 However, my notes and articles are fucking objective (LOL). So, what the “robot” answered is in fact correct, even if I don’t like or follow that answer (I always err to the side of caution and use anti-seize). This is actually very good, and perhaps even more correct than I would answer, because I would have recommended anti-seize a bit more “aggressively” so to speak.</p>

<p>The full notes about my local AI setup:</p>

<p><a href="https://io.bikegremlin.com/37912/self-hosted-no-docker-ai-lm-studio-anythingllm-setup/" rel="nofollow">https://io.bikegremlin.com/37912/self-hosted-no-docker-ai-lm-studio-anythingllm-setup/</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Real world benchmarking of filesystems</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9636/real-world-benchmarking-of-filesystems</link>
        <pubDate>Thu, 29 May 2025 09:47:43 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>havoc</dc:creator>
        <guid isPermaLink="false">9636@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Busy exploring ZFS with all it's dials and knobs available for tuning. Using fio as first go for testing, but starting to realize it's poorly suited to the task at hand.</p>

<p>Simple example - the fio disk tests are random data. So can't see the effect of compression vs no compression. Same for all the caching levels. Same for deduplication impact. fio is a disk test not a filesystem test</p>

<p>So trying to figure out what else can I use? I can whip up a script doing some stuff like deploying a VM/LXC etc and time it. Copy files around etc.</p>

<p>Wondering whether there is something prebuilt like that already though before I whip out my DIY bash skills...<em>cough</em> LLM <em>cough</em></p>
]]>
        </description>
    </item>
    <item>
        <title>LLM (&quot;AI&quot;) discussion</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9524/llm-ai-discussion</link>
        <pubDate>Tue, 06 May 2025 10:53:04 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bikegremlin</dc:creator>
        <guid isPermaLink="false">9524@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I suppose it might be worth trying to start a thread on this topic. I played a bit with these tools, and wrote a brief post about <a rel="nofollow" href="https://www.bikegremlin.net/threads/chatgpt-absolute-mode-go-cold.519/" title="ChatGPT &quot;Absolute mode&quot;">ChatGPT "Absolute mode"</a>.  <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><a href="https://lowendspirit.com/index.php?p=/profile/vyas" rel="nofollow">@vyas</a> might find this interesting, and <a href="https://lowendspirit.com/index.php?p=/profile/Ympker" rel="nofollow">@Ympker</a> might find it a bit funny - I tried to make mistakes and go out of context to test it:  <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/z1/9nczj2kcfr5o.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Whats the difference between software RAID vs hardware RAID now in 2025?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9570/whats-the-difference-between-software-raid-vs-hardware-raid-now-in-2025</link>
        <pubDate>Sun, 18 May 2025 00:51:05 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>somik</dc:creator>
        <guid isPermaLink="false">9570@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I have always used software RAID when I opted to use RAID over running scheduled backups. Back in the dark ages of 2010s, software RAID was slow and horrible. A single issue with disk or motherboard could result in major data loss where the RAID disk is no longer recognized. JBOD used to be the best alternative to RAID 1 back then. As such, the recommended way to RAID would be with a hardware controller.</p>

<p>Now in 2025, is this still the case? Anyone who's using a hardware RAID controller from the last 3 years, could you share your experience vs using software RAID?</p>

<p>And for those who are using software RAID (I guess would be many of you) how is the data recovery process once one of the drives or the motherboard goes down? What is the process of getting your RAID recognized by the new hardware or the process of data recovery?</p>

<p>Finally, those who are still using scheduled/manual backups, are you planning to switch to RAID anytime soon?</p>

<p>FYI, backup = disk backup (or clone). As pointed out by the first post, RAID is not backup, so I would still be backing up my data, just not the entire disk image.</p>
]]>
        </description>
    </item>
    <item>
        <title>Someone is sending spam using my domain name</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9564/someone-is-sending-spam-using-my-domain-name</link>
        <pubDate>Thu, 15 May 2025 13:19:05 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>msatt</dc:creator>
        <guid isPermaLink="false">9564@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Lets call my domain name mdn.com for simplicity.<br />
Every day (last 5 days), I am getting bounced mail delivery errors in my spam folder (I have catchall enabled for mdn.com).<br />
The bounced mail is due to spam messages being sent 'supposedly' from random_name@mdn.com and all of them are in Japanese (something about iphone).<br />
So could this cause mdn.com's reputation for email delivery to be affected ?<br />
Also is there anyway to 'restrict' this sender from using mdn.com ?<br />
I already have SPF, DKIM setup for mdn.com</p>
]]>
        </description>
    </item>
    <item>
        <title>Any unofficial library of Hurricane Electric DNS ?</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/9576/any-unofficial-library-of-hurricane-electric-dns</link>
        <pubDate>Mon, 19 May 2025 10:39:37 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Candace</dc:creator>
        <guid isPermaLink="false">9576@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hurricane Electric DNS is stable, but there seems to be no API for modifying DNS records. Is there any third-party library available?</p>
]]>
        </description>
    </item>
    <item>
        <title>Introduction to LES</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/8634/introduction-to-les</link>
        <pubDate>Sun, 24 Nov 2024 00:15:11 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>CharityHost_org</dc:creator>
        <guid isPermaLink="false">8634@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hi LES members!  I just wanted to introduce myself to get started on the right tone here at LES.</p>

<p>CharityHost.org is a relatively new org started last year and was a change of brand from SpectroHost.com while maintaining all the customers.  The concept is established to help support web hosting needs for charities and ngo/nonprofits and schools.  We have a free hosting level for those to start up, and at cost plans otherwise as they scale.  That's not all though because we really do provide services for personal and businesses even then at great price points and great quality performance.  Anyway that is just a short on what we are doing.  We provide web hosting, VPS, and dedicated servers, some services surrounding WP and websites as well.  We fully own all our server hardware and currently colo in Houston TX US area, but looking to expand to other colo as we scale.  We have no brick and mortar central office, operate internationally, and are fully remote other than colo on hands.</p>

<p>Reach out anytime even just to chat or say hello!</p>

<p>Thank you</p>

<p>PS.  Not promoting here, this was an intro suggestion by an LES moderator.</p>
]]>
        </description>
    </item>
   </channel>
</rss>
