Blog

SSH, Linux, and production operations — page 26

Practical runbooks for servers, containers, databases, cloud hosting, incident response, and safe AI-assisted operations.

Docker secrets in environment variables: audit and migrate

The search intent behind this problem is reducing credential exposure through inspect and process metadata.

The Tryssh team · July 21, 2026 →

The Docker socket is root access wearing an API

Treat docker-group membership and socket mounts as root-equivalent privileges; use narrow proxies only when the API is unavoidable.

The Tryssh team · July 21, 2026 →

Docker volume backup: capture application consistency too

The search intent behind this problem is backing up persistent container data without assuming file copy is enough.

The Tryssh team · July 21, 2026 →

Docker volume data disappeared: mount shadowing and project names

The search intent behind this problem is locating data after a container or Compose change.

The Tryssh team · July 21, 2026 →

Dokku gives you a tiny Heroku; you still own production

Dokku can deploy open-source software quickly, but its runtime and storage model create tradeoffs. Here is where the friction appears and when a VPS is simpler.

The Tryssh team · July 21, 2026 →

Encrypted backups are useless without recoverable keys

The search intent behind this problem is testing key custody separately from backup storage.

The Tryssh team · July 21, 2026 →

Ephemeral port exhaustion: the hidden client-side outage

When finding excessive outbound connection churn, speed comes from ordering the investigation—not from typing more commands.

The Tryssh team · July 21, 2026 →

Fail2ban for SSH: useful guardrail, not your primary lock

Disable password authentication when possible; use fail2ban to reduce noise and abuse, not to make weak credentials safe.

The Tryssh team · July 21, 2026 →

Feature flag rollout caused an incident: contain and learn

The search intent behind this problem is separating flag state from deploy state and cached configuration.

The Tryssh team · July 21, 2026 →

Fly Volumes and the hidden work behind stateful open source

Fly.io can deploy open-source software quickly, but its runtime and storage model create tradeoffs. Here is where the friction appears and when a VPS is…

The Tryssh team · July 21, 2026 →

Run a disaster-recovery game day that teaches the truth

The search intent behind this problem is rehearsing a bounded failure with safety and measurable outcomes.

The Tryssh team · July 21, 2026 →

GitHub Actions permission denied after token hardening

The search intent behind this problem is tracing workflow permissions, environment rules, and target identity.

The Tryssh team · July 21, 2026 →

GitHub Actions self-hosted runner offline: service and network debugging

When restoring a runner without deleting registration first, speed comes from ordering the investigation—not from typing more commands.

The Tryssh team · July 21, 2026 →

Health checks vs synthetic monitoring: green is not enough

The search intent behind this problem is testing the same path and outcome a user depends on.

The Tryssh team · July 21, 2026 →

Heroku's ephemeral filesystem versus file-backed open source apps

Heroku can deploy open-source software quickly, but its runtime and storage model create tradeoffs. Here is where the friction appears and when a VPS is…

The Tryssh team · July 21, 2026 →

HTTP 502 vs 503 vs 504: use the status as a starting clue

When mapping gateway errors to upstream response, availability, and timeout, speed comes from ordering the investigation—not from typing more commands.

The Tryssh team · July 21, 2026 →

Idle servers cost more than compute: patching and attack surface

The search intent behind this problem is deciding whether a quiet host should be consolidated or deleted.

The Tryssh team · July 21, 2026 →

Immutable deployment artifacts: stop rebuilding on the server

The search intent behind this problem is proving the same reviewed bytes reach every environment.

The Tryssh team · July 21, 2026 →

API latency spike: a no-panic investigation

Separate network, queueing, application, dependency, and database time; averages conceal the tail that users feel.

The Tryssh team · July 21, 2026 →

Credential rotation after a server incident: the order matters

Contain first, inventory credentials, rotate from a clean device, invalidate old material, then rebuild and verify downstream systems.

The Tryssh team · July 21, 2026 →

Application cannot reach the database: trace the whole path

Test name resolution, network, TLS, authentication, pool saturation, and database health as separate hypotheses.

The Tryssh team · July 21, 2026 →

The deploy broke production: rollback first or debug first?

When evidence strongly ties the outage to a reversible deploy, restore service first and preserve logs for the later explanation.

The Tryssh team · July 21, 2026 →

DNS change went wrong: TTLs, caches, and split answers

Compare authoritative and recursive answers with TTLs; do not keep editing records while the first change is still propagating.

The Tryssh team · July 21, 2026 →

Docker Compose outage: dependency order is not readiness

During a multi-container stack that starts but does not work, the first danger is the outage.

The Tryssh team · July 21, 2026 →