Virtualmin 8.3.0 配置参数详解
Virtualmin 8.3.0 五层配置文件逐参数实测详解:/etc/webmin/config 框架全局、miniserv.conf TLS/防爆破/2FA、virtual-server/config 484 键分组策略、每域文件与计划模板,含 external_ip_cache 根因、crypt 哈希与命名模板技术拓展及生产推荐值表
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) |
| Virtualmin | GPL 8.3.0(webmin-virtual-server 8.3.0-1-gpl) |
| Webmin | 2.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
二、前置条件
- 已完成 Virtualmin 8.3.0 安装并通过
virtualmin check-config体检(完整过程见 《Ubuntu 24.04 安装 Virtualmin 8.3.0 指南》)。 - root shell 与
https://<主机>:10000管理面可访问。 - 至少存在一个样本域用于观察域级配置(本文用安装篇创建的
shop.example.com)。 - 修改前建议开启 etckeeper(安装脚本已自动配置),任何手改都可经
list-config-revisions追溯回滚。
三、参数查看与修改方式
3.1 三种通道总览
| 通道 | 入口 | 生效方式 | 适用 |
|---|---|---|---|
| GUI | Webmin 10000 各模块页面 | 点 Save 即写文件并重载 | 交互式调整 |
| CLI | webmin 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/config | 35 | OS 识别、主题、语言、缓存、域属主模块授权 | 5.1 |
| Web 服务 | /etc/webmin/miniserv.conf | 59 | 10000 端口监听、TLS、防爆破、2FA、SNI 证书 | 5.2 |
| Virtualmin 全局 | /etc/webmin/virtual-server/config | 484 | 建域默认值、配额、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_type | debian-linux / Ubuntu Linux | Webmin 模块选择配置路径的依据;os_version=14.0 是 Webmin 内部 Debian 族代号,real_os_version=24.04.5 才是真实系统版本 |
theme/mobile_theme | authentic-theme | 控制台主题;改坏主题进不去界面时,可临时改回 minimal 主题恢复访问 |
cache_size | 52428800(50 MiB) | 模块页面渲染缓存上限;cache_mods=virtual-server 指定对最重的 virtual-server 模块启用缓存 |
nowebminup/noselfwebminup | 1 | 禁用 Webmin 自带的在线自升级——升级权交给 apt 仓库(安装篇方案 B),避免双轨版本漂移 |
passwd_file | /etc/shadow | Webmin 账号复用系统口令库 |
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
分组解读:
- 监听与 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等弱套。 - 防爆破:
blockhost_failures=5+blockhost_time=60——同一来源 5 次失败封 60 秒;passdelay=1每次口令校验睡 1 秒拖慢撞库。与 fail2ban 的webmin-authjail(安装篇实测 7 jail 之一)构成双层。 - 认证与会话:
twofactor_provider=totp全局二因子后端;session=1开启会话保持;sessiononly=/virtual-server/remote.cgi把远程 API 端点限定为会话内调用(防外部直刷 API);userfile指向 5.6 节账号文件。 - 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_low | 256 | 内存低于 256 MiB 时控制台亮黄条告警(check-config 提示语即源于此) |
defuquota | 2097152 | 新域默认 Unix 磁盘配额,单位 KiB——2097152 KiB = 2 GiB,与 Default Plan 一致 |
quotas | 1 | 全局启用磁盘配额强制 |
home_backup | virtualmin-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_ip | 10.89.71.2 / 182.54.113.29 | 本域绑定 IP 与 DNS 记录 IP 分离:vhost 绑内网地址,A 记录发布公网地址(多 IP/CDN 回源场景的通用形态) |
uquota | 2097152 | 本域 Unix 配额 KiB(=2 GiB),继承自 plan 0 |
plan | 0 | 绑定的账户计划 ID(virtualmin list-plans 可查,见 5.5) |
md5_enc_pass | $1$93674049$... | 域管理员口令哈希,$1$ 前缀为 crypt-MD5;hashpass=1 表示以哈希存储而非明文 |
web_sslport | 443 | 本域 HTTPS 端口(多 IP 场景可改独立端口) |
mysql/db_mysql | 1 / shop | 数据库特性开关与库名 |
source/creator | create-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.conf | blockhost_failures | 3 | 对外暴露 10000 端口时收紧爆破窗口(默认 5 保持亦可) |
| miniserv.conf | ssl_enforce | 2(保持) | 拒绝明文访问管理面 |
| miniserv.conf | twofactor_provider | totp(保持)+ 对 root 强制开启 | 管理面二因子 |
| virtual-server/config | defuquota | 按套餐改,如 5242880(5 GiB) | 默认 2 GiB 偏小,按业务磁盘规划 |
| virtual-server/config | auto_letsencrypt | 1(保持) | 公网可达时自动签发正式证书 |
| virtual-server/config | mem_low | 2048 | 完整栈机器上把告警线抬到 2 GiB,早发现异常内存 |
| virtual-server/config | gzip_mysql | 1(保持) | 备份体积与 CPU 的平衡点 |
| plans/0 | quota/uquota | 与 defuquota 同步 | 计划与默认值脱节会让 --limits-from-plan 建出小配额域 |
| /etc/webmin/config | cache_size | 52428800(保持) | 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 记录。