Skip to content

故障排除

警告

这部分的内容适用于高级用户。

前言

本页包含对 Memos 实例进行故障排除的说明。

本文内容基于如下假设:

  • 容器名称是 memos
  • 数据库驱动是 sqlite
  • 数据库文件是 /var/opt/memos/memos_prod.db

重要

/var/opt/memos/memos_prod.db 是一个容器 的绝对路径。只有在创建容器时提供了与默认值不同的 MEMOS_DATA 环境变量时,这个路径才会变化。

重新启用密码登录

如果你因单点登录 (SSO) 设置失败而将自己锁定在 Memos 实例之外,则可以按照以下步骤重新启用常规登录。

  • 进入容器 shell:
bash
docker exec -it memos ash
  • 安装 SQLite shell
bash
apk add --no-cache sqlite
  • 在数据库上启用密码登录:
bash
sqlite3 /var/opt/memos/memos_prod.db -cmd '.mode csv' <<EOF
  UPDATE system_setting
    SET value = json_patch(value, '{"disallowPasswordLogin": false}')
      WHERE name = 'GENERAL';
EOF

重要

这是一个单行命令,请一次性执行。

  • 退出容器 shell:
bash
exit
  • 重启容器:
bash
docker restart memos

重设管理员密码

  • 进入容器 shell:
bash
docker exec -it memos ash
  • 安装 SQLite shell
bash
apk add --no-cache sqlite
  • 在数据库中重设密码:

这会将主用户密码更改为 secret 并取消用户归档。它还会显示用户名,以防您忘记。

bash
sqlite3 /var/opt/memos/memos_prod.db -cmd '.mode csv' <<EOF
  UPDATE user
    SET password_hash='\$2a\$12\$fWLqtEFiwr0oFwz3I9H6Uu/W7MvPCJGA9fLlTDV5eO2qsH8yUANku',
      row_status = 'NORMAL'
        WHERE id = 1;
  SELECT user.username FROM user WHERE user.id = 1;
EOF

重要

这是一个单行命令,请一次性执行。

  • 退出容器 shell:
bash
exit
  • 重启容器:
bash
docker restart memos

最后更新于: