Linux guides
21 guides in Server Setup · advanced.
Run a Self-Hosted Jitsi Meet for Video Calls
Deploy a private Jitsi Meet server with docker-jitsi-meet, configure TURN/STUN for NAT traversal, set up systemd auto-start, and scale with multiple Videobridges.
Self-Host a Matrix Server (Synapse)
Deploy a production Matrix Synapse homeserver with PostgreSQL, Nginx TLS reverse proxy, federation, and optional bridges on your own Linux VPS.
Self-Host CryptPad (Encrypted Office Suite)
Deploy CryptPad, the zero-knowledge encrypted office suite, with Docker Compose, nginx TLS, a custom domain pair, and configurable registration policies.
Self-Host a Browser-Based Dev Env (Coder/code-server)
Install code-server or Coder OSS on a Linux server, configure workspaces, harden authentication, and expose the browser IDE securely via nginx and Let's Encrypt.
Terraform State Management
Migrate Terraform from local to S3+DynamoDB remote state, enable locking, and master state surgery commands to handle drift and refactors safely.
Rootless Podman for Server Workloads
Run production containers without root using Podman's user namespaces, systemd Quadlets, subuid/subgid mapping, and rootless networking on Linux servers.
PostgreSQL Streaming Replication
Set up PostgreSQL 16 streaming replication with a primary and hot standby, covering WAL configuration, pg_basebackup, sync vs async modes, and manual failover.
PostgreSQL Backup and Point-in-Time Recovery
Learn PostgreSQL PITR: configure WAL archiving, take base backups with pg_basebackup, manage production backups with pgBackRest, and restore to a specific timestamp.
Set Up a MariaDB Galera Cluster
Set up a synchronous three-node MariaDB Galera Cluster: gcomm addressing, bootstrap sequence, SST with mariabackup, garbd arbitrator, and split-brain prevention.
Distributed Tracing with Tempo or Jaeger
Set up OpenTelemetry Collector with Grafana Tempo or Jaeger, instrument a Python service with OTLP exporters, and verify end-to-end distributed traces.
Try Stalwart, a Modern Rust Mail Server
Install Stalwart, a single-binary Rust mail server, with SMTP, IMAP4, JMAP, DKIM, SPF, and DMARC configured end-to-end on a Linux VPS.
Self-Host Mail with Mailcow Dockerized
Deploy a full self-hosted mail server with Mailcow Dockerized: DNS setup, DKIM, SOGo groupware, Let's Encrypt TLS, automated backups, and monitoring.
Build a Kubernetes Cluster with kubeadm
Bootstrap a production Kubernetes cluster with kubeadm: control-plane init, Calico or Cilium CNI, worker joins, kubelet hardening, and safe minor-version upgrades.
Set Up a Multi-Node k3s Cluster
Deploy a production-ready k3s cluster with embedded etcd HA across server and agent nodes — covering installation, joining, kubeconfig, and safe rolling upgrades.
Install Flux on k3s
Bootstrap Flux CD on a k3s cluster, set up GitRepository and Kustomization reconciliation, and deploy applications via HelmRelease — step by step.
Install Argo CD on k3s
Install Argo CD on a k3s single-node cluster using Helm, then create and auto-sync your first GitOps Application from a Git repository.
Configure Prometheus Alertmanager
Configure Prometheus Alertmanager with routing trees, receivers, inhibition rules, grouping, Go templates, and PagerDuty/Slack on-call integrations.
Mail Server Deliverability Checklist
A step-by-step advanced checklist covering PTR records, HELO identity, SPF, DKIM, DMARC, TLS, blocklist remediation, and IP warm-up for a deliverable mail server.
Set Up a Mail Server with Postfix
Build a complete self-hosted mail server with Postfix, Dovecot IMAP, OpenDKIM signing, SPF, and DMARC—step by step for Debian, Fedora, and Arch.
How to Set Up Kubernetes with k3s
Set up a lightweight Kubernetes cluster with k3s on Linux: single-node or multi-node, kubectl config, and your first real deployment in under 30 minutes.
Building Linux Thin Clients
Deploy Linux thin clients using modern LTSP, PXE boot, and NFS root setups. Covers server config, squashfs images, UEFI/BIOS PXE, and Wayland caveats.