Install Jenkins on Ubuntu: CI/CD Server Setup Guide
Install Jenkins LTS on Ubuntu, put it behind Nginx with HTTPS, secure it, create a pipeline with a Jenkinsfile, add agents and back it up.
Blog
Docker, Kubernetes, CI/CD, Git and automation for deploying and running software on servers.
Install Jenkins LTS on Ubuntu, put it behind Nginx with HTTPS, secure it, create a pipeline with a Jenkinsfile, add agents and back it up.
Version large files with Git LFS: install, track patterns, migrate existing history, LFS on Gitea and GitLab servers, storage and bandwidth, and pitfalls.
Use Docker multi-stage builds to compile in one stage and ship a slim runtime image, with examples for Node.js, Go, Python and static sites.
Self-host Woodpecker CI with Docker Compose: connect Gitea or Forgejo, server and agent, .woodpecker pipelines, secrets, image builds, deploys.
Set up SSH authentication for GitHub: generate a key, add it to your account, test it, use several accounts, and give servers read-only deploy keys.
A production Dockerfile for Django, Flask or FastAPI: slim image, dependency caching, non-root user, Gunicorn or Uvicorn, static files, Compose.
Learn Docker Compose by building a real stack: services, ports, volumes, networks, env files, health checks and the commands you use every day.
Run GitHub Actions jobs on your own VPS: install the runner as a service, labels, Docker access, cleanup, ephemeral runners, and private-repo-only security.
Install k3s on a VPS: single and multi-node clusters, the built-in Traefik ingress, persistent storage, TLS with cert-manager and upgrades.
What infrastructure as code means, declarative vs imperative tools, Terraform, Ansible, cloud-init and Compose in practice, and how to start.
Deploy Node.js without dropped requests: graceful shutdown, PM2 cluster reloads, release directories, health checks and safe migrations.
Run containers and binaries with HashiCorp Nomad: architecture, a dev agent, Docker job files, rolling updates, clusters, licensing, when it fits.
Install Argo CD on Kubernetes or k3s, connect a Git repository, create Applications with auto-sync and self-heal, use Helm and manage secrets.
Automate baseline security for Ubuntu and Debian servers with Ansible: admin user and keys, sshd, UFW, Fail2ban, auto updates, sysctl, safe rollout.
Install MicroK8s on an Ubuntu VPS: snap install, kubectl, DNS, ingress, storage, cert-manager and metrics add-ons, joining nodes for HA, ports, and vs k3s.
Podman vs Docker: daemonless and rootless design, CLI compatibility, Compose support, systemd and Quadlet, pods, security and when to choose each.
Set up Rancher on a VPS: requirements, install on k3s with Helm and cert-manager, the bootstrap password, importing or creating clusters, RBAC, and backups.
Pass environment variables to containers with -e, --env-file and Compose; .env interpolation vs env_file, precedence, ARG vs ENV, secrets.
Automate HTTPS in Kubernetes with cert-manager: Helm install, Let's Encrypt staging and prod ClusterIssuers, HTTP-01 vs DNS-01, Ingress annotations, fixes.
Find a Docker container's IP with docker inspect, list IPs of all containers, understand per-network addresses, and why service names beat hard-coded IPs.
Organise servers in Ansible inventories: INI and YAML formats, groups and children, host and group variables, patterns and dynamic inventories.
Manage Kubernetes from the terminal with k9s: install, navigate resources, filter, view logs, shell into pods, port-forward, scaling, read-only mode.
Use Caddy in Docker as a reverse proxy: automatic Let's Encrypt certificates, a two-line Caddyfile per app, shared networks, auth and reloads.