<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dashboard on TechLog 技术日志</title><link>https://techlog.122113.xyz/tags/dashboard/</link><description>Recent content in Dashboard on TechLog 技术日志</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 07 Aug 2026 17:00:00 +0800</lastBuildDate><atom:link href="https://techlog.122113.xyz/tags/dashboard/index.xml" rel="self" type="application/rss+xml"/><item><title>Hermes Dashboard 修改密码:配置热更新技巧</title><link>https://techlog.122113.xyz/posts/2026-08-07-dashboard-password/</link><pubDate>Fri, 07 Aug 2026 17:00:00 +0800</pubDate><guid>https://techlog.122113.xyz/posts/2026-08-07-dashboard-password/</guid><description>&lt;blockquote&gt;
&lt;p&gt;修改 Hermes Dashboard 的登录密码,不需要重启整个容器——改配置 + kill 进程即可,QQ 会话不断线。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;Hermes Agent 的 Dashboard(Web 管理界面)默认带 basic auth 登录。&lt;strong&gt;Dashboard 页面本身没有&amp;quot;改密码&amp;quot;功能&lt;/strong&gt;,需要改配置文件。但很多人以为要重启容器才能生效——其实有更轻的方式。&lt;/p&gt;
&lt;h2 id="方法"&gt;方法&lt;/h2&gt;
&lt;h3 id="1-改配置文件"&gt;1. 改配置文件&lt;/h3&gt;
&lt;p&gt;编辑 Hermes 配置(config.yaml),找到 dashboard 的 basic_auth 配置:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dashboard&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;basic_auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;admin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;password_hash&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;lt;scrypt 哈希&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 或明文 password: &amp;#34;xxx&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;两种密码写法&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;password_hash&lt;/code&gt;:scrypt 哈希(推荐,不存明文)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;password&lt;/code&gt;:明文密码(简单但安全性低)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;生成 password_hash&lt;/strong&gt;(交互式输入,避免密码出现在命令行历史里):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 容器部署的,先进入容器内再执行:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; -it &amp;lt;容器名&amp;gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 然后在容器内:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -c &lt;span class="s2"&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;from plugins.dashboard_auth.basic import hash_password
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;import getpass
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;pw = getpass.getpass(&amp;#39;输入新密码: &amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;print(hash_password(pw))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用 &lt;code&gt;getpass&lt;/code&gt; 交互输入——&lt;strong&gt;密码不会显示在终端、不会进 shell history&lt;/strong&gt;。
(如果容器里找不到 &lt;code&gt;plugins&lt;/code&gt; 模块,说明需要在 Hermes 的虚拟环境里执行:&lt;code&gt;/opt/hermes/.venv/bin/python3&lt;/code&gt;)&lt;/p&gt;</description></item></channel></rss>