Netcup VPS 与 Root Server 的 Ubuntu 24.04 LTS 生产环境初始化与安全加固指南
当您的 Netcup VPS 或 Root Server 在服务器控制面板(SCP)中完成 Ubuntu 24.04 LTS 官方系统镜像安装后,最初 25 分钟的系统工程初始化操作,直接决定了这台服务器在未来数年内是能够稳定承载高并发业务,还是频繁陷入在线快照数据损坏、SSH 暴力破解洪水攻击以及跨境 TCP 吞吐率低下的泥潭。本生产级运维手册(Runbook)将带您一步步完成 KVM 半虚拟化(Paravirtualization)驱动核验、安装用于在线热快照文件系统冻结(fsfreeze)的 QEMU Guest Agent、创建遵循最小权限原则的非特权管理员账户、针对不同 ECC 物理内存规格的 NVMe 交换分区(Swap)与 Google TCP BBR 拥塞控制内核参数调优,以及双栈网络边界防护加固。
环境要求 // 前置条件清单
检查清单- ✓ 一台已开通并处于运行状态的 Netcup VPS(如 VPS 500 G12.5 或 VPS 1000 G12.5)或 Root Server(如 RS 1000 G12.5)
- ✓ 具备 Netcup 服务器控制面板(Server Control Panel,简称 SCP,访问地址为 servercontrolpanel.de)的登录权限
- ✓ 本地工作站已安装 OpenSSH 客户端(Linux/macOS 终端或 Windows 11 PowerShell),并已在本地生成过 Ed25519 非对称密钥对
核心技术结论 (Key Takeaways)
核心摘要-
01 第一时间安装并启动
qemu-guest-agent守护进程,以便 Netcup SCP 宿主机管理程序在执行在线写时复制(Copy-on-Write)快照时能够通过 VirtIO 串口下发FIFREEZE文件系统冻结指令,并支持干净的 ACPI 优雅关机。 -
02 核实底层块存储设备已采用
virtio_scsi或virtio_blk半虚拟化总线驱动,并开启每周自动执行的fstrim.timer块丢弃(TRIM/Discard)定时器,防止企业级 NVMe/SSD 存储池发生写放大与随机 IOPS 衰减。 -
03 创建独立的非 root 管理员账户(如
deployadmin),并在本地开启第二个终端窗口实测验证 Ed25519 公钥登录与sudo提权完全正常后,再通过/etc/ssh/sshd_config.d/99-netcup-hardening.conf禁用 root 登录与密码认证。 -
04 根据服务器物理 ECC 内存容量配置 2 GB 至 8 GB 的
/swapfile(将vm.swappiness压低至10),并开启 Google TCP BBR 拥塞控制(net.ipv4.tcp_congestion_control = bbr),从而在 Netcup 的 1 Gbit/s 与 2.5 Gbit/s 虚拟网卡上充分发挥跨境高延迟链路的吞吐性能。
📑 本文目录导航(共 4 节) ▼
第一步:核验 KVM 半虚拟化驱动、升级系统软件包并启用 QEMU Guest Agent
在登录 SSH 之前,请先进入 Netcup 服务器控制面板(SCP,网址为 servercontrolpanel.de),依次打开 Settings → General(设置 → 常规),确认磁盘控制器驱动(Storage Driver)已设置为 virtio-scsi(或 virtio),且网络接口卡模型(NIC Model)已设置为 virtio。与模拟传统物理硬件(如 IDE/SATA 磁盘或 Intel e1000 网卡)相比,KVM 半虚拟化 VirtIO 驱动完全绕过了 QEMU 的设备模拟层开销,允许 Ubuntu 24.04 LTS 内置的 Linux 6.8+ 内核直接通过共享环形缓冲区(virtqueue)与宿主机内核进行零拷贝 I/O 通信,在随机 4K 读写与高并发网络包转发场景下可降低 35% 以上的 CPU 中断开销。
为什么在 Netcup 服务器上安装 qemu-guest-agent 是不可跳过的步骤?在未运行 Guest Agent 的情况下,如果您在 SCP 面板中点击创建在线快照(Online Snapshot),KVM 宿主机只能强行对底层 Ceph/NVMe 逻辑卷进行“崩溃一致性(Crash-Consistent)”切片——此时位于 Linux 内核页缓存(Page Cache)中的脏页(Dirty Pages)以及尚未落盘的 PostgreSQL/MariaDB 事务日志很容易出现半写状态,导致日后回滚快照时数据库报错甚至文件系统损坏。一旦启用了监听于 /dev/virtio-ports/org.qemu.guest_agent.0 字符设备套接字上的 qemu-guest-agent,SCP 在打快照前的几百毫秒内会向客户机内核发送 fsfreeze-freeze 指令,自动调用 sync 将所有内存脏页刷入磁盘并短暂挂起磁盘写操作(ioctl FIFREEZE),快照完成后立即解冻(FITHAW),从而确保 100% 的应用级与文件系统级一致性。
此外,现代云端固态存储介质依赖定期的 SCSI UNMAP(即 SATA/NVMe 的 TRIM)指令来通知底层存储阵列哪些数据块已被删除。在下方初始化脚本中,我们在完成非交互式全量安全更新后,同步开启了 systemd 原生的 fstrim.timer 周期任务,让系统每周自动向 Netcup 的底层 NVMe 存储池释放空闲块,确保长期运行后的磁盘写入延迟始终保持在亚毫秒级水平。
# 使用 root 账户连接您的 Netcup 服务器公网 IPv4 地址
ssh [email protected]
# 刷新 APT 软件源索引并非交互式安装全部内核与安全更新
export DEBIAN_FRONTEND=noninteractive
apt update && apt full-upgrade -y
# 安装生产环境系统运维工具集与 QEMU Guest Agent 守护进程
apt install -y qemu-guest-agent chrony curl wget git ufw fail2ban htop iotop sysstat jq unattended-upgrades
# 启动并验证 QEMU Guest Agent 与 Netcup SCP 宿主机的通信状态
systemctl enable --now qemu-guest-agent
systemctl status qemu-guest-agent --no-pager
# 启用每周自动执行的 SSD/NVMe TRIM 块回收定时器
systemctl enable --now fstrim.timer 命令与参数详解: 以非交互模式(避免弹窗阻塞)全量更新 Ubuntu 24.04 LTS 系统软件包与内核补丁,安装生产排障必备工具集与 qemu-guest-agent 守护进程,并激活 fstrim.timer 以便定期向 Netcup 存储阵列回收已删除的数据块。
● qemu-guest-agent.service - QEMU Guest Agent
Loaded: loaded (/usr/lib/systemd/system/qemu-guest-agent.service; enabled)
Active: active (running) 安全与生产运维提示: 如果 apt full-upgrade -y 下载并安装了更新版本的 Linux 内核镜像,系统会自动生成 /var/run/reboot-required 标记文件。建议先顺序完成第 2 至第 4 步的所有初始化配置,最后再统一执行一次干净的 sudo reboot 重启。
启用 systemd 的 fstrim.timer 服务后,Ubuntu 每周会自动通过 virtio-scsi 总线发送 SCSI UNMAP / TRIM 指令,有效抑制固态存储写放大现象,使 Netcup SSD 与 NVMe 卷长期保持出厂级随机 IOPS 性能。
第二步:创建非特权 sudo 管理员账户并配置 Chrony 高精度时间同步
在日常运维、CI/CD 自动化部署或容器编排过程中长期直接使用 root(UID 0)账户操作,不仅极易因为一条拼写错误的 rm -rf 或重定向指令引发灾难性的系统损毁,还会让最高权限账户直接暴露在公网自动化 SSH 字典爆破脚本的视野中。标准的生产环境安全基线要求我们创建一个专门的普通运维账户(例如 deployadmin),将其加入 sudo 特权组,并使用 install 命令以严格的 POSIX 权限位(~/.ssh 目录必须为 0700,authorized_keys 文件必须为 0600)迁移您的 SSH 公钥。
为什么权限位差一位都会导致 SSH 公钥认证彻底失效?因为 OpenSSH 服务端默认开启了 StrictModes yes 强安全校验机制。在每次处理客户端公钥握手请求时,sshd 进程会自顶向下逐级检查 /home/deployadmin、/home/deployadmin/.ssh 以及 /home/deployadmin/.ssh/authorized_keys 的 inode 属主(UID)与权限掩码。如果管理员习惯性地在 root 身份下执行 mkdir 与 cp 却忘了执行 chown -R deployadmin:deployadmin,或者目录权限被误设为组可写(0775 / 0664),sshd 会认为该公钥文件存在被其他低权限账户篡改的风险,进而在不给出具体客户端报错的情况下直接返回 Permission denied (publickey)。使用下方代码块中的 install -d -m 0700 -o deployadmin -g deployadmin 命令,可以在创建目录的同时原子级锁定属主与权限位。
与此同时,我们需要规范设置服务器的完全限定域名(FQDN)主机名,并将系统时区统一锁定为标准 UTC 时间(避免跨时区日志聚合与夏令时切换引发时间戳错乱)。通过启用 chrony 时间同步服务,Ubuntu 24.04 会自动结合 KVM 半虚拟化硬件时钟(/dev/ptp_kvm)与欧洲低延迟 NTP 授时池(包括 Netcup 内部时间服务器)对系统时钟进行亚毫秒级频率纠偏。精准的系统时钟对于 TLS 1.3 证书有效期核验、OCSP Stapling 响应签名、TOTP 双因素认证动态口令校验以及 PostgreSQL/MariaDB 分布式事务时间戳而言至关重要。
# 1. 设置标准 FQDN 主机名并将系统时区锁定为 UTC
hostnamectl set-hostname prod-nc-01.example.com
timedatectl set-timezone UTC
systemctl enable --now chrony
chronyc tracking
# 2. 创建非特权管理员账户并加入 sudo 组
adduser --gecos "" deployadmin
usermod -aG sudo deployadmin
# 3. 以严格的 0700/0600 权限与属主迁移 root 的 authorized_keys(或直接写入您的 Ed25519 公钥)
install -d -m 0700 -o deployadmin -g deployadmin /home/deployadmin/.ssh
if [ -f /root/.ssh/authorized_keys ]; then
install -m 0600 -o deployadmin -g deployadmin /root/.ssh/authorized_keys /home/deployadmin/.ssh/authorized_keys
else
cat << 'EOF' > /home/deployadmin/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleReplaceWithYourRealPublicKey admin@workstation
EOF
chown deployadmin:deployadmin /home/deployadmin/.ssh/authorized_keys
chmod 0600 /home/deployadmin/.ssh/authorized_keys
fi 命令与参数详解: 配置标准 FQDN 主机名与 UTC 时区,启动 chrony 授时守护进程并检查偏移状态;创建 deployadmin 管理员账户,并以原子级权限控制(0700/0600)复制或写入 /home/deployadmin/.ssh/authorized_keys。
Reference ID : C0A80101 (ntp1.netcup.net)
Stratum : 2
System time : 0.000041231 seconds fast of NTP time 安全与生产运维提示: 在退出当前 root 终端会话或禁用密码登录之前,请务必在本地电脑上新开一个终端窗口,实测运行 ssh [email protected] 并在登录后执行 sudo whoami(预期返回 root),100% 确认新账户的密钥登录与提权功能正常。
第三步:创建 NVMe Swap 交换空间并调优内核虚拟内存与网络参数(sysctl)
Netcup 官方提供的标准化 Ubuntu 云镜像在默认分区时通常不分配 Swap 交换分区,或者仅分配数百兆的极小空间。即便是像 VPS 1000 G12.5 或 RS 1000 G12.5 这样配备了 8 GB 物理 ECC 内存的主力机型,在完全没有 Swap 缓冲的情况下,一旦遇到多阶段 Docker 镜像构建(如 Next.js/Rust 编译)、apt 大型软件包解压或 pg_dump 逻辑备份带来的瞬时内存尖峰,Linux 内核的物理内存耗尽保护机制(oom-killer)就会被立即触发,强制终止占用内存最高的 MySQL/PostgreSQL 数据库或业务主进程。
为了兼顾系统稳定性与内存性能,最佳实践是在高速 NVMe/SSD 根分区上分配一个固定大小的 /swapfile 交换文件,并通过 /etc/sysctl.d/99-netcup-tuning.conf 将内核换页倾向参数 vm.swappiness 从默认的 60 大幅下调至 10(告知内核除非物理内存真正吃紧,否则绝不主动将活跃匿名页换出到磁盘),同时将 vm.vfs_cache_pressure 调低至 50,让目录项(dentry)与索引节点(inode)缓存尽可能长久地驻留在物理内存中。此外,合理设置 vm.dirty_ratio = 15 与 vm.dirty_background_ratio = 5 可让内核 pdflush 线程平滑地将脏页异步刷入底层 NVMe 磁盘,避免积压过多脏页后触发突发性的同步 I/O 阻塞。
在网络协议栈层面,Ubuntu 24.04 默认仍使用传统的 cubic 拥塞控制算法——该算法一旦检测到极其轻微的随机丢包就会大幅折半缩减发送窗口(cwnd),导致跨国访问或高峰期长距离传输吞吐率骤降。我们将默认队列规则切换为公平队列(net.core.default_qdisc = fq),并开启 Google TCP BBR 拥塞控制算法(net.ipv4.tcp_congestion_control = bbr),配合关闭空闲后慢启动(tcp_slow_start_after_idle = 0)与扩大全连接监听队列(somaxconn = 8192),可让 Netcup 的 1 Gbit/s 与 2.5 Gbit/s 端口在欧美及亚太跨境链路上实现数倍的单连接吞吐提升。
| Netcup 服务器型号 | 计算核心与网卡规格 | 物理 ECC 内存规格 | 推荐 Swapfile 容量 | 推荐 vm.swappiness 与网络队列配置 |
|---|---|---|---|---|
| VPS pico G11.5s / VPS nano G11.5s | 1–2 vCPU / 1 Gbit/s VirtIO | 1 GB – 2 GB ECC | 2 GB 交换文件 | vm.swappiness = 20, BBR + somaxconn 4096 |
| VPS 500 G12.5 | 4 vCPU / 1 Gbit/s VirtIO | 4 GB ECC | 4 GB 交换文件 | vm.swappiness = 10, BBR + somaxconn 8192 |
| VPS 1000 G12.5 | 6 vCPU / 1 Gbit/s VirtIO | 8 GB ECC | 4 GB 交换文件 | vm.swappiness = 10, BBR + somaxconn 8192 |
| RS 1000 G12.5 | 4 核独享 AMD EPYC Zen 5 / 2.5 Gbit/s | 8 GB DDR5 ECC(独享核心) | 4 GB – 8 GB 交换文件 | vm.swappiness = 10, BBR + 2.5G fq 速率平滑 |
# 1. 若当前系统尚未启用 Swap,则分配并激活 4 GB 的 /swapfile 交换文件
if [ "$(swapon --show | wc -l)" -eq 0 ]; then
sudo fallocate -l 4G /swapfile
sudo chmod 0600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
fi
# 2. 针对 Netcup 1G / 2.5G virtio-net 虚拟网卡写入虚拟内存与 TCP BBR 调优参数
cat << 'EOF' | sudo tee /etc/sysctl.d/99-netcup-tuning.conf
# 虚拟内存换页倾向与文件系统缓存调优
vm.swappiness = 10
vm.vfs_cache_pressure = 50
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
# 公平队列调度 (fq) 与 Google TCP BBR 拥塞控制
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.core.somaxconn = 8192
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_slow_start_after_idle = 0
EOF
sudo sysctl --system
free -h && sysctl net.ipv4.tcp_congestion_control 命令与参数详解: 自动检测并创建持久化挂载的 4 GB /swapfile(严格限制为 0600 权限以防非特权进程窥探内存页),配置保守的交换策略(vm.swappiness = 10),关闭空闲连接后的 TCP 慢启动重置,并正式激活 Google bbr 拥塞控制算法。
total used free shared buff/cache available
Mem: 7.8Gi 412Mi 6.9Gi 8.0Mi 640Mi 7.2Gi
Swap: 4.0Gi 0B 4.0Gi
net.ipv4.tcp_congestion_control = bbr 第四步:锁定 OpenSSH 守护进程、启用 UFW 双栈防火墙并配置无人值守安全更新
在加固 Ubuntu 24.04 LTS 的 OpenSSH 服务时,有一个令无数资深运维工程师踩坑的细节:现代 Ubuntu 采用模块化配置目录(/etc/ssh/sshd_config.d/),且主配置文件 /etc/ssh/sshd_config 在文件最顶部就通过 Include /etc/ssh/sshd_config.d/*.conf 引入了子配置。由于 OpenSSH 解析配置遵循“首次匹配优先生效(First-Match Wins)”原则,而 Cloud-Init 初始化组件往往会自动生成 /etc/ssh/sshd_config.d/50-cloud-init.conf 并写入 PasswordAuthentication yes,如果您仅仅在 /etc/ssh/sshd_config 文件末尾追加 PasswordAuthentication no,该指令将被前面的 50-cloud-init.conf 完全覆盖而失效!因此,正确的做法是清理 50-cloud-init.conf 并创建独立的 /etc/ssh/sshd_config.d/99-netcup-hardening.conf,在重载服务前使用 sudo sshd -t 进行严格的语法静态检查。
完成 SSH 仅公钥认证锁定后,立即启用 ufw(Uncomplicated Firewall)配置默认拒绝入站、放行出站的安全基线,仅向公网开放 22/tcp(OpenSSH)、80/tcp(HTTP)以及 443/tcp 与 443/udp(HTTPS 与 HTTP/3 QUIC 协议)。请务必检查 /etc/default/ufw 中是否已包含 IPV6=yes,以确保 UFW 同时生成 iptables(IPv4)与 ip6tables / nftables(IPv6)双栈过滤规则,避免您的 Netcup /64 IPv6 地址处于无防火墙裸奔状态。
最后,激活 unattended-upgrades 无人值守自动更新机制,确保每当 Ubuntu 官方安全团队针对 Linux 内核、libssl3(OpenSSL)或 glibc 发布高危安全漏洞补丁(CVE)时,您的 Netcup 服务器都能在夜间自动拉取并静默安装补丁。配合 Ubuntu 24.04 内置的 needrestart 工具,系统还能自动检测并重启那些仍然映射着旧版动态链接库的服务进程,无需人工干预即可完成日常安全维护:
# 1. 强制启用纯公钥 SSH 登录并禁用 root 远程直接登录
sudo rm -f /etc/ssh/sshd_config.d/50-cloud-init.conf
cat << 'EOF' | sudo tee /etc/ssh/sshd_config.d/99-netcup-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
EOF
# 重载前先检验 SSH 配置语法是否正确
sudo sshd -t && sudo systemctl reload ssh
# 2. 配置 UFW IPv4/IPv6 双栈防火墙规则
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'OpenSSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw allow 443/udp comment 'HTTP/3 QUIC'
sudo ufw --force enable
sudo ufw status verbose
# 3. 启用每日自动 CVE 安全更新
sudo dpkg-reconfigure -f noninteractive unattended-upgrades 命令与参数详解: 移除 Cloud-Init 遗留的密码登录覆盖文件,通过独立 Drop-in 配置禁用 root 登录与密码认证;在 UFW 中仅开放 22、80 及 443(含 TCP 与 UDP)端口,并启用 unattended-upgrades 每日自动安全更新。
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed) 常见故障排查方案
排障手册 [故障现象] 修改了 /etc/ssh/sshd_config 禁用密码登录后,使用密码依然可以登录 SSH
根本原因: 在 Ubuntu 24.04 LTS 中,/etc/ssh/sshd_config 在文件开头就加载了 /etc/ssh/sshd_config.d/*.conf,而 OpenSSH 遵循“首次出现的参数优先生效”原则。如果 50-cloud-init.conf 中包含 PasswordAuthentication yes,在主配置文件末尾添加的修改会被直接忽略。
解决方案: 删除 /etc/ssh/sshd_config.d/50-cloud-init.conf 文件,重载 ssh 服务后,运行 sudo sshd -T | grep -E "passwordauthentication|permitrootlogin" 核验当前运行时的真实生效参数。
[故障现象] 在 Netcup SCP 面板创建在线快照时提示文件系统冻结(Filesystem Freeze)失败或超时
根本原因: Ubuntu 客户机内部尚未安装或未启动 qemu-guest-agent 服务,或者在 SCP 硬件设置中关闭了 VirtIO 串行通信通道。
解决方案: 在服务器终端内执行 sudo systemctl status qemu-guest-agent 确认服务处于 active (running) 状态,并检查 /dev/virtio-ports/org.qemu.guest_agent.0 套接字文件是否存在。
[故障现象] 启用 UFW 防火墙或修改 sshd_config 后不慎将自己锁在 SSH 门外无法连接
根本原因: 启用 UFW 前漏加了 sudo ufw allow 22/tcp 规则,或者 /home/deployadmin/.ssh/authorized_keys 的文件属主与权限设置不当(如被设成了 0644 或归属于 root)。
解决方案: 登录 Netcup 服务器控制面板(servercontrolpanel.de)→ 打开 Screen(HTML5 VNC 救援控制台),通过本地虚拟显示器终端直接输入账户密码登录 TTY,修正 authorized_keys 权限或执行 sudo ufw allow 22/tcp 后重载 SSH。
常见问题解答 (FAQ)
权威解答在 Netcup SCP 安装 Ubuntu 24.04 时,应该选择 Minimal 最小化镜像还是 Cloud-Init 镜像?
两款镜像底层均安装官方原版 Ubuntu 24.04 LTS 软件包。如果您希望在装机时通过 YAML 脚本全自动注入 SSH 公钥并完成零接触初始化,推荐选择 Cloud-Init 镜像;如果您更习惯传统的交互式终端手动配置,选择标准 Minimal 镜像即可。
在 Netcup 服务器上运行 Ubuntu 24.04 需要手动编译或安装额外的 VirtIO 驱动吗?
完全不需要。Ubuntu 24.04 LTS 默认搭载的 Linux 6.8+ 主线内核已经原生内置了 virtio_scsi、virtio_blk、virtio_net 与 virtio_balloon 等全部 KVM 半虚拟化驱动模块,开箱即可获得完整的硬件 I/O 性能。
随着运行时间增长,系统日志会占满 Netcup 服务器的 SSD/NVMe 磁盘吗?
默认情况下,systemd-journald 二进制日志最多可占用高达 4 GB 磁盘空间。您可以通过执行 sudo mkdir -p /etc/systemd/journald.conf.d && printf "[Journal]\nSystemMaxUse=500M\n" | sudo tee /etc/systemd/journald.conf.d/size.conf && sudo systemctl restart systemd-journald 将系统日志体积上限严格封顶在 500 MB。
在系统内开启了 UFW 防火墙之后,还需要同时开启 Netcup SCP 面板自带的防火墙吗?
强烈建议同时开启!Netcup SCP 有状态防火墙运行在宿主机虚拟交换机(Hypervisor Edge)边缘,不仅能在恶意扫描流量进入虚拟机内核前直接将其丢弃(节省客户机 CPU 中断开销),还能防范 Docker 容器自动修改 iptables 绕过主机 UFW 规则的安全隐患。
运行生产环境 Ubuntu 24.04 工作负载,如何根据业务规模选择合适的 Netcup VPS 或 Root Server 硬件规格?
对于轻量级 Nginx 反代网关、监控探针或个人技术博客,2 GB ECC 内存的 VPS nano G11.5s 或 4 GB ECC 内存的 VPS 500 G12.5 即可稳定胜任;对于多容器 Docker 编排、关系型数据库(PostgreSQL / MariaDB)与 CI/CD 编译节点,建议选择配备 8 GB ECC 内存的 VPS 1000 G12.5 或搭载 4 核独享 AMD EPYC Zen 5 物理核心与 DDR5 ECC 内存的 RS 1000 G12.5。
参考资料 // 官方技术文档与核验来源
- [1] Ubuntu 24.04 LTS Server Administration Documentation (https://ubuntu.com/server/docs)
- [2] Netcup Helpcenter — Server Control Panel (SCP) & Images (https://helpcenter.netcup.com/)