devops 61
- I Audited the OpenVPN Server I Wrote a Guide For
- Tightening a dev VM that was quietly living without a firewall
- When an Always Free server gets smaller
- Rebuilding a Small k3s Host Without Making It Precious
- Voice Control for Hermes Agent over Telegram
- The Hard Part of AI PR Review Is Not Reading the Diff
- Tightening Hermes Agent Security for Local Sensitive Work
- Securing Hermes Agent with OpenShell
- Zombie PostgreSQL replicas: the WAL segment removed deadlock
- Production Ruby Debugging: A Progressive Escalation Guide
- Incus vs. Docker: System Containers vs. App Containers
- Redis High Availability: Shared Sessions and Fault Tolerance
- Identity-Aware GCS Access Instead of Hashed Secret URLs
- Faster Rails Docker Feedback Loop: Runtime Deps and HMR
- Redis Cleanup and Memory Management in Kubernetes
- Sending Email from an Ubuntu VM on Oracle Cloud (OCI)
- Choosing a Website Stack for a 1C1G Server
- Optimizing a 1C1G Ubuntu Cloud Server
- Zero-Downtime GKE Upgrades with PostgreSQL in the Cluster
- Zero-downtime GKE upgrades with PostgreSQL failover
- PostgreSQL MD5 to SCRAM-SHA-256: a zero-downtime migration
- From 499 to 200: Fixing Nginx Timeouts in a Rails API
- Securing AWS Credentials: aws-vault vs 1Password
- Optimizing Android Builds in GitHub Actions
- PostgreSQL 18: What's New and How to Upgrade
- Migrating a GCP Classic Load Balancer to Global External
- Enabling Local HTTPS for Development and Debugging
- Redis Sentinel Split-Brain: Fixing It on Kubernetes
- Build and Push Docker Images to Quay.io with GitHub Actions
- Why npm ci Runs prepare Scripts for Git Dependencies
- Catching Database Configuration Drift Between Microservices
- Kubernetes Node Upgrades: Cordon, Drain, and Failover
- When AWS Lambda Makes Sense for a Single API Endpoint
- Upgrading Bitnami Redis Helm Charts Without Downtime
- ARG, ENV, and BuildKit secrets: how each behaves in Docker
- Linux kill signals: graceful shutdown in containerized workers
- Retry mechanisms for flaky CI and Docker builds
- jq and yq: transforming embedded key-value strings in YAML
- Kubectl aliases and functions that actually save time
- Docker secrets: how layers leak them and how BuildKit fixes it
- Docker Buildx --on-error: drop into a shell when a build fails
- How to Debug Docker Image Builds
- Leapp vs aws-vault: Comparing AWS CLI Credential Tools
- Running Multiple Processes in a Single Container
- k3s on Ubuntu: Install, kubectl Access, and Unauthorized Errors
- Supervisord: Process Management for Containers and VMs
- Rails in Kubernetes: Migrations, Jobs, and Puma
- Materialized Views: Speeding Up Queries with a Tradeoff
- GitHub Actions Variables: env, Contexts, Secrets, and Matrix
- PostgreSQL Sequence Conflicts After an Upgrade: How to Fix Them
- Zero-Downtime PostgreSQL Upgrades With Logical Replication
- Redis Sentinel: How Automatic Failover Actually Works
- Production Debugging Techniques for Rails Apps
- Rails Secrets: Credentials, 1Password, and Cloud Vaults
- Config Approaches: Files, Env Vars, and Config Servers
- Postgres 'Too Many Connections': Debugging Pgpool-II Limits
- Scaling PostgreSQL on Kubernetes with Kubegres
- GCP 502 Errors from GKE Readiness Probe Failures
- Pgpool-II: Middleware for PostgreSQL
- Defending Against DoS Attacks
- rsync:系统管理员的备份利器