Free self-hosting and Linux automation tools
Free converters, generators and calculators for self-hosting and Linux automation. Everything runs in your browser.
Tools
-
docker-compose to quadlet converter
Turn a compose file into .container, .volume, .network and .pod files for systemd.
-
docker run to quadlet converter
Paste a docker run command, get a .container file that systemd can start at boot.
-
cron to systemd timer converter
Paste a crontab line, get a working .timer and .service pair plus the command to enable it.
-
systemd unit explainer
Paste a unit file or quadlet to get every key explained and its mistakes flagged.
-
Caddyfile generator
Fill in a form, get a valid Caddyfile for reverse proxies, static sites and redirects.
-
WireGuard config generator
Generate wg0.conf, client configs, keys and QR codes, entirely in your browser.
-
chmod calculator
Convert file permissions between 755 and rwxr-xr-x, with a plain-English explanation.
-
Shell command explainer
Paste a command to see what each flag, pipe and redirection does, and whether it is dangerous.
-
df, du and free explainer
Paste df, du or free output to see which disk is full, what takes the space and whether memory is really low.
-
rsync and tar backup command builder
Pick a folder and a destination; get the backup script, a dry run, a nightly systemd timer and the restore command.
-
SSH key and config helper
Set up SSH key login step by step: create the key, copy it, get a short ssh name, then switch off passwords safely.
-
firewalld port helper
Choose a port or service and who may connect; get the firewall-cmd commands, how to check them and how to undo them.
-
fstab generator for NAS shares
Enter the NAS, the share and a folder; get the fstab line, the credentials file and the commands to test it safely.
-
cron schedule builder
Click together a schedule in plain words and get the systemd timer, the cron line and the next 5 run times.
-
journalctl command builder
Tick what you want to see in the systemd journal and get the journalctl command, with every flag explained.
-
find and grep command builder
Click together a find or grep command, see what every flag does, and preview before you delete anything.
Quadlet examples
Tested quadlet files for real self-hosted services, each with the reasons behind its layout. All quadlet examples
-
whoami quadlet
The hello world of quadlets: one tiny web server as a systemd user service.
-
Media stack pod: Radarr, Sonarr, Lidarr, Prowlarr, NZBGet, Bazarr
Six media apps in one rootless pod that talk over localhost and share one /srv/media folder.
-
Lidarr next to an existing media pod
Lidarr as a standalone quadlet that joins an existing media stack without touching the pod.
-
Jellyfin with Intel Quick Sync
A rootless Jellyfin media server with hardware transcoding on an Intel iGPU.
-
Seerr (Jellyseerr) media requests
A request page where Jellyfin users ask for films and series, handed to Radarr and Sonarr.
-
UniFi Network Application and MongoDB pod
An app and its database in one pod, with the passwords in podman secrets instead of the unit files.
-
AdGuard Home quadlet
A network-wide DNS ad blocker as a rootful systemd service that starts at boot.
-
Caddy reverse proxy quadlet
Automatic HTTPS in front of your other containers, with certificates kept in a named volume.
-
ntfy with systemd OnFailure alerts
A private ntfy server plus one drop-in that sends a push alert whenever a user service fails.
-
Gatus status page
Uptime checks for every service, written as YAML, with a status page and ntfy alerts.
-
Homepage dashboard with login
A start page for every service, with live widgets and a login, and no docker socket.
-
NetAlertX network monitor quadlet
A LAN device scanner that alerts on new devices, using the host network and raw sockets.
-
changedetection.io quadlet
A website change monitor with its data in a named volume you can back up in one command.
-
Recyclarr v8 on a systemd timer
A daily one-shot sync of TRaSH guide profiles and minimum sizes into Radarr and Sonarr.
-
restic backups with an offsite cloud copy
Nightly restic snapshots of every container volume, plus a daily one-way copy to the cloud.
Linux basics for self-hosters
Short guides to the commands a home server needs, each linked to the tool that does the typing. All Linux basics guides
-
Rolling or fixed release
Pick a distribution by how it updates, not by its wallpaper, and know how long it gets security fixes.
-
zypper, dnf and apt compared
Install, upgrade, search and clean up packages on openSUSE, Fedora and Debian/Ubuntu without guessing.
-
Desktop environments compared
Tell KDE Plasma, GNOME, Xfce and friends apart, pick one that suits you, and try another without reinstalling.
-
The directory layout
Know where configuration, data, logs and programs live, so you know what to edit and what to back up.
-
File permissions
Read rwxr-xr-x at a glance, set it with chmod and chown, and fix the classic permission mistakes.
-
Users, groups and sudo
Create users, share files through groups, and set up sudo the way your distribution expects.
-
find and grep
Find files by name, size and age, search inside them, and delete old files without surprises.
-
Disk space
See which disk is full, find what filled it, and understand why df, du and btrfs disagree.
-
Processes and resources
Find what eats CPU or memory, stop a stuck program politely, and keep long jobs out of nohup.
-
systemctl and journalctl
Start, stop and enable services, then read their logs by unit, boot, time and priority.
-
Network basics
Find your address and interface, see which ports are open, set a static IP, and check DNS.
-
Copy, sync and archive
Copy and sync folders without surprises, pack archives with tar, and know what a real backup needs.
openSUSE home server setup
Set up an openSUSE Leap or Tumbleweed home server: why openSUSE, install, SSH, updates, snapper rollback, firewalld, rootless podman and quadlets. All openSUSE home server setup guides
-
Why openSUSE
Weigh openSUSE's rollbacks, tooling and podman support against its smaller community, and pick Leap or Tumbleweed.
-
Install and first steps
Install openSUSE with the choices that matter later, then update, name and check the new server.
-
Users and SSH hardening
Make sudo use your own password, log in with keys only, and lock down sshd without locking yourself out.
-
Updates with zypper
Use the right zypper command for Leap or Tumbleweed, finish the update properly, and keep extra repos in check.
-
Snapper rollback
Find the snapshot from before the problem, restore one file or the whole system, and keep snapshots from filling the disk.
-
firewalld basics
Read the current rules, open a service or port the permanent way, and limit it to the networks that need it.
-
Rootless podman
Give containers their own unprivileged user, make limits work with cgroup delegation, and avoid the session traps.
-
Quadlet basics
Write a .container file, let systemd generate the service, start it at boot, and debug it when it does not appear.
-
AppArmor and SELinux gotchas
Find out which security module you run, fix the usual container volume denials, and read the log instead of switching it off.
-
Automatic updates
Let the server patch itself on a schedule, reboot when needed, and tell you when something failed.
Cockpit on openSUSE
Run Cockpit on openSUSE Leap or Tumbleweed: install it, manage rootless podman quadlets and systemd units, and reach it safely over WireGuard. All Cockpit on openSUSE guides
-
Install Cockpit
Install Cockpit, enable its socket, decide who may reach port 9090, and get administrative access on the first login.
-
The podman plugin
Add the Podman containers page, see your rootless and rootful containers, and understand why some containers are missing.
-
Quadlets and systemd units
Start, stop and debug quadlet services from Cockpit, and know which tasks still belong in the terminal.
-
Reach Cockpit over WireGuard
Put the WireGuard interface in its own firewalld zone, allow Cockpit only there, and prove that the internet cannot reach it.
-
Common gotchas
Recognise the usual Cockpit problems on openSUSE by their symptom and fix them in a minute.