date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Nov 10, 2025 10:02 PM
是否已更新
orginal_page
是否推荐
- 参考资料
- TrueNAS ****Core 基于 freebsd, TrueNAS Scale 基于 debian
- 版本更新后,
/etc路径的内容会重置
TrueNAS 配置 SSH 连接
- (侧边栏)系统设置→服务,运行 SSH 服务并勾选自启
- 编辑 SSH 服务设置
- 根据需要修改 SSH 端口和是否允许密码登录
- 禁用密钥后仅能通过绑定了 SSH 密钥的账户通过密钥直接登录
- 创建用于 SSH 登录的用户并授予 SSH 公钥
- 如果设置了用于远程管理的 admin 用户,可以直接为 admin 账户设置密钥
- 如果没有则需要手动创建,用户名随意,主用户组选择
admin,附加组选择builtin_administrators - (可选)根据需要勾选是否允许使用 sudo 命令
- 在账户设置-认证方式里面通过上传公钥文件或粘贴公钥文本的方式添加密钥
midctl 通过 API 管理 Truenas
/api/docs/current/可以查看 API 文档
- api 日志
/var/log/middlewared.log
TrueNAS 设置通知(以 Gmail SMTP 为例)
- (侧边栏)用户凭证→本地用户,编辑 admin 用户或 root 用户配置电子邮件地址
- 后续的通知邮件会发送到当前管理账户的对应地址
为用于发送通知邮件的 Gmail 地址对应 google 账号启用二步验证和设置应用密码
- 参考群晖相应文章
- 可能在安全页面看不到应用密码的设置页面,需要在上面检索栏检索才能搜到
- 记录生成的应用密码,后续需要用到该密码
右上方点击铃铛打开警报信息→点击齿轮再点击电子邮件进行配置
- 发送方式选择 SMTP
- 发件地址填写你的 Gmail 地址
- 如果发件人地址邮件与后续验证用户名不同可能会被标记为垃圾邮件
- 发件人名称可以随便填
- 邮件发送服务器填写 smtp.gmail.com
- 端口填写 587 端口
- 选择使用 TLS 加密
- 勾选 SMTP 认证
- 用户名填写你的 Gmail 地址
- 密码填写此前生成的应用密码
- 发送方式选择 Gmail OAuth
- 授权认证即可
TrueNAS 设置通知(以 Telegram 为例)
Telegram 创建机器人并获取 API 令牌和 chat id
- 检索 BotFather 账号并与其建立沟通
- 输入指令
/newbot开始创建机器人账号,等其回复后随后输入机器人名称 - 必须以 bot 结尾,如果名字已被使用或无效需要尝试直到创建成功
- 创建成功后可以获得对应机器人 API 令牌,复制并保存等待后续使用
- 令牌格式为
<数字>:<数字字母符号的混合> - 点击
t.me/<botname>链接与机器人建立沟通,并在浏览器上打开 getUpdates 链接 - 链接格式:
https://api.telegram.org/bot<API-Token>/getUpdates - API-Token 为刚才获得的 API 令牌
- 输入指令
/start后随便给机器人发送一些信息,刷新 getUpdates API 链接查看是否收到对应信息更新 - 如果没收到可以多发几次,直至收到信息
- 机器人收到信息后链接会更新对应信息内容,查找其中 chat 项下的 id,复制并保存等待后续使用
- (侧边栏)系统设置→警报设置,添加 Alert Services
- 类型选择 Telegram,填写之前保存的 API 令牌和 chat id
TrueNAS 通过命令关闭 HTTPS 重定向
- chrome 浏览器由于 HSTS(HTTP Strict Transport Security)机制也会自动重定向 HTTPS
- 地址栏输入
chrome://net-internals/#hsts并跳转 - 在 Delete domain security policies 输入根域名(不带子域名)并点击 delete 按钮
- 关闭 HTTPS 重定向
midclt call system.general.update '{"ui_httpsredirect": false}'midclt call system.general.update '{"ui_port": 80}'- 启用 80 HTTP 端口,如无
midclt call system.general.config | jq- 查看当前配置
- 然后重启相关服务
service nginx restartservice middlewared restart
TrueNAS 安装 step-ca ssl 证书及设置定时任务续签证书
证书存放位置
/etc/certificates
/var/local/ca-certificates- 添加到信任库时会复制一份到
/usr/local/share/ca-certificates/cert-<填入的证书名称>.crt /usr/local/share/ca-certificates链接到/var/local/ca-certificates/etc/ssl/certs/<certname>.pem链接到/usr/local/share/ca-certificates/<certname>.crt对应文件<certname>为cert-<填入的证书名称>
/root/stepca-certificates- 放置 step 自签证书位置
mkdir -p /root/stepca-certificates
下载安装 step-cli
curl -LO https://dl.smallstep.com/cli/docs-ca-install/latest/step_linux_amd64.tar.gz
tar -xf step_linux_amd64.tar.gz
echo "alias step='~/step_linux_amd64/bin/step'" >> ~/.zshrc- 假设 shell 是 zsh
- 因为
/usr/bin只读,添加到 shell
向 step-ca 申请证书 example.com.crt
- 参考下文配置好 step-ca
step ca bootstrap --ca-url https://<ca-host>:<ca-port> --fingerprint <CA_FINGERPRINT> --install- 安装 CA 根证书到信任库
mkdir -p /root/stepca-certificates && cd /root/stepca-certificates
step ca certificate example.com example.com.crt example.com.key
step certificate inspect example.com.crt- 查看证书是否正常
通过命令行更新证书
midclt call certificate.create "{ \"name\": \"$(date +%Y%m%d-%H%M%S)\", \"certificate\": \"$(sed ':a;N;$!ba;s/\n/\\n/g' /root/stepca-certificates/example.com.crt | tr -d '\r')\", \"privatekey\": \"$(sed ':a;N;$!ba;s/\n/\\n/g' /root/stepca-certificates/example.com.key | tr -d '\r')\", \"create_type\": \"CERTIFICATE_CREATE_IMPORTED\" }"- 导入刚申请的证书,获取 ID
midclt call system.general.update "{\"ui_certificate\": $(midclt call certificate.query | jq 'sort_by(.id) | last | .id')}"- 替换 ui 证书为刚才导入的证书 ID 并重启 UI
- 更新证书并重启 nginx 服务
sed -i "s|ssl_certificate\s*\"[^\"]*\";|ssl_certificate $(midclt call certificate.query | jq 'sort_by(.id) | last | .certificate_path');|" /etc/nginx/nginx.confsed -i "s|ssl_certificate_key\s*\"[^\"]*\";|ssl_certificate_key $(midclt call certificate.query | jq 'sort_by(.id) | last | .privatekey_path');|" /etc/nginx/nginx.confservice nginx restart
- 可选,删除最早导入的首个证书
midclt call certificate.delete $(midclt call certificate.query | jq 'sort_by(.id) | first | .id')
(可选)step-ca 签发后 GUI 手动上传证书
- (侧边栏)用户凭证→证书→(证书)添加
- 名称随意,类型选导入证书,勾选添加到信任库,点击下一步
- 证书和私钥将以输入的名称命名
- 添加到信任库时会复制一份到
/usr/local/share/ca-certificates/cert-<填入的证书名称>.crt - 记事本打开要导入的 crt 及 key 文件,复制粘贴内容到证书和私钥栏,点击下一步
- 保存
- (侧边栏)系统→常规配置→(GUI)设置
- GUI SSL证书勾选刚才填入的证书名称
- 点击保存
定期续签证书
续签证书并重启需要证书的对应服务
nano /root/scripts/renew.truenas.sh
nano /root/scripts/after.renew.truenas.sh- 根据需要添加服务
- 部分应用可能需要重启中间件
service middlewared restart
chmod +x /root/scripts/renew.truenas.sh /root/scripts/after.renew.truenas.sh
- 通过命令行创建定期续签证书的定时任务
- 根据自身情况自行修改执行时间和输出
\"stdout\": true为隐藏对应标准输出,否则会发送到对应账户的 cronmidclt call cronjob.create "{ \"enabled\": true, \"schedule\": { \"minute\": \"42\", \"hour\": \"*\", \"dom\": \"*\", \"month\": \"*\", \"dow\": \"*\" }, \"command\": \"bash /root/scripts/renew.truenas.sh\", \"description\": \"Renew truenas certificates\", \"user\": \"root\", \"stderr\": false, \"stdout\": true }"
Truenas 通过 docker 或 k3s 直接管理应用
- docker
docker psdocker exec -it <container_id> /bin/sh
- k3s
k3s kubectl get pods --all-namespacesk3s kubectl config set-context --current --namespace=<NAMESPACE>k3s kubectl exec --stdin --tty <POD_NAME> /bin/sh
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/truenas_scale_sys
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
