<?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>TierHive — LowEndSpirit</title>
        <link>https://lowendspirit.com/index.php?p=/</link>
        <pubDate>Fri, 05 Jun 2026 23:39:40 +0000</pubDate>
        <language>en</language>
            <description>TierHive — LowEndSpirit</description>
    <atom:link href="https://lowendspirit.com/index.php?p=/discussions/tagged/tierhive/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Free TierHive Vint Hill Alpine VPS Share!</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10822/free-tierhive-vint-hill-alpine-vps-share</link>
        <pubDate>Sat, 02 May 2026 21:35:00 +0000</pubDate>
        <category>Offers</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">10822@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Friendly Greetings!</p>

<p>Like so many of you, I am getting started on TierHive!</p>

<p><strong>Disclosure</strong></p>

<p>TierHive gave me a few extra free tokens.</p>

<p><strong>Offer</strong></p>

<p>It might be fun to try installing something really small, like NetBSD or Oasis Linux or Sabotage Linux, on a VPS at TierHive, but it seemed best, for a first attempt, to try a very commonly used distro. I love Debian and Alpine, so here we are, with Alpine, though I still feel on track for at least one additional TierHive VPS running a crazy small distro.</p>

<p>This VPS will probably stick around for a few months, maybe longer, maybe shorter. I hope to keep it updated, but probably won't install many services. Therefore, if somebody wants to share this VPS with me, for free, that's great! I am looking for someone well known, who wants to help me learn something via discussion in this thread.</p>

<p><strong>What might it look like to get started on TierHive?</strong></p>

<p>Simple and easy! Even a <em>clueless™</em> guy can do it! Just make a TierHive account, log in, updatre the VPS creation dialog, and go. Here's the view from Chrome browser with Dark Reader:</p>

<p><img src="https://lowendspirit.com/uploads/editor/fg/129217cz3zs6.png" alt="" title="" /></p>

<p>Scrolling down, I added ssh keys. On the network tab I added an IPv6 allocation for Kansas City. Then I clicked to create the VPS.</p>

<p>Oops! TierHive seems to be <em>very</em> successful getting clients! <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/star.png" title=":star:" alt=":star:" height="18" /></p>

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

<p>So I reset the creation dialog to Vint Hill. I also wiped the no longer needed Kansas City IPv6 allocation and allocated IPv6 at Vint Hill.</p>

<p>Bang! In a few seconds, I was in! <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/star.png" title=":star:" alt=":star:" height="18" /></p>

<pre><code>tierhive:~$ uname -a
Linux tierhive.lowendlife.lol 6.18.26-0-virt #1-Alpine SMP PREEMPT_DYNAMIC 2026-04-30 10:50:31 x86_64 Linux
tierhive:~$ cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.23.4
PRETTY_NAME="Alpine Linux v3.23"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
tierhive:~$ doas apk update
v3.23.4-124-g11978fd1db5 [https://dl-cdn.alpinelinux.org/alpine/v3.23/main]
v3.23.4-123-g51f05d22f38 [https://dl-cdn.alpinelinux.org/alpine/v3.23/community]
OK: 27578 distinct packages available
tierhive:~$ doas apk upgrade
OK: 147.8 MiB in 222 packages
tierhive:~$ date -u
Sat May  2 20:24:05 UTC 2026
tierhive:~$ 
</code></pre>

<p><strong>Question</strong></p>

<p>Who wants to join me on this VPS and help me learn something via discussion in this thread?</p>
]]>
        </description>
    </item>
    <item>
        <title>TierHive - now live in Singapore</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10692/tierhive-now-live-in-singapore</link>
        <pubDate>Wed, 25 Mar 2026 15:39:50 +0000</pubDate>
        <category>Industry News</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10692@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><a rel="nofollow" href="https://tierhive.com/" title="TierHive Hourly VPS">TierHive</a> is now live in Singapore.</p>

<p>We have set more aggressive bandwidth throttling policies on the tiers in the back end compared to other locations, it will be reviewed day by day week by week.</p>

<p>I can't give you numbers; it's dynamic based on contention.</p>

<p>Singapore also comes with HAProxy SSL/SNI, Load balancing and failover and SQL Offload.</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>TierHive | 128MB Ram - 1 GB Disk = $6 for 5 Years! (yes actually) | Hourly VPS | FREE to try.</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10571/tierhive-128mb-ram-1-gb-disk-6-for-5-years-yes-actually-hourly-vps-free-to-try</link>
        <pubDate>Fri, 20 Feb 2026 16:45:37 +0000</pubDate>
        <category>Offers</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10571@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Go here and play with the sliders, build your own package: <a rel="nofollow" href="https://tierhive.com/" title="TierHive">TierHive</a></p>

<p>vCPU: 1vCPU for upto 2048MB then anything over gets 2vCPU<br />
Ram: 128MB upto 4096MB - <strong>128mb incrememnts</strong><br />
Disk (NVMe): 1GB upto 50GB - <strong>1GB Increments</strong><br />
Disk (HDD): 1GB upto 4000GB - <strong>1GB increments</strong><br />
Disk (Network): 1GB upto 100GB - <strong>1GB Increments</strong></p>

<p><strong>Free</strong> HAProxy, Load balancing, Failover, SSL, SQL Offload, Email relay</p>

<p>Actual hourly billing with 1 hour minimum</p>

<p>Meshed NAT, each user gets a /24 from 10.0.0.0/8 you can use your /24 over all locations and all your VPS can talk to each other over the mesh no matter the location.</p>

<p>For the rest of February, the minimum top-up is $3 instead of $5, credit never expires, services auto stop when you run out, you have around 3 days to recover, after that they are deleted, we auto cancel debt, so you will never owe anything.</p>

<p>We are privacy-focused, we don't want your ID or personal details, the free trial credit does not require a credit card or validation, its enough to get you running for a few hours or a few days or weeks, depending on what you deploy.</p>

<p>Locations:</p>

<ul>
<li>Canada East</li>
<li>Kansas, MO, USA</li>
<li>London, UK</li>
<li>Frankfurt, DE</li>
</ul>

<p>You can self-migrate your own server in most instances. Big HDD storage is only available in London right now, working on S3 compatibility before we also roll out big storage in the USA.</p>

<p>Cheers!</p>
]]>
        </description>
    </item>
    <item>
        <title>TierHive - NAT Native - /24 per customer - Lab in the cloud - Free to try.</title>
        <link>https://lowendspirit.com/index.php?p=/discussion/10300/tierhive-nat-native-24-per-customer-lab-in-the-cloud-free-to-try</link>
        <pubDate>Mon, 08 Dec 2025 14:44:44 +0000</pubDate>
        <category>Offers</category>
        <dc:creator>AnthonySmith</dc:creator>
        <guid isPermaLink="false">10300@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hi Folks,</p>

<p>Following the successful initial test in the Exclusive section, things went pretty well with just a few hiccups, so we are making this more public. We hit 50 users live in the first 24 hours, which is great, and we are already pushing quickly towards 100 users live.</p>

<p>Forward/Warning: This product is in Public Alpha; it is not enterprise-grade and probably never will be. More on that during sign-up.</p>

<p>Please ask any questions.</p>

<p>Many more comments in the exclusive offer in case anyone missed that: <a href="https://lowendspirit.com/discussion/10288/tierhive-from-the-creators-of-les-nat-done-different-free-to-try" rel="nofollow">https://lowendspirit.com/discussion/10288/tierhive-from-the-creators-of-les-nat-done-different-free-to-try</a></p>

<p><strong>What is it?</strong></p>

<p><strong>Simple version</strong>  <a href="https://tierhive.com" rel="nofollow">https://tierhive.com</a> It's a KVM NAT VPS product on ultra low cost with hourly billing.</p>

<ul>
<li>Ever need a VPS quickly for a short lived thing? have this on hot standby!</li>
<li>Want your own multi-location lan/lab but dont want to run it at home? give this a try"</li>
<li>Can you manage your backups and know your DR? why pay more?</li>
</ul>

<p>Why is it different?</p>

<ul>
<li>We allocate **a full /24 ** to you to use as you want, e.g. 10.200.50.0/24 so you can use 10.200.50.2-254</li>
<li>You get 2 ports per VPS with ssh auto forwarding. (TCP+UDP)</li>
<li>You can change VPS specs as you want.</li>
<li>You can turn on/off dhcp as you want.</li>
<li>Your VPS bridge is meshed whcih means 10.200.50.20 in London can ping 10.200.50.30 in Canada directly.</li>
<li>1 hour minimum.</li>
<li>Free to try as standard.</li>
<li>SQL Offloading</li>
<li>Mail relay available</li>
<li>Self install available</li>
<li>Configure your own DHCP Options (including for pxe on your private LAN)</li>
<li>Self-migrate your own servers between locations.</li>
<li>Quick install / recipes for Wordpress</li>
<li>Earn credit by contributing.</li>
<li>SSL Termination</li>
<li>HAproxy load balancer and failover.</li>
<li>We only need a username, email address and password; we don't store your personal details.</li>
</ul>

<p><strong>Where is it?</strong></p>

<p><a href="https://tierhive.com" rel="nofollow">https://tierhive.com</a></p>

<p><strong>How much?</strong></p>

<p>Well, we bill for what you use/want, not a month in advance; we just have a 1-hour minimum.</p>

<p>Examples / COST:</p>

<ul>
<li>128 MB Ram, 1 GB Disk - from $0.000135 per hour, which is about $0.10 per month.</li>
<li>1 GB Ram, 5 GB Disk - from $0.001022 per hour, which is around $0.75 per month.</li>
</ul>

<p><strong>We have extensive defences built in for those trying to exploit the free tokens offer, lifetime bans will be handed out liberally for this</strong> <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/grin.png" title=":D" alt=":D" height="18" /> <img src="https://lowendspirit.com/plugins/emojiextender/emoji/twitter/+1.png" title=":+1:" alt=":+1:" height="18" /></p>

<p><strong>How does it work?</strong></p>

<ul>
<li>1 token = $1 - <strong>We give you 1 token just for signing up.</strong></li>
<li>Add credit when you have had time to test it, $5 minimum, and currently a $10 maximum.</li>
<li>No need to commit, if it's not for you, then no problem, you lost nothing.</li>
</ul>

<p><strong>What is a NAT KVM Anyway?</strong></p>

<ul>
<li>For those that somehow still don't know how their own routers at home probably work, you share an external IP, you get ports forwarded to your VPS so you can connect.</li>
</ul>

<p><strong>A bit more about the product for those still reading:</strong></p>

<ul>
<li>Really, per hour, your credit is indefinite; you don't pay anything to exist, if nothing is active, you pay nothing.</li>
<li>You get a whole /24 allocated to your account, and you allocate your own IP addresses from that.</li>
<li>Every VPS gets 2 x TCP+UDP ports</li>
<li>If you allocate 10.0.20.2 to VPS 1 in London, and 10.0.20.3 to VPS 2 in Canada, they can directly communicate with each other over your bridged LAN on any port.</li>
<li>You can set up your own tftpd/ipxe server on your LAN and enable/disable DHCP</li>
<li>You can boot into ipxe directly and chinload netboot.xyz if you want, and install whatever you need.</li>
<li>You can self-migrate your own VPS between locations.</li>
<li>We have a recipe system where you will find official recipes for things like OpenVPN, WordPress, LibreNMS, WireGuard and others.</li>
<li>You can also store your own multivps recipes and deployment scripts privately or you can share them with the community with a direct feedback and an anonymous bug tracking system.</li>
<li>If people use your recipes, you get credit in return as a thank you from us.</li>
<li>We have MariaDB and PostgreSQL offloading if you want us to do the heavy work for you.</li>
<li>We have an email relay service, so if you need something to send emails, for transactional stuff, that is provided along with delivery tracking, and we also allow access to other major external services SES etc.</li>
<li>We offer network storage, which you can attach to your VPS and move between VPS</li>
<li>We offer a VPS backup system along with scheduling with options for overwriting or multiple version.</li>
<li>We have a configurable HAProxy Service with SSL Termination which can rin in single location, single server (backend) mode, or you can take advantage of all our external IP's ad have them all point at your VPS (apparently people like that for SEO) or you can have a multi VPS setup with rounrobin or failover or sticky sessions and you can configure your own weighting.</li>
<li>SSL Termination done via LetsEncrypt.</li>
<li>You can change your VPS resources yourself; disk only goes up it cannot shrink, but you can change your RAM, CPU Priority, Disk IOPS, network bandwidth and apply it yourself.</li>
</ul>

<p>If you want your own little LAN in the cloud, you're a hobbyist, or like to play with new things, or even a developer who wants access to cheap resources for a short term with persistent network disks you can attach and detach almost like a USB stick with everything provided and a recipe deployment system, then I invite you to try it.</p>

<p>Screenshots:</p>

<p><img src="https://tierhive.com/assets/images/screenshots/th1.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th2.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th3.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th4.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th5.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th6.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th7.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th8.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th9.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th10.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th11.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th12.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th13.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th14.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th15.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th16.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th17.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th18.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th19.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th20.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th21.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th22.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th23.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th24.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th25.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th26.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th27.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th28.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th29.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th30.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th31.png" alt="" title="" /><br />
<img src="https://tierhive.com/assets/images/screenshots/th32.png" alt="" title="" /></p>
]]>
        </description>
    </item>
   </channel>
</rss>
