How to Set a Static IP Address on Ubuntu Server (Netplan)Give your Ubuntu server an IP address that never changes — the two ways to do it (router reservation or Netplan), a copy-and-paste config, and how to recover if you get it wrong.
How to Change the Hostname and Time Zone on a Linux ServerRename your Linux server, set the right time zone so logs and cron jobs make sense, check the clock is syncing automatically, and fix the hosts file so sudo stops complaining.
How to Start, Stop and Enable Services on Linux with systemctlControl the programs that run in the background on your server — start, stop, restart and check a service, make it start at boot, see what's failed, and write your own service for a script.
How to Read Logs on a Linux Server (journalctl and /var/log)Find out why something broke — read system logs with journalctl, filter by service, time and severity, watch logs live, look at the files in /var/log, and stop logs eating your disk.
How to Check and Free Up Disk Space on a Linux ServerServer out of space? See what's full with df and du, find the biggest folders fast, clear apt caches, old logs, Docker leftovers and snap versions, and stop it happening again.
How to Mount a Drive on a Linux Server (and Make It Stay Mounted)Add a second hard drive or USB disk to your server — find it with lsblk, format it if needed, mount it, and add it to fstab so it comes back after every reboot without stopping the boot if it's unplugged.
How to Install Nextcloud with Docker (Your Own Private Cloud)Replace Google Drive and Dropbox with your own server — a Docker Compose file for Nextcloud and its database, first-run setup, the phone and desktop apps, HTTPS through Nginx, and the fixes for the usual warnings.
How to Reset a Forgotten Password on Ubuntu Server (Recovery Mode)Locked out of your own server? Boot into recovery mode from the GRUB menu, get a root shell, reset any user's password or restore sudo access, and get back in — plus how to make sure it never happens again.
How to Install Portainer (Manage Docker from a Web Page)See every container, image and volume on your server in a browser — install Portainer, read logs, restart things, open a shell in a container, and deploy compose files as stacks.
How to Install Gitea (Your Own GitHub on a Linux Server)Host your own Git repositories with Gitea — compose file with a database, first-run setup, SSH push on a second port, mirroring GitHub repos, and turning off public registration.
How to Set Up Tailscale on a Linux Server (VPN with No Port Forwarding)Reach your server from anywhere without touching the router — install Tailscale, connect your phone and laptop, use MagicDNS names, share a device with a friend, and route your whole home network through the server.
How to Sync Files Between Devices with Syncthing (No Cloud Needed)Keep a folder identical on your laptop, phone and server without any cloud — install Syncthing, pair devices by ID, share folders, use the server as the always-on copy, and keep old versions of changed files.
How to Back Up a Linux Server to Cloud Storage with rcloneGet an off-site copy of your server's backups — set up rclone with Backblaze B2, Google Drive, OneDrive or any S3 bucket, encrypt it so the provider can't read it, sync nightly from cron, and restore a file.
How to Make Encrypted, Deduplicated Backups with resticUpgrade from tar to restic — one tool that backs up to a local drive or the cloud, encrypts everything, only stores changed blocks, keeps snapshots you can browse, and prunes old ones on a policy.
How to Search and Edit Text on Linux with grep, sed and awkThe three text tools every server admin leans on — grep to find lines, sed to change them in place, awk to pull out columns — with the ten forms you'll actually use on logs and config files.
How to Use SSH Tunnels and Port Forwarding (Reach Private Services Safely)Use the SSH connection you already have to reach services bound to localhost — local forwarding for admin pages, a SOCKS proxy for browsing through home, remote forwarding to expose something outward, and making tunnels permanent.
How to Extend a Disk or Partition on Linux (growpart, LVM and resize2fs)Made the virtual disk bigger but Linux still shows the old size? Grow the partition, extend the LVM volume if there is one, and resize the filesystem — online, no reboot — plus how to use the space Ubuntu's installer left unallocated.
How to Manage Log Files with logrotate (Stop Logs Filling the Disk)How Ubuntu keeps /var/log from growing forever, how to add rotation for your own app's log file, compress and keep a sensible number of old ones, cap Docker's container logs, and test a config without waiting a day.
How to Add Two-Factor Authentication to SSH (Keys Plus an Authenticator Code)Require a six-digit code from your phone as well as your SSH key — install the Google Authenticator PAM module, enrol with a QR code, configure sshd so keys and codes are both needed, keep backup codes, and avoid locking yourself out.
How to Create SFTP-Only Users on Linux (File Access Without a Shell)Give a client, a camera or a family member a folder they can upload to and nothing else — create a jailed SFTP user with a Match block in sshd_config, get the chroot permissions right, and test it from WinSCP.
How to Install n8n (Self-Hosted Automation Like Zapier, on Your Server)Run n8n in Docker and build workflows that connect your apps — a compose file with the right URL settings, a first workflow that watches RSS and messages Telegram, webhooks through your reverse proxy, and credentials kept encrypted.
How to Run a Local AI Chatbot on Your Server with Ollama and Open WebUIRun a private ChatGPT-style assistant on your own hardware — install Ollama, pull a model that fits your RAM or GPU, add Open WebUI for a browser chat the whole house can use, and know what to expect from CPU-only speed.
How to Install Navidrome (Stream Your Music Collection Like Spotify)Your MP3s and FLACs on every phone and speaker — install Navidrome in Docker, organise the library so tags and covers work, connect Subsonic apps like Symfonium and play:Sub, add users, and scrobble to Last.fm.
How to Install Audiobookshelf (Self-Hosted Audiobooks and Podcasts)Listen to your audiobooks and podcasts from your own server — install Audiobookshelf in Docker, organise the folders so it finds metadata, use the phone app with offline downloads and position sync, and subscribe to podcasts that download themselves.
How to Install FreshRSS (Your Own News Reader, No Algorithm)Follow sites, blogs, YouTube channels and newsletters in one place you control — install FreshRSS in Docker, add feeds, turn pages without feeds into feeds, read on your phone with a client app, and keep it fast.
How to Install Planka (A Self-Hosted Trello for Projects and the Household)Boards, lists and cards on your own server — install Planka in Docker with PostgreSQL, create a project for the house or your work, drag cards between columns, add labels, due dates and attachments, and share it with the family.
How to Install ntfy (Push Notifications to Your Phone from Any Script)Send a phone notification with one curl command — self-host ntfy in Docker, subscribe to topics in the app, send messages with titles, priorities and actions from scripts, cron, Uptime Kuma and Home Assistant, and lock it down with access control.
How to Install Homepage (One Start Page for Every App on Your Server)A single bookmark for the whole server — install Homepage in Docker, list your apps with icons and live status, show disk, CPU and container stats as widgets, pull data from Pi-hole, Jellyfin and Uptime Kuma, and make it the family's start page.
How to Build Your Own Docker Image (A Dockerfile for Your Script or App)Package a Python script, a Node app or a static site as a container you can run with compose — write a Dockerfile, build and tag it, keep it small with slim bases and .dockerignore, run it as a non-root user, and rebuild automatically.
How to Know When a Cron Job Didn't Run (Self-Hosted Healthchecks)Uptime monitors catch things that are down; dead-man's-switch monitors catch things that silently stopped — run Healthchecks in Docker, add a ping to each backup and cron job, and get alerted when a job is late or fails.
How to Install CrowdSec (Fail2ban That Shares Attackers with Everyone Else)Block IPs that have attacked other people before they reach you — install CrowdSec on Ubuntu, add the firewall bouncer, parse SSH and Nginx logs, enrol in the community blocklist, and see decisions and alerts from the console.
How to Install Umami (Privacy-Friendly Website Analytics Without Google)See how many people read your site without tracking them — run Umami in Docker with PostgreSQL, add one script tag, read visits, pages, referrers and countries on a clean dashboard, track events, and share a public stats page.
How to Back Up Windows PCs to a Linux Server (File History, Full Images and Restic)Three ways to back up every Windows machine in the house to the server — File History to a Samba share for documents, a full disk image with Veeam Agent or Macrium for disaster recovery, and restic over SFTP for encrypted, versioned backups you control.
How to Make Your Server a Backup Target for Other Machines (restic REST Server)Turn the server into a fast, append-only backup destination — run restic's REST server in Docker, give each machine its own repository and login, back up a Pi, a laptop and a friend's server to it over HTTPS, and stop ransomware from deleting the backups.
Linux Server Glossary: 60 Terms Explained in Plain EnglishEvery word that got used without explanation across 120 tutorials — from apt and bridge to volume, VPN and ZFS — defined in a sentence or two each, with the tutorial number to read if you want the full story.
How to Set Up Zigbee2MQTT (Cheap Zigbee Sensors and Bulbs Without a Hub)Replace every brand's hub with one USB stick on your server — set up Zigbee2MQTT in Docker with a Sonoff or SkyConnect coordinator, pair IKEA, Aqara and Hue devices, and let Home Assistant discover them through MQTT.
How to View All Your Container Logs in One Place with DozzleStop typing docker compose logs — run Dozzle for a live, searchable web view of every container's log, with filtering, multi-container split view, a second server's logs via an agent, and a login so it stays private.
How to Run Your Own Chat Server with Matrix (Conduit and Element, Self-Hosted)A family or team chat that isn't WhatsApp — run the lightweight Conduit Matrix server in Docker with the Element web client, set up the well-known records so your domain works as a username, create accounts, and talk to the wider Matrix network.
How to Set Up Joplin Server (Sync Your Notes Between Every Device, Encrypted)Evernote-style notes with Markdown, attachments and web clipping, synced through your own server — run Joplin Server in Docker with PostgreSQL, create users, point the desktop and phone apps at it, turn on end-to-end encryption, and share a notebook.
How to Install code-server (VS Code in the Browser, on Your Server)Edit your compose files, scripts and sites in a real VS Code from any browser — install code-server in Docker, mount the folders you work on, add extensions, open a terminal on the server, and lock it behind a password and HTTPS.
How to Self-Host the Tailscale Control Server with HeadscaleKeep Tailscale's convenience without Tailscale's servers — run Headscale in Docker behind your reverse proxy, register your devices to it with the normal Tailscale apps, add users and routes, and understand what you give up.
Should You Host Your Own Email? (And How, with Mailcow, If You Still Want To)The honest case against running your own mail server — and the full recipe if you do it anyway: a VPS with a clean IP, Mailcow in Docker, the DNS records that stop you landing in spam, and the webmail, calendar and antispam you get.
How to Manage Several Servers with Ansible (Run the Same Change on All of Them)Stop SSHing into each box in turn — install Ansible on your laptop or server, write an inventory of your machines, run ad-hoc commands and updates across all of them, and write a first playbook that installs and configures a package idempotently.
How to Put Smart-Home Devices on Their Own VLAN (and Still Reach Them from the Server)Keep cheap cameras and plugs away from your laptops — create an IoT VLAN on a capable router or switch, give the server a tagged interface on it with Netplan, write the firewall rules that let Home Assistant in but the devices nowhere, and handle mDNS discovery across the boundary.
How to Set Up Multi-Room Audio with Snapcast (Synchronised Music on Cheap Speakers)Sonos without Sonos — run a Snapcast server on your home server fed by Navidrome, Spotify Connect or any source, put a Pi and a cheap speaker in each room as clients, control rooms and volume from a web page or Home Assistant, all perfectly in sync.
How to Run Two Pi-holes with Keepalived Failover (DNS That Survives a Server Reboot)Stop a server reboot taking the house offline — run a second Pi-hole on a Pi, share one virtual IP between them with keepalived, keep blocklists and settings in sync with Nebula-sync or Orbital, and let the router point at an address that's always answering.
How to Install PostgreSQL and pgAdmin on a Linux Server (The Database Half Your Apps Want)MariaDB covered WordPress; PostgreSQL is what Immich, Gitea, Paperless, Nextcloud and most modern apps prefer — install it as a shared container or on the host, create a database and user per app, add pgAdmin for a web UI, back up with pg_dump, and tune the two settings that matter.
How to Run Rootless Docker (Containers That Can't Become Root on the Host)The Docker socket is root — rootless mode takes that away: install the rootless daemon for your user, migrate a stack, handle ports under 1024 and the things that don't work, decide which hosts are worth it, and compare with Podman.
How to Encrypt a Data Drive with LUKS (and Unlock It at Boot Without Typing a Passphrase)A stolen server shouldn't mean stolen photos and documents — encrypt the data drive with LUKS, add a passphrase and a keyfile, unlock automatically at boot from a key on the system disk or a USB stick, mount via crypttab and fstab, and know what encryption does and doesn't protect.
How to Use Btrfs Snapshots on the System Disk (Roll Back a Bad Update in One Command)ZFS is for the data pool; for the system SSD, Btrfs gives you snapshots with no extra RAM — install Ubuntu on Btrfs with @ and @home subvolumes, take a snapshot before every apt run with Snapper, roll back from GRUB when an update breaks boot, and send snapshots to another disk.
What to Do If Your Server Is Hacked (A Calm, Ordered Incident Response for a Home Server)Strange processes, a container mining crypto, logins you didn't make — the steps in order: isolate without destroying evidence, capture what's running, find how they got in, decide between clean and rebuild (rebuild), rotate every secret, and the two hours of hardening afterwards.
How to Use SSH Certificates Instead of Keys (One CA, No More authorized_keys Files)Stop copying public keys to every machine — create an SSH certificate authority, sign user keys with an expiry and a list of allowed hosts, have every server trust the CA with one line, sign host keys so the 'unknown fingerprint' prompt goes away, and revoke a lost laptop in seconds.
How to Install Apache Guacamole (RDP, VNC and SSH to Every Machine from One Browser Tab)A remote desktop gateway in the browser — run Guacamole with its database in Docker, add RDP connections to Windows machines, VNC to Linux desktops and SSH to servers, put it behind HTTPS with 2FA, and reach every screen in the house from a locked-down work laptop.
How to See What's Using Your Bandwidth with ntopng (Which Device, Which Site, Right Now)The internet is slow and nobody knows why — run ntopng on the server to see every device's traffic by host, protocol and destination, mirror or route the LAN through it so it sees everything, spot the TV uploading telemetry and the laptop syncing 40 GB, and keep a week of history.
The Small Tools Worth Self-Hosting (IT-Tools, Excalidraw, CyberChef and Draw.io in One Afternoon)Four single-container utilities that replace a dozen 'free online tool' websites — IT-Tools for hashes, tokens, JSON and QR codes, Excalidraw for sketches, CyberChef for decoding anything, Draw.io for diagrams — in one compose file, with Homepage tiles, and nothing you paste ever leaving the house.
How to Install Jellyseerr (Let the Family Request Films and Shows for Jellyfin)A Netflix-style browse-and-request page for your Jellyfin — install Jellyseerr in Docker, sign in with Jellyfin accounts, let people request titles with approval rules and quotas, get notified in ntfy or Telegram, and see what's already in the library before anyone asks again.
How to Install Kavita (A Fast Reader for Comics, Manga and Ebooks on Every Device)Read CBZ, CBR, EPUB and PDF collections in the browser with progress sync — install Kavita in Docker, organise libraries so series and volumes are detected, use the web reader on phones and tablets, add users with age ratings, and connect reader apps via OPDS.
How to Self-Host a Helpdesk with FreeScout (A Shared Inbox That Turns Emails into Tickets)Help Scout without the per-seat fee — run FreeScout in Docker, connect a support mailbox over IMAP/SMTP so every email becomes a conversation, assign, tag and reply with saved answers, keep notes the customer doesn't see, and add modules for knowledge base, time tracking and SLAs.
The Complete Map: 200 Linux Server Tutorials by Goal (Start Here)Every tutorial in the series, organised by what you're trying to do rather than the order it was written — the first weekend, hosting your files and media, leaving the cloud, running a small business, locking it down, keeping it alive, and the reference pages to bookmark.