Virtualmin 8.3.0 配置参数详解

Virtualmin 8.3.0 五层配置文件逐参数实测详解:/etc/webmin/config 框架全局、miniserv.conf TLS/防爆破/2FA、virtual-server/config 484 键分组策略、每域文件与计划模板,含 external_ip_cache 根因、crypt 哈希与命名模板技术拓展及生产推荐值表

VirtualminVirtualminWebmin服务器管理邮件服务DNS 服务MySQLPerl2026/11/03

Virtualmin 8.3.0 配置参数详解

目标:以一台装好 Virtualmin 8.3.0 并建有 shop.example.com(域 ID 179367404951356)的 Ubuntu 24.04.5 服务器为样本,把「Webmin 框架 / miniserv Web 服务 / Virtualmin 全局 / 每域文件 / 计划与模板」五层配置文件逐参数讲清:文件在哪、键什么含义、默认值多少、改动影响什么。全文键值与行数均为 2026-11-03 实测读取,无转述官方文档的猜测值。

一、环境信息

项目值
操作系统Ubuntu 24.04.5 LTS(srv01.example.com)
VirtualminGPL 8.3.0(webmin-virtual-server 8.3.0-1-gpl)
Webmin2.670,authentic-theme 26.70
管理入口https://srv01.example.com:10000(root,演示口令 q1w2e3r4)
样本域shop.example.com,域 ID 179367404951356,Unix 用户 shop(uid/gid 1002)
配置根目录/etc/webmin/

五层配置文件实测行数(wc -l 回显):

wc -l /etc/webmin/config /etc/webmin/miniserv.conf \
      /etc/webmin/virtual-server/config \
      /etc/webmin/virtual-server/domains/179367404951356
   35 /etc/webmin/config
   59 /etc/webmin/miniserv.conf
  484 /etc/webmin/virtual-server/config
  191 /etc/webmin/virtual-server/domains/179367404951356
  769 total

二、前置条件

  1. 已完成 Virtualmin 8.3.0 安装并通过 virtualmin check-config 体检(完整过程见 《Ubuntu 24.04 安装 Virtualmin 8.3.0 指南》)。
  2. root shell 与 https://<主机>:10000 管理面可访问。
  3. 至少存在一个样本域用于观察域级配置(本文用安装篇创建的 shop.example.com)。
  4. 修改前建议开启 etckeeper(安装脚本已自动配置),任何手改都可经 list-config-revisions 追溯回滚。

三、参数查看与修改方式

3.1 三种通道总览

通道入口生效方式适用
GUIWebmin 10000 各模块页面点 Save 即写文件并重载交互式调整
CLIwebmin list-config/set-config、virtualmin modify-*命令内自动重载自动化、批量
直接编辑文件vi /etc/webmin/...需手动重载 Webmin/对应服务应急、版本控制

3.2 CLI 读写配置(实测)

webmin 自带配置读写子命令(实测 webmin --list-commands --describe 节选):

list-config
    List one or all configuration directives for "miniserv.conf" or a module
    "config" file.

set-config
    Set a configuration directive in either "miniserv.conf" (the core Webmin
    config) or in the specified module "config".
webmin --version
2.670

💡 说明:set-config 改的是文件本体,与 GUI 保存等价;改 miniserv.conf 这类核心文件后需重启 Webmin 进程(systemctl restart webmin)才反映到监听端口、TLS 层。

3.3 参数元数据查询

virtualmin get-command 可打印任一 CLI 命令的参数定义(Binary/Optional/Repeats),适合脚本开发时对照(命令族全貌见 《Virtualmin 8.3.0 常用 CLI 命令与工具详解》):

virtualmin get-command --command create-domain | head -8
Description: Create a virtual server
domain
    Binary: No
    Value: domain.name
    Optional: No
    Repeats: No
pass
    Binary: No
    Value: password-for-new-domain
    Optional: No

四、参数总览:五层配置文件地图

/etc/webmin/ 目录按模块分目录存放配置(实测 ls /etc/webmin | head 节选):

acl
apache
backup-config
bind8
change-user
config
cron
custom
dovecot
fail2ban

各层职责与本文对应小节:

层文件/目录行数管什么小节
Webmin 框架/etc/webmin/config35OS 识别、主题、语言、缓存、域属主模块授权5.1
Web 服务/etc/webmin/miniserv.conf5910000 端口监听、TLS、防爆破、2FA、SNI 证书5.2
Virtualmin 全局/etc/webmin/virtual-server/config484建域默认值、配额、SSL/日志/垃圾邮件策略、DNS 默认5.3
域级/etc/webmin/virtual-server/domains/<ID>191单域特性开关、IP、配额、密码哈希、端口5.4
计划/模板plans/0、templates、localips—资源上限套餐、新域骨架、共享 IP 白名单5.5

💡 说明:域级文件按「域 ID」命名(如 domains/179367404951356),ID 即域创建时的 Unix 时间戳;virtualmin list-domains --id-only 可反查。

五、核心参数分类详解

5.1 Webmin 框架全局:/etc/webmin/config(35 行)

实测全文关键行(节选):

os_type=debian-linux
os_version=14.0
real_os_type=Ubuntu Linux
real_os_version=24.04.5
lang=en
theme=authentic-theme
mobile_theme=authentic-theme
product=webmin
cache_size=52428800
cache_mods=virtual-server
noselfwebminup=1
nowebminup=1
log=1
passwd_file=/etc/shadow
tempdir=/var/tmp/.webmin
notabs_shop=1
realname_shop=Shop 演示站
readonly_shop=virtual-server
ownmods_shop=bind8 mysql virtual-server filemin passwd proc cron change-user htaccess-htpasswd logviewer webminlog

逐项说明:

键实测值含义与影响
os_type/real_os_typedebian-linux / Ubuntu LinuxWebmin 模块选择配置路径的依据;os_version=14.0 是 Webmin 内部 Debian 族代号,real_os_version=24.04.5 才是真实系统版本
theme/mobile_themeauthentic-theme控制台主题;改坏主题进不去界面时,可临时改回 minimal 主题恢复访问
cache_size52428800(50 MiB)模块页面渲染缓存上限;cache_mods=virtual-server 指定对最重的 virtual-server 模块启用缓存
nowebminup/noselfwebminup1禁用 Webmin 自带的在线自升级——升级权交给 apt 仓库(安装篇方案 B),避免双轨版本漂移
passwd_file/etc/shadowWebmin 账号复用系统口令库
notabs_shop/realname_shop/readonly_shop/ownmods_shop带域后缀 shop 的键每域属主的授权投影:ownmods_shop 列出域管理员可进的模块(bind8/mysql/virtual-server/filemin 等),readonly_shop=virtual-server 表示 shop 对 virtual-server 模块只读。这些行由建域时的 --webmin 特性自动生成,GUI「服务器所有权与功能」页改的就是它们

⚠️ 注意:带 _<用户名> 后缀的键(本例 _shop)属于域属主而非全局;手工清理残留域时若忘删这些行,同名新用户会莫名继承旧授权。

5.2 Web 服务层:/etc/webmin/miniserv.conf(59 行)

MiniServ 是 Webmin 自带的 Perl Web 服务器,此文件决定 10000 端口的一切行为。实测关键行:

port=10000
listen=10000
ssl=1
no_ssl2=1
no_ssl3=1
ssl_honorcipherorder=1
ssl_hsts=1
ssl_enforce=2
ssl_cipher_list=ECDHE-RSA-AES256-SHA384:AES256-SHA256:AES256-SHA256:HIGH:MEDIUM:+TLSv1:+TLSv1.1:+TLSv1.2:!MD5:!ADH:!aNULL:!eNULL:!NULL:!DH:!ADH:!EDH:!AESGCM
blockhost_failures=5
blockhost_time=60
passdelay=1
twofactor_provider=totp
session=1
sessiononly=/virtual-server/remote.cgi
sudo=1
atboot=1
preroot=authentic-theme
server=MiniServ/2.670
userfile=/etc/webmin/miniserv.users
keyfile=/etc/webmin/miniserv.pem
env_WEBMIN_CONFIG=/etc/webmin
preload=virtual-server=virtual-server/virtual-server-lib-funcs.pl virtual-server=virtual-server/feature-unix.pl ...(多行模块预加载)
ipkey_shop.example.com,*.shop.example.com=/etc/ssl/virtualmin/179367404951356/ssl.key
ipcert_shop.example.com,*.shop.example.com=/etc/ssl/virtualmin/179367404951356/ssl.cert

分组解读:

  1. 监听与 TLS:port/listen 双写 10000(改端口时两处都要改,另加防火墙放行);ssl=1 强制 HTTPS,no_ssl2/no_ssl3 关旧协议,ssl_hsts=1 下发 HSTS 头,ssl_enforce=2 非 HTTPS 直接拒绝。ssl_cipher_list 显式排除 !MD5:!NULL:!aNULL 等弱套。
  2. 防爆破:blockhost_failures=5 + blockhost_time=60——同一来源 5 次失败封 60 秒;passdelay=1 每次口令校验睡 1 秒拖慢撞库。与 fail2ban 的 webmin-auth jail(安装篇实测 7 jail 之一)构成双层。
  3. 认证与会话:twofactor_provider=totp 全局二因子后端;session=1 开启会话保持;sessiononly=/virtual-server/remote.cgi 把远程 API 端点限定为会话内调用(防外部直刷 API);userfile 指向 5.6 节账号文件。
  4. SNI 证书映射:ipcert_<域名>/ipkey_<域名> 行由「SSL 特性」自动维护——shop.example.com 的证书被挂到 MiniServ 上,浏览器访问 https://<IP>:10000 时按 SNI 出示对应域的证书(通配 *.shop.example.com 同步生效)。

💡 技术拓展:twofactor_provider 可选的二因子形态对比——

形态机制优点代价
TOTP时间口令(RFC 6238,Authenticator 类 App)零硬件、离线可用手机丢失需重置
WebAuthn硬件密钥/平台认证器抗钓鱼最强需硬件或支持平台
SMS/邮件码信道下发用户无安装成本依赖 SIM 交换风险

本环境取默认 totp:无额外依赖且与 authentic-theme 登录流原生集成;丢失设备时用 webmin disable-twofactor --user <name> 解锁(CLI 篇有实测)。

5.3 Virtualmin 全局策略:/etc/webmin/virtual-server/config(484 行)

这是「建域默认值 + 全局策略」的总仓,484 个键不可能逐个背,按用途分五组讲高频键(全部为实测读取值):

(a)资源与配额

mem_low=256
defuquota=2097152
quotas=1
home_backup=virtualmin-backup
键值含义
mem_low256内存低于 256 MiB 时控制台亮黄条告警(check-config 提示语即源于此)
defuquota2097152新域默认 Unix 磁盘配额,单位 KiB——2097152 KiB = 2 GiB,与 Default Plan 一致
quotas1全局启用磁盘配额强制
home_backupvirtualmin-backup域家目录内备份子目录名(安装篇 ls /home/shop 可见)

(b)Web/SSL/日志

ssl=3
auto_letsencrypt=1
letsencrypt_wild=0
logrotate=3
logrotate_shared=yes
php_fpm_port=8000
php_sock=1

auto_letsencrypt=1 让新域自动申请 Let's Encrypt 证书(安装篇建域日志里「keeping self-signed certificate」即因本机 80/443 尚未对公网可达,续期检查自动跳过);letsencrypt_wild=0 关闭通配符证书(通配需 DNS-01 验证);php_sock=1 表示 PHP-FPM 走 Unix socket 而非 TCP 8000(安装篇 vhost 里的 /run/php/<ID>.sock 即其结果);ssl=3、logrotate=3 为特性默认状态位(对应 GUI「SSL 网站/日志轮转」在建域时的默认勾选策略)。

(c)数据库

mysql_db=${PREFIX}
mysql_mkdb=1
mysql_nouser=0
mysql_nopass=0
mysql_ssl=1
mysql_user_size=128
gzip_mysql=1

mysql_db=${PREFIX} 定义建库命名模板(shop.example.com → 库名 shop,安装篇日志「Creating MariaDB database shop」即此规则);gzip_mysql=1 让备份用 gzip 压缩 mysqldump(备份篇 90.85 KiB 小包即含压缩 dump);mysql_ssl=1 对远程 MySQL 连接启用 TLS。

💡 技术拓展:${PREFIX} 这类命名模板支持多种取值——

模板结果示例(域 shop.example.com)适用
${PREFIX}shop默认,短名可读
${DOMAIN}shop.example.com全局唯一性最强
${USER}shop与 Unix 用户同名
固定前缀+${PREFIX}vm_shop多面板共存防冲突

本环境用默认 ${PREFIX}。

(d)邮件与反垃圾

mail_system=0
spam_client=spamassassin
spam_delivery=$HOME/Maildir/.spam/
spam_white=0
spam_trap_black=0
mail_mta_sts=0

spam_client=spamassassin 指定反垃圾引擎(另一候选 ClamAV 只管病毒);spam_delivery 定义判 spam 后的投递目录(Maildir 的 .spam 子文件夹);mail_system=0 表示每域本地投递(非「仅转发」模式)。

(e)网络与 DNS 默认

dns_default_ip4=8.8.8.8
dns_default_ip6=2001:4860:4860::8888
ip6enabled=0
dynip_update=1
external_ip_cache=182.54.113.29
ipfollow=0
dns_ip=*
dns_ip6=*

dns_default_ip4=8.8.8.8 是向导里「DNS 转发器」默认值;ip6enabled=0 全局关闭 IPv6 特性;external_ip_cache=182.54.113.29 是安装篇第七章 A 记录指向公网 IP 的根因——post-install 探测到的出口 IP 被缓存,建域 DNS 特性优先取它;dns_ip=* 允许建域时任意指定 dns_ip。

5.4 域级配置:/etc/webmin/virtual-server/domains/179367404951356(191 行)

每域一个文件,值为「全局默认 + 本域覆盖」。实测关键行:

group=shop
ugid=1002
created=1793674050
ip=10.89.71.2
dns_ip=182.54.113.29
uquota=2097152
plan=0
md5_enc_pass=$1$93674049$0kjlQnDOhYK63q5L96Ve9.
hashpass=1
ssl=1
web_sslport=443
mysql=1
db_mysql=shop
webmin=1
auto_letsencrypt=1
emailto_src=webmaster@shop.example.com
source=create-domain.pl
creator=root
postgres=0
jail=0
键实测值含义
ip / dns_ip10.89.71.2 / 182.54.113.29本域绑定 IP 与 DNS 记录 IP 分离:vhost 绑内网地址,A 记录发布公网地址(多 IP/CDN 回源场景的通用形态)
uquota2097152本域 Unix 配额 KiB(=2 GiB),继承自 plan 0
plan0绑定的账户计划 ID(virtualmin list-plans 可查,见 5.5)
md5_enc_pass$1$93674049$...域管理员口令哈希,$1$ 前缀为 crypt-MD5;hashpass=1 表示以哈希存储而非明文
web_sslport443本域 HTTPS 端口(多 IP 场景可改独立端口)
mysql/db_mysql1 / shop数据库特性开关与库名
source/creatorcreate-domain.pl / root审计字段:由 CLI 创建、root 操作
edit_*/limit_* 系列0/1域属主的逐项权限开关(如 edit_passwd=1 允许改邮箱口令、limit_webmin=0 不限制 Webmin 登录数),GUI「编辑权限」页的存储形态

💡 技术拓展:md5_enc_pass 的 $1$ 前缀属于 crypt 哈希家族,常见前缀对比——

前缀算法强度备注
$1$crypt-MD5弱(可 GPU 爆破)Virtualmin 域文件历史兼容格式
$5$ / $6$SHA-256 / SHA-512中主流 Linux 口令曾默认 $6$
$y$yescrypt强Ubuntu 22.04+ 系统 /etc/shadow 默认
$2y$bcrypt强可配 cost

域文件用 $1$ 是 Virtualmin 跨平台兼容选择,系统 /etc/shadow 仍走发行版默认 yescrypt;生产加固可在「系统认证」中提高口令复杂度策略,域文件哈希格式不建议手工改(面板读写依赖它)。

5.5 计划、模板与共享地址

账户计划 /etc/webmin/virtual-server/plans/0(实测全文节选):

id=0
name=Default Plan
quota=2097152
uquota=2097152
domslimit=0
nodbname=0
forceunder=0

quota/uquota 同为 2 GiB(磁盘总量/Unix 配额),domslimit=0 表示不限制子域名数;CLI 侧对应 virtualmin list-plans 回显 0 Default Plan 2 GiB(安装篇/CLI 篇实测)。

模板目录 /etc/webmin/virtual-server/ 下(实测 ls):

bw-template
domain-template
localips
plans
subdomain-template
templates
update-template
user-template
warnbw-template

templates/ 存新域骨架(实测 virtualmin list-templates):

ID                 Description
------------------ ------------------------------------------------------------
0                  Default Settings
1                  Settings For Sub-Servers

共享地址白名单 localips(实测 cat):

127.0.0.1
10.89.71.2

只有列在 localips 的地址才能被 --shared-ip 复用为多域共享 IP,防止把陌生地址挂进 vhost。

5.6 账号文件:/etc/webmin/miniserv.users

实测内容:

root:x:0
shop:x::::::::0:0::::webmaster@shop.example.com

冒号分隔字段依次为口令哈希/加密模式/过期控制等,root:x:0 表示 root 复用 /etc/shadow 口令;shop 行尾部存联系邮箱。改 Webmin 口令用 webmin passwd --user root(CLI 篇实测),不要手编此文件。

六、生产配置模板(16 GiB 内存 / NVMe / 共享主机场景)

以下推荐值基于本机实测默认值调整,标注「保持」即默认已合理:

文件键推荐值理由
miniserv.confblockhost_failures3对外暴露 10000 端口时收紧爆破窗口(默认 5 保持亦可)
miniserv.confssl_enforce2(保持)拒绝明文访问管理面
miniserv.conftwofactor_providertotp(保持)+ 对 root 强制开启管理面二因子
virtual-server/configdefuquota按套餐改,如 5242880(5 GiB)默认 2 GiB 偏小,按业务磁盘规划
virtual-server/configauto_letsencrypt1(保持)公网可达时自动签发正式证书
virtual-server/configmem_low2048完整栈机器上把告警线抬到 2 GiB,早发现异常内存
virtual-server/configgzip_mysql1(保持)备份体积与 CPU 的平衡点
plans/0quota/uquota与 defuquota 同步计划与默认值脱节会让 --limits-from-plan 建出小配额域
/etc/webmin/configcache_size52428800(保持)16 GiB 内存下 50 MiB 渲染缓存足够

应用方式:GUI 或 webmin set-config 修改后,systemctl restart webmin(涉及 miniserv 键)或等模块自动重载(virtual-server 键)。

七、常见问题(FAQ)

Q1:直接 vi 改了 /etc/webmin/virtual-server/config,界面里没生效? virtual-server 模块的 config 由常驻进程缓存,改完执行 systemctl restart webmin 或在 GUI 右上角重载;miniserv.conf 的键必须重启才生效(TLS/端口类)。

Q2:想把 10000 端口换掉? miniserv.conf 的 port 与 listen 两处同步改,防火墙放行新端口,再重启 webmin;Usermin 同理在 /etc/usermin/miniserv.conf(实测 port=20000)。改完 ss -tlnp 复核监听。

Q3:新域 A 记录 IP 不对(指向了探测到的公网 IP)? 根因即 5.3(e) 的 external_ip_cache。三种修法:模板里固定 dns_ip、建域时 --dns-ip <正确地址>、或改全局 defip 相关键后删除缓存值。安装篇第七章有现象复现。

Q4:域属主登录 10000 后看不到某些模块? 看 5.1 的 ownmods_<user>/readonly_<user> 行,或 CLI virtualmin modify-limits/enable-limit 调整(CLI 篇有命令族)。

Q5:改口令后 miniserv.users 里仍是 x? 正常——x 表示口令托管给 /etc/shadow(passwd_file=/etc/shadow),真实哈希在 shadow 与域文件 md5_enc_pass 两处,用 webmin passwd 统一改可避免不一致。

Q6:手改配置文件被面板覆盖? 面板 GUI 保存时整文件重写;手改前先确认没有并发 GUI 操作,重要变更走 set-config/CLI,并用 virtualmin list-config-revisions 审计 etckeeper 记录。

八、参考链接