1. 初始登陆界面
docker部署的脚本为:
docker run -d \
-p 8180:8080 --gpus=all \
-v ollama:/root/.ollama \
-v /home/pretrained_model/output:/app/backend/output \
--name open-webui \
--restart always ghcr.io/open-webui/open-webui:ollama
2. 新增注册入口
方案1:管理员配置
点击进入管理员面板
可以看到:允许用户注册,开关默认并未打开,打开开关并保存,普通用户注册就可以看到注册入口了。
方案2:docker服务启动配置
增加
-e DISABLE_REGISTRATION=false \-v /path/on/host/data:/app/backend/data \
DISABLE_REGISTRATION :是否禁用注册(设为 false 以启用)。
部署脚本变为
docker run -d \
-p 8180:8080 --gpus=all \
-v ollama:/root/.ollama \
-v /home/pretrained_model/output:/app/backend/output \
-e DISABLE_REGISTRATION=false \
-e OLLAMA_API_BASE=http://localhost:11434 \
-e MODEL_ISOLATION=false \
-v /home/data:/app/backend/data \
--name open-webui \
--restart always ghcr.io/open-webui/open-webui:ollama
增加后仍无注册入口
检查容器的挂载信息:
$ docker inspect 5ce | grep Mounts -A 20"Mounts": [{"Type": "volume","Name": "ollama","Source": "/home/docker/lib/docker/volumes/ollama/_data","Destination": "/root/.ollama","Driver": "local","Mode": "z","RW": true,"Propagation": ""},{"Type": "bind","Source": "/home/pretrained_model/output","Destination": "/app/backend/output","Mode": "","RW": true,"Propagation": "rprivate"},{"Type": "bind",
(1)关键配置项
如果目标是 重新启用注册功能,检查以下配置:
.env
文件中的变量:
DISABLE_REGISTRATION=false # 确保为 false
ADMIN_USERNAME=admin # 管理员账户(第一个注册用户)config.json
中的字段(如果存在):
{
"auth": {
"disable_registration": false
}
}
root@5d771f4dd26f:/app/backend# cat .env
cat: .env: No such file or directory
root@5d771f4dd26f:/app/backend# cat /app/backend/.env
cat: /app/backend/.env: No such file or directory
root@5d771f4dd26f:/app/backend# ls -la /app/backend/config.*
ls: cannot access '/app/backend/config.*': No such file or directory
root@5d771f4dd26f:/app/backend# ls /app/backend/data/
cache uploads vector_db webui.db从你的检查结果来看,Open WebUI 容器内 没有
.env 或 config.json 文件,但存在 /app/backend/data/ 目录,其中包含 webui.db
(SQLite 数据库文件)。这说明配置可能通过以下方式管理:1. 配置存储在数据库 (webui.db) 中
Open WebUI 的部分设置(如用户权限、注册开关)可能直接保存在数据库里。
检查方法:
apt update && apt install -y sqlite3
sqlite3 /app/backend/data/webui.db "SELECT * FROM settings;"
或查看用户表:
sqlite3 /app/backend/data/webui.db "SELECT * FROM users;"
root@5d771f4dd26f:/app/backend# sqlite3 /app/backend/data/webui.db "SELECT * FROM settings;"
Error: in prepare, no such table: settings既然 webui.db 中没有 settings 表,说明 Open WebUI 的配置可能存储在其他位置,或者通过其他方式管理。以下是进一步的排查和解决方案:1. 检查所有数据库表
运行以下命令查看 webui.db 中的所有表,确认是否有与配置相关的表:
sqlite3 /app/backend/data/webui.db ".tables"
root@5d771f4dd26f:/app/backend# sqlite3 /app/backend/data/webui.db ".tables"
alembic_version config group model
auth document knowledge note
channel feedback memory prompt
channel_member file message tag
chat folder message_reaction tool
chatidtag function migratehistory user从 .tables 输出可以看到,数据库中有 config 和 user 表,但没有 settings表。这说明 Open WebUI 的配置可能存储在 config 表中,而用户数据在 user 表中。1. 检查 config 表
运行以下命令查看 config 表的内容:
sqlite3 /app/backend/data/webui.db "SELECT * FROM config;"
root@5d771f4dd26f:/app/backend# sqlite3 /app/backend/data/webui.db "SELECT * FROM config;"
1|{"version": 0, "ui": {"enable_signup": false}}|0|2025-06-05 02:04:47|从 config 表的输出可以看到,注册功能被明确关闭了:
{"version": 0, "ui": {"enable_signup": false}}解决方案:直接修改数据库启用注册
1. 更新 config 表
运行以下命令将 enable_signup 改为 true:
sqlite3 /app/backend/data/webui.db "UPDATE config SET value='{\"version\": 0, \"ui\": {\"enable_signup\": true}}' WHERE key=1;"
root@5d771f4dd26f:/app/backend# sqlite3 /app/backend/data/webui.db "UPDATE config SET value='{"version": 0, "ui": {"enable_signup": true}}' WHERE key=1;"
Error: in prepare, no such column: value根据config表结构和错误信息,我们需要调整SQL语句。让我们重新分析并解决这个问题。
正确的解决方案:
首先检查config表的完整结构:
sqlite3 /app/backend/data/webui.db "PRAGMA table_info(config);"
root@5d771f4dd26f:/app/backend# sqlite3 /app/backend/data/webui.db "PRAGMA table_info(config);"
0|id|INTEGER|1||1
1|data|JSON|1||0
2|version|INTEGER|1||0
3|created_at|DATETIME|1|CURRENT_TIMESTAMP|0
4|updated_at|DATETIME|0|CURRENT_TIMESTAMP|0根据 PRAGMA table_info(config); 的输出,config 表的结构如下:
| 列号 | 列名 | 类型 | 非空 | 默认值 | 主键 |
|------|-----------|----------|------|-----------------|------|
| 0 | id | INTEGER | 1 | - | 1 |
| 1 | data | JSON | 1 | - | 0 |
| 2 | version | INTEGER | 1 | - | 0 |
| 3 | created_at| DATETIME | 1 | CURRENT_TIMESTAMP| 0 |
| 4 | updated_at| DATETIME | 0 | CURRENT_TIMESTAMP| 0 |正确的 SQL 更新命令要修改注册设置,你需要更新 data 列(而不是之前假设的 value 列):
sqlite3 /app/backend/data/webui.db "UPDATE config SET data='{\"version\": 0, \"ui\": {\"enable_signup\": true}}', updated_at=CURRENT_TIMESTAMP WHERE id=1;"
# 退出并重启
exit
docker restart 5d7
root@5ce1f6824ab5:/app/backend# sqlite3 /app/backend/data/webui.db "SELECT data FROM config;"
{"version": 0, "ui": {"enable_signup": true}}
完整操作流程:
# 进入容器
docker exec -it 5d7 /bin/bash# 更新配置
sqlite3 /app/backend/data/webui.db "UPDATE config SET data='{\"version\": 0, \"ui\": {\"enable_signup\": true}}' WHERE id=1;"# 验证
sqlite3 /app/backend/data/webui.db "SELECT data FROM config;"# 退出并重启
exit
docker restart 5d7
成功出现注册入口:
3. 如何让普通用户看到模型
普通用户登陆进来后,发现没有可用的模型
在 Open WebUI 中,管理员为普通用户开放模型权限的完整操作流程如下:1. 通过管理员面板设置
操作路径:
使用管理员账户登录 Open WebUI 点击左下角 ⚙️ Settings (设置)
选择 Admin Panel (管理员面板)
进入 Model Permissions (模型权限) 选项卡权限控制选项:全局开关:启用/禁用 模型隔离 (Model Isolation)
✅ 关闭时:所有用户可见全部模型
❌ 开启时:需单独授权模型单个模型授权:
勾选用户旁的复选框或使用 Bulk Actions 批量授权
普通用户就看看到模型了