Console Login

Blog

Insights, tutorials, and updates from the CoolVDS team

Make Trivy fail the build instead of just printing findings

Trivy exits 0 even with CRITICAL findings. I built it from source and made it a real CI gate, then found a secret-scan skip that a green result can hide.

Self-Hosting Supabase with Docker Compose and Two Crash Loops Fixed

Official Supabase Docker stack on a clean Ubuntu sandbox: the pooler and Edge Functions crash-looped. Why, and a compose override that fixed both, with tests.

Building Prometheus from Source with Older Go and Node Versions

Building Prometheus from source on a host with older Go and Node than the repo asks for: what the build does, what warns, and how I verified the result.

Running Dokku on a Host Without IPv6 or systemd

Dokku's nginx templates listen on [::] by default. Here is why nginx refuses to start on a host without IPv6, and how to fix it, including notes for…

Edge MQTT Node on a Norwegian VPS: K3s, WireGuard, Kernel Tuning

How to set up a single-node edge MQTT aggregator with K3s and WireGuard, and how to fix the faulty flags, units and sysctls that edge guides often repeat.

Cutting Cloud Costs: Right-Sizing, Spot, Scaling, Regions, Egress

A reference for lowering a cloud bill: measure first, right-size, use Spot for interruptible work, schedule capacity, compare regions, and track egress.

Bun vs Node.js on a VPS: Check CPU Steal and Disk I/O First

A Bun or Node.js service can be slow on a VPS because of CPU steal or slow disks. How to measure both, fix the host first, and then compare runtimes fairly.

Near-Zero-Downtime PostgreSQL and MySQL Migration via Replication

How to move a large live PostgreSQL or MySQL database to a new server with streaming replication and a short write freeze, including the pitfalls in common…

Kubernetes Pod DNS Fails After an Egress NetworkPolicy: Fix

Pods lose DNS after an egress NetworkPolicy is applied. This article covers the wrong namespace label, the missing TCP port 53 rule and a tested-in-theory fix.

GitOps with Argo CD and Kustomize: Ending Manual kubectl Changes

How to replace hand-run kubectl apply with a pull-based GitOps flow: Argo CD, Kustomize overlays, Sealed Secrets and a CI job that only edits an image tag.

Hybrid cloud and a local database: WireGuard link, latency and GDPR

How to link a hyperscaler workload to a database on a Norwegian VPS with WireGuard, what the tunnel does not fix, and the common mistakes in such setups.

K3s, Kubernetes or Nomad: Check Disk Latency Before Choosing

Control planes built on etcd or Raft fail on slow disks. How to test fsync latency, pick between Kubernetes, K3s and Nomad, and prepare a K3s node.

Raft control planes: fsync latency for etcd, Swarm and Nomad

Why Kubernetes, Docker Swarm and Nomad clusters turn flaky on slow disks or stolen CPU, how to measure it with fio and vmstat, and what to change.

Compliance as Code: CIS Hardening, OpenSCAP Gates and Policy Checks

Enforce CIS network sysctl baselines with Ansible, gate deployments on OpenSCAP results, and reject Ingress objects without TLS using an OPA admission policy.

Tuning Nginx and Kong as an API Gateway: Limits, Keepalive, Kernel

How to remove common latency and connection-error causes in an Nginx or Kong API gateway: file limits, upstream keepalive, backlog, port range, logging and TLS.

Keeping Prometheus Monitoring Alive During Traffic Spikes

Why a Prometheus stack stalls under load, and how to fix it: federation, a lean node_exporter, recording rules, WAL-friendly storage and a locked-down firewall.

Microservices Gateway and Circuit Breaker Patterns on Nginx and…

How an Nginx API gateway with rate limiting and upstream keepalive, plus an opossum circuit breaker, limits cascading failures between microservices (2022…

Hardening Docker and Kubernetes Containers After Log4Shell (2022)

Run containers as non-root, with a read-only filesystem, dropped capabilities and a default-deny NetworkPolicy, so one compromised app has little to work with.

NATS JetStream cluster for microservices: setup and pitfalls (2021)

How to run a three-node NATS JetStream cluster (server 2.6, nats.go 1.13) with replicated streams, authentication, correct acks and sane OS limits.

Self-Hosted Latency Monitoring with Prometheus, Grafana and Nginx

How to measure request latency, CPU steal and disk trends on your own server with Nginx timing logs, Prometheus 2.28 and Grafana 8, without a third-party APM.

Zero Trust for Linux Servers: WireGuard, mTLS and Hardened SSH

Replace trust-by-network-location with encrypted, authenticated links: WireGuard between nodes, nginx client certificates and hardened SSH with a second factor.

Data Sovereignty After Schrems II: Hosting and Encrypting in Norway

What the Schrems II ruling changed, why a region label is not compliance, and how LUKS, MariaDB encryption, TLS 1.3 and WireGuard reduce exposure in 2020.

Cutting CI Build Time by Fixing Disk I/O, Swap and Heap on Linux

Slow or timing-out Jenkins builds are often caused by iowait, swapping and a badly sized JVM heap. How to diagnose and tune each on a 2014-era Linux server.

Fault-Tolerant Service Routing with HAProxy and ZooKeeper

How to keep a local HAProxy in step with a ZooKeeper service registry: ephemeral znodes, a watcher that regenerates the config, and a graceful reload.

Memcached or Redis for Caching and Sessions: A 2014 Reference

When to use Memcached or Redis 2.8 for caching and PHP sessions on CentOS 6. Covers persistence, eviction, AOF fsync stalls, and a split-instance setup.

Offloading Slow Work from Web Requests with RabbitMQ and Celery

How to keep slow jobs out of the web request path with RabbitMQ, Celery 3.0 and Nginx 1.2 on Debian 7, with corrected configuration and the limits of the setup.

Server Log Analysis with AWStats on CentOS 6 and Apache

How to build reports from raw Apache or Nginx access logs with AWStats on CentOS 6: log format, config, cron, protected access, and limits.

Postfix on CentOS 6: Mail Delivery with PTR, SPF and DKIM

A reference setup for Postfix on CentOS 6 (2012): fix mail rejected or sent to spam with matching DNS, restricted SMTP, TLS submission with SASL, SPF and DKIM.

HAProxy 1.4 and Keepalived on CentOS 6: Redundant Load Balancing

Put HAProxy 1.4 in front of web nodes on CentOS 6, tune the kernel and use Keepalived VRRP so the balancer itself is no single point of failure.

OpenVZ failcnt: Diagnosing Memory Denials on a Shared-Kernel VPS

How to tell when an OpenVZ container is being refused resources: read user_beancounters, interpret failcnt, and shrink MySQL and Apache to fit the limits.

Recent Searches