Installing Java 17 on Debian 13 and Debian 12
Debian 12 ships OpenJDK 17, Debian 13 no longer does. Here is how to install Java 17 on both, either with apt or through the Adoptium repository with Eclipse Temurin.
Every guide here comes out of running our own network and is tested on real hardware before it goes live. Each command in these articles was executed exactly as written.
These are the guides our readers open most often.
Debian 12 ships OpenJDK 17, Debian 13 no longer does. Here is how to install Java 17 on both, either with apt or through the Adoptium repository with Eclipse Temurin.
Debian ships neither Java 8 nor, from Debian 12 onwards, Java 11. Here is how to install both versions cleanly with apt anyway, using the Adoptium repository and Eclipse Temurin.
Apache2, PHP 8, MySQL or MariaDB and phpMyAdmin on Ubuntu 24.04 LTS or 22.04 LTS: the complete setup step by step, including how to secure it afterwards.
How to install a Minecraft server (Paper) on Debian or Ubuntu: from the right Java version through the download to a running server under screen.
Apache2, PHP 8, MariaDB and phpMyAdmin on Debian 13 or Debian 12: the complete setup step by step, including hardening and troubleshooting.
A small script plus a cron job is all it takes to back up every MySQL and MariaDB database in compressed form each night. Including the points where Debian and Ubuntu differ and a backup fails silently.
How to install your own TeamSpeak 3 server on Debian or Ubuntu: with a separate user, an accepted license, a saved Privilege Key and the right ports open.
A free SSL certificate for your Linux server: install Certbot on Debian and Ubuntu, issue a Let's Encrypt certificate for Apache and let it renew itself automatically.
Specialized DDoS protection for game servers: attacks are filtered in real time instead of taking the IP offline. With real attack cases from live operations.
Java 8 and Java 11 are still part of the official package sources on Ubuntu 24.04 LTS and 22.04 LTS. Here is how to install the version you need and set it as the default.
Klarna, PayPal, paysafecard, card, Apple Pay, Google Pay and cryptocurrencies: which payment options KernelHost offers and how quickly an invoice counts as paid.
Java 21 is the current LTS release. Install it on Debian 13 straight from apt, on Debian 12 through the Adoptium repository, or as an Oracle package.
Firewall rules kick in too late once the line is already congested. What actually helps: filtering in the network in front of the server, permanently active and without null-routing.
Once a Debian release reaches its end of life, apt update aborts with a 404 error. Here is how to switch sources.list over to archive.debian.org and make the server updatable again.
Nukkit is a lean server software for the Minecraft Bedrock Edition. This guide walks through the complete installation on Debian and Ubuntu, from the Java package to a running server.
Nullping attacks need barely any bandwidth and still take down entire BungeeCord networks. How the attack works and how it gets filtered out in real time.
The Modoboa installer sets up Postfix, Dovecot, webmail and SSL in a single run. Here is how to install your own mail server on Debian and set the DNS records it needs.
How a DDoS attack unfolds, which types exist and why mitigation belongs in the network in front of the server. With real attack cases from our own operations.
Two commands are enough on any system in the Red Hat family: enable EPEL, install htop. Why CRB and PowerTools are not needed for it, measured in real containers.
Game servers need their own DDoS protection: UDP, freely chosen ports, sensitive latency. How permanent real-time filtering keeps the game online even while it is under attack.
Node.js 10 and 12 have been out of support for years. Here is how to install the current LTS release together with npm on Debian, using NodeSource with the signing key in /etc/apt/keyrings.
After a server reboot your Minecraft server should come back up on its own. We show the systemd service unit as the clean way and the cron job with @reboot as the alternative.
Visitors still landing on the unencrypted page? A few lines in the .htaccess file are enough to redirect every HTTP request permanently to HTTPS with a 301 redirect.
How applications, game servers and scripts start by themselves after every reboot: with a systemd service unit as today's standard, or alternatively through a cron entry with @reboot.
On Ubuntu 24.04 LTS and 22.04 LTS, OpenJDK 17 sits right in the official package sources. Here is how to install Java 17 without a PPA and set JAVA_HOME correctly.
Pay for your KernelHost server with Bitcoin and other cryptocurrencies: how the payment works, what to watch out for and why crypto counts as a secure payment method.
A short PowerShell script changes the RDP port on Windows, creates the matching firewall rule and restarts the Remote Desktop service, with no server reboot.
Step by step to your own Hytale server on Debian or Ubuntu: install Java 25, download the server files, create a start script and authenticate the server.
Hytale communicates over QUIC and UDP, not over TCP like Minecraft. What that means for DDoS mitigation and how to proceed when an attack hits.
A locked out Windows account on RDP login is usually the result of automated attacks. This PowerShell script unlocks the account, shows the source IPs and adjusts the lockout policy.
A VPN service, a WireGuard server you set up yourself or a ready-made Dedicated Private VPN Server: what a VPN does, what it costs and which route suits whom, with a comparison table and a worked example.
How much RAM does a Minecraft server need for 10, 20, 50 or 100 players? Rules of thumb by server type, how to set the heap correctly, what the game panel takes care of and which KernelHost plan fits, from MC-1 to Professional VDS.
Latency, jurisdiction and connectivity: why the server location decides things that no later upgrade can change, what Frankfurt at DE-CIX means for users in Vienna or Munich, and which points to check before you order.
Shared or exclusive hardware, from €9.99 or from €69.99 a month: this comparison uses the four KernelHost server classes to show which server fits which project, with price tables, a decision matrix and three worked examples.
Windows VPS or Linux VPS, and if Windows, how many cores, how much RAM and NVMe? A decision guide by use case, with a sizing table, the license question, hardening in five steps and the plans that fit.
Ports, a rate limit on the query port, RCON and real measurements: what you can secure on an ARK cluster yourself, and at what attack size that is no longer enough.
The 3-2-1 rule on a single root server, restic and Borg with examples, retention and encryption. Plus the step almost everyone skips: actually testing the restore.
With Counter-Strike 2 and the Source titles, game traffic and the server query run over the same port 27015. What you can secure yourself, and at what attack volume only filtering in the network in front of the server still helps.
Which ports a FiveM server really needs, how to secure the query endpoints, txAdmin, rate limits and the whitelist, and from which attack size on only upstream filtering helps.
hostnamectl, /etc/hostname and /etc/hosts working together, the switch against cloud-init resetting the name, and the effects on sudo, mail servers and certificates.
Time windows, unit filters, priorities and search patterns: how to cut out exactly the section that belongs to the incident, in three or four commands. Plus a journal that survives reboots, with the error messages quoted verbatim.
The difference between upgrade, full-upgrade and dist-upgrade, packages kept back, dpkg configuration prompts, kernel reboots with needrestart, and the release upgrade as a category of its own.
With a 504 the backend was reachable, it only answered too slowly. How to use a timing log to pin down where the time goes, which of the many timeouts really applies, and why a higher timeout usually only postpones the outage.
The message server reached pm.max_children does not mean you should double the value. Measure, calculate, choose the process manager mode, and then prove that the value really fits.
RAGE MP listens on 22005 UDP and 22006 TCP, alt:V on 7788. This guide shows step by step what you can secure yourself and from which point on only filtering in the network in front of the server still helps.
Rust servers are almost always attacked at wipe or in the middle of a raid. What you can secure yourself, where self-protection hits physical limits, and what has to happen upstream in the network.
SA-MP and open.mp handle game traffic, query and RCON over one single UDP port. This guide shows what you can secure yourself, and from which attack size only the filtering in the network in front of the server still helps.
Record the measurements, close ports, limit the query port and packet rates: what really helps during a sustained DDoS attack. And from which size onwards only the filtering in front of the server works.
A check script, a systemd timer and a tested notification path are enough for a single root server. This guide shows what to monitor, how to verify every step and when the big toolbox starts to pay off.
Changing the SSH port almost always fails on the order of the steps. This guide keeps the server listening on both ports while you work, so the old one only goes away once the new one is proven to work.
adduser vs useradd, the sudo and wheel groups, editing sudoers safely with visudo and the test that proves you have not locked yourself out before you switch root off.
Close the query port, tighten anti-flood, set a rate limit: what you can secure on a TeamSpeak 3 server yourself. And where those measures stop, because the line in front of it is already full.
How to set up unattended-upgrades so that it really runs: allowed origins, excluded packages, reboot behavior, the mail report and the proof in the log that something actually happened.
A wrong server clock never shows up as a clock problem: it shows up as a rejected certificate, as a package source apt refuses, or as a cron job at the wrong hour. How to set the time zone and the time service correctly, and how to prove that synchronization is running.
Why apt is suddenly locked, which process is behind it and how to find it with lsof and fuser. Plus how to remove the lock file without damaging the package database.
Not every overload is an attack. Here is how to use ss, packet counters, kernel messages and web server logs to tell a DDoS attack apart from a load spike or a software bug, beyond doubt.
The number in the error tells you everything: 52 is Java 8, 55 is Java 11, 61 is Java 17, 65 is Java 21. Here is how to find out which Java is really running and how to activate the right version.
Which Java version your application really needs, which one your distribution actually offers, and how to run several versions in parallel and switch between them cleanly.
The message java.lang.OutOfMemoryError: Java heap space does not automatically mean too little RAM. How to size Xmx and Xms correctly, find memory leaks and use swap sensibly.
Is it the server or the connection? Both feel identical but have completely different causes. Measure with TPS and Spark, pregenerate chunks and find the real culprit.
Forgot the root password? Chances are you do not need one. And if you do: here is how to open the database for exactly one minute without handing it to half the internet.
The socket error has five realistic causes. How to work out in five minutes which one you are dealing with, and why localhost and 127.0.0.1 are not the same thing.
From an empty server to an overview page without warnings: web server, PHP modules, database, data directory permissions, trusted_domains, upload limits and background jobs via cron.
From proxy_pass to the WebSocket upgrade: the complete guide to nginx as a reverse proxy, including the four headers without which your application thinks every visitor is 127.0.0.1.
Panel and Wings are two separate programs with two separate jobs. Once you have understood that, Pterodactyl installs in half an hour. If you have not, you spend days hunting for the error.
A freshly installed Windows server collects thousands of failed RDP logons within hours. This guide shows which measures actually work, what each one costs you and how not to lock yourself out.
The RDP client gives up before you ever see a sign-in screen. The five realistic causes in order, each with the check command, the fix and the way in through the console.
Your SSH login fails with Permission denied (publickey)? Seven causes, from file permissions and AllowUsers through to SELinux, each with the exact log line and the matching fix.
SteamCMD is the shared foundation of almost every game server on Steam. This guide covers the installation, anonymous login, app_update with validate, running it as a systemd service and the typical error messages.
The order is what decides it: prepare the new server, copy the data, test under the real domain via the hosts file, issue the certificate in advance, and only then switch DNS. With a rollback path and the error messages you will actually see.
The checklist for the time right after provisioning, in the correct order: check the license, set the password, time zone, updates, firewall, harden RDP, disks and roles. Including the places where it goes wrong.
The job runs in your shell but not in cron. This guide explains the five time fields, the difference between the user crontab and /etc/cron.d, the PATH trap and how to prove that a job really succeeded.
Why docker.io is too old on Debian 12 but perfectly fine on Ubuntu, how to add the official repository with a keyring instead of apt-key, why Compose is a plugin now and why the docker group effectively means root.
How to configure fail2ban cleanly through jail.local, get the sshd jail running on all four current LTS distributions, verify and lift bans, and which mistakes will otherwise slow you down.
When df reports 100% and du finds nothing: the complete path from measuring to freeing up space, for Debian 12 and 13 as well as Ubuntu 22.04 and 24.04.
A wildcard certificate cannot be validated through the web server, it always goes through a TXT record in DNS. This guide shows the manual and the automatic route on Debian 13, Debian 12, Ubuntu 24.04 and Ubuntu 22.04, plus the errors it actually fails on.
A database is not secure just because the package installed cleanly. This guide walks through mysql_secure_installation, settles the unix_socket question and shows how to give every application its own database user.
Why "Access denied for user" usually has nothing to do with a wrong password: unix_socket, localhost versus 127.0.0.1, privileges and the safe root password reset.
502 Bad Gateway means nginx got no valid response from the backend. The five most common causes, the matching line in the error log, and how to prove that the fix really works.
From the apt package to the first server block with PHP-FPM and HTTPS: which nginx version each distribution ships, what is different about the nginx.org repository, and how to get rid of the typical errors.
Service gone, no crash report, the log file ends mid-sentence: how to prove an OOM kill, create a swap file cleanly and tell when swap only postpones the problem.
Installation from the distribution package or the PGDG repo, first access through the postgres user, creating a database and a role, understanding pg_hba.conf and a backup that really holds up.
The first 30 minutes on a new root server decide how it will run. Nine steps in the right order, including the Debian 13 and Ubuntu 24.04 pitfalls that most guides leave out.
ed25519 on Linux, macOS and Windows, the cloud-init trap in /etc/ssh/sshd_config.d, socket activation on Ubuntu 24.04, proof through sudo sshd -T and the rescue route via the console.
The first SSH connection step by step: PuTTY and OpenSSH on Windows, Terminal on macOS and Linux, checking the fingerprint properly, transferring files and fixing the usual error messages.
Fixed IPv4 and IPv6 addresses on Ubuntu 24.04, Ubuntu 22.04, Debian 13 and Debian 12: netplan, ifupdown and systemd-networkd compared, with a rollback strategy and extra IPs.
The unit file line by line: Type, User, WorkingDirectory, Restart and network-online.target. With the error messages verbatim and the proof that the service really survives a reboot.
The correct order when building a UFW rule set, IPv6 rules, nftables as the backend, rate limiting with ufw limit and the way back in through the console if it does go wrong.
From an empty server to a working WireGuard tunnel: key pairs, NAT with nftables, wg-quick as a service, a QR code for your phone and the three failure modes that really cost you time.