Trouble About Vault Warden Admin Token
0x01 argon2 token 问题
一句话:使用
VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$MmeK.....',用单引号括住 token 值即可解决警告问题。
阅读完 Vaultwarden wiki 关于 保护ADMIN_TOKEN 的章节后。我按照要求生成了一个 argon2 key,随后将它写入到与 docker-compose.yml 同级的 .evn 文件中。随后启动。然而我却看见一堆的警告输出
WARNING: The argon2id variable is not set. Defaulting to a blank string.
WARNING: The v variable is not set. Defaulting to a blank string.
WARNING: The m variable is not set. Defaulting to a blank string.
...
0x02 尝试解决
根据文中解释,我了解到这是 token 出现问题了。在最初的想法中,我以为是在docker-compose.yml中对于ADMIN_TOKEN: ${VW_ADMIN_TOKEN}的引用出现了问题。但经过漫长且痛苦的验证后,证明是可以正确引用到它的。
所以现在问题只能是 token 的问题了。我确保.env文件中 argon2 token 是按照 wiki 中的格式填入即:VAULTWARDEN_ADMIN_TOKEN=$argon2id$v=19$m=65540,t=3,p=4$MmeK.....,也就是只使用一个 $ 符号,且不使用'包住 token 。
但始终警告始终在启动时存在,这让人无法忍受。
0x03 解决
在尝试无果后,我开始在该项目的 issue 区中查找问题,果然有人碰到了和我一模一样的问题。根据下方开源作者的回复信息,需要使用'包围住 token。经过这样尝试后,果然问题得到了解决,警告信息消失了。所以.env中,格式应该是VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$MmeK.....'。
0x04 总结
上面的流程看起来很简单,实际上我花了一个上午的时间来解决这个问题😅。问题不仅仅是这样简单。一些额外的信息:
- 修改
.env配置文件后,使用docker compose restart无法把配置同步进容器中,需要手动关闭后再启动。这个问题是我在改好 token 格式后,启动时无警告信息,然后无法登录管理页面 token 提示无效发现的。 - 容器如果提供了 bash,可以使用
echo ${VAR_NAME}来检查输入到容器内部的环境变量是否正常。 - 使用
docker compose config可以检查 docker compose 的配置文件是否有效。 - 不仅可以使用
'括住 token 解决警告问题,我们也可以不使用',而是用两个$来解决,也就是:VAULTWARDEN_ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$MmeK..... - ARGON2 Online 可以在线校验和生成 argon2 token