15 September 2026
Auto-patch security holes, nothing else You won't SSH in to run apt upgrade across 40 boxes. Automate ONLY the security channel so nothing breaks at 3am. — apt install unattended-upgrades — in 50unattended-upgrades keep …
@RootAccessDaily
15 September 2026
Auto-heal services so a crash isn't an outage php-fpm died at 4am, site was down till I woke up. Monit fixes that: — apt install monit -y — Watch a service: check process php-fpm with pidfile /run/php/php8.3-fpm.pid then…
@RootAccessDaily
14 September 2026
Hide SSH entirely with port knocking Port 22 closed to the world, opens only for you. Looks like the box has no SSH at all: — apt install knockd -y — Define a secret sequence in /etc/knockd.conf: knock 7000, 8000, 9000 i…
@RootAccessDaily
14 September 2026
Cage your runaway service before it kills the box One misbehaving worker or a memory-leaking node script will eat all your RAM and take the whole server down. Don't babysit it, cage it with systemd: — MemoryMax=300M — CP…
@RootAccessDaily
13 September 2026
LEMP stack from bare box in the right order Install order saves you debugging socket errors later: — nginx first: apt install nginx -y, confirm the default page loads — MariaDB next: apt install mariadb-server -y then my…
@RootAccessDaily
13 September 2026
Stop hardening SSH the dumb way Moving SSH to port 2222 stops zero serious attackers and breaks your tooling. Do the two things that actually matter: — PasswordAuthentication no (keys only, full stop) — AllowUsers deploy…
@RootAccessDaily
12 September 2026
Stop logs from filling your disk at 3am A runaway access.log filled a 25GB disk and took down 12 sites. Never again: — Custom rule in /etc/logrotate.d/mysites pointing at /var/www/*/logs/*.log — daily, rotate 7, compress…
@RootAccessDaily
11 September 2026
Diagnose a slow site without guessing Site feels sluggish, everyone blames the host. Walk the layers top-down: — Where's the time going? curl -w '@curl-format.txt' -o /dev/null -s https://yoursite with a format file prin…
@RootAccessDaily
10 September 2026
Redis object cache the right way on a small box Adding Redis to a 2GB box without it eating everything: — apt install redis-server -y — Cap it in /etc/redis/redis.conf: maxmemory 256mb and maxmemory-policy allkeys-lru — …
@RootAccessDaily
09 September 2026
Block scraper bots eating your bandwidth Ahrefs, Semrush and a swarm of no-name scrapers were 30% of my traffic. Cut them at nginx, not in robots.txt (they ignore it): — Map them: map $http_user_agent $bad_bot { default …
@RootAccessDaily
08 September 2026
Move a site to a new VPS with zero downtime The order matters more than the tools. My sequence: — Drop the TTL on your DNS record to 300s a day BEFORE you start — rsync files to the new box: rsync -avz --delete /var/www/…
@RootAccessDaily
07 September 2026
Cron jobs that never stack on top of each other My 5-min sync job ran long, second copy started, they fought, load hit 8. Lock it: — Wrap with flock: * * * * * flock -n /tmp/sync.lock /usr/bin/php /var/www/sync.php — -n …
@RootAccessDaily
06 September 2026
Adjacent but useful: @SchemaWire. The newsroom for structured data: which schema types Google just started (or… Good if your work touches schema / structured data.…
@RootAccessDaily
05 September 2026
One SSH config to rule 40 boxes Stop typing IPs and ports. Build ~/.ssh/config once: — Per host: Host web1 / HostName 1.2.3.4 / User deploy / Port 2222 / IdentityFile ~/.ssh/web1 — Reuse connections: ControlMaster auto, …
@RootAccessDaily
04 September 2026
Backup playbook that actually restores A backup you never test is a prayer, not a backup. My nightly setup: — Script it: pg_dump dbname | gzip > /backups/db_$(date +\%F).sql.gz — Prune old ones: find /backups -name '*.sq…
@RootAccessDaily
03 September 2026
Micro-cache nginx so WordPress survives a spike A 1-second cache turned my $5 box into something that ate a front-page Reddit hit: — fastcgi_cache_path /tmp/nginxcache levels=1:2 keys_zone=MICRO:10m max_size=200m inactiv…
@RootAccessDaily
02 September 2026
Wildcard cert for unlimited subdomains Running 30 sites on subdomains off one box. One wildcard cert covers them all: — apt install certbot python3-certbot-dns-cloudflare -y — Drop your Cloudflare API token in ~/.secrets…
@RootAccessDaily
01 September 2026
Firewall baseline before anyone scans you Every box gets port-scanned within minutes of boot. Lock it in this exact order so you don't drop your own SSH: — ufw default deny incoming and ufw default allow outgoing — ufw a…
@RootAccessDaily
31 August 2026
Size php-fpm so 1GB RAM doesn't crash Most guides leave pm.max_children at default and the box dies under load. Do the math instead: — Check one worker's real usage: ps --no-headers -o rss -C php-fpm8.3 | sort -n | tail …
@RootAccessDaily
30 August 2026
Compression checklist for nginx (do all 4) Shaved 70% off my HTML/CSS payload with this in the http block: — gzip on; and gzip_comp_level 5; (6+ wastes CPU for nothing) — gzip_types text/css application/javascript applic…
@RootAccessDaily
29 August 2026
fail2ban for SSH in 6 lines My auth.log had 4k failed logins a day. Set this and it dropped to near zero: — apt install fail2ban -y — cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local — In jail.local under [sshd]: enab…
@RootAccessDaily
28 August 2026
Add swap to a 1GB box without killing the SSD This $5/mo box OOM-killed php-fpm twice. Fix in 4 commands: — fallocate -l 2G /swapfile && chmod 600 /swapfile — mkswap /swapfile && swapon /swapfile — Add to /etc/fstab: /sw…
@RootAccessDaily
27 August 2026
Three (or four) more for the webmaster & site monetization crowd: — @EdgeOfGloryCDN — True stories of sites that went global on a CDN -- the latency drops,… — @CacheCatch — The best caching reads, tools, and configs from…
@RootAccessDaily
26 August 2026
gzip vs Brotli in nginx Brotli compresses text 15-25% smaller than gzip at the same speed for static assets — free bandwidth and faster loads. But the nginx Brotli module isn't built in; you compile it or use a package t…
@RootAccessDaily
25 August 2026
Monit vs Uptime Kuma Both watch your stack but solve different problems. Monit runs on the box and restarts dead services automatically — nginx crashes, Monit brings it back, no human. Uptime Kuma is an external dashboar…
@RootAccessDaily
24 August 2026
Docker vs bare-metal on small VPS Docker is great for reproducibility, but on a 1GB box every container brings its own libc copy, an extra network layer, and 100-300MB of overhead before your app even loads. — Run 1-2 si…
@RootAccessDaily
23 August 2026
logrotate vs journald vacuum Two log monsters eat your tiny disk: app logs (nginx/php) and systemd's binary journal. They need different brooms. — Text logs in /var/log: logrotate with compress + maxsize 50M — Binary jou…
@RootAccessDaily
22 August 2026
NVMe vs SATA SSD VPS Providers still sell cheaper 'SSD' plans that are SATA. For a DB-heavy site the IO difference is night and day — NVMe does 5-10x the random IOPS, which is exactly what MySQL pounds. — Static/cached s…
@RootAccessDaily
21 August 2026
Shared vs dedicated vCPU The cheap line (DO Basic, Hetzner CX, Vultr Regular) is shared CPU — you burst fine but a noisy neighbor steals cycles, and providers throttle sustained 100% use. Dedicated/CPU-optimized plans co…
@RootAccessDaily
20 August 2026
Hetzner vs DigitalOcean DO's $6 droplet gets you 1GB/1vCPU/25GB. Hetzner's CX22 is ~€4 for 2 vCPU / 4GB / 40GB. It's not close on raw specs-per-euro. — Need US datacenters, slick API, managed add-ons: DO — EU/US traffic,…
@RootAccessDaily