Dựng Open WebUI cho cả nhóm: tài khoản, phân quyền, cập nhật
Bài thực hành cho người đã cài Open WebUI và muốn mở cho cả nhóm dùng một cách có kiểm soát: ai được vào, ai thấy model nào, ai được chia sẻ, làm sao khoá ngay một tài khoản, sao lưu và cập nhật mà không mất dữ liệu. Phần cài đặt cơ bản không nhắc lại. Dữ kiện đối chiếu tài liệu chính thức của Open WebUI và Docker ngày 20–21/10/2026, bản mới nhất khi kiểm tra là v0.12.3.
Cài xong Open WebUI mới là nửa việc
Máy chung đã chạy Open WebUI, nhân viên đăng nhập và chat được. Rồi câu hỏi xuất hiện: vì sao bạn thực tập cũng thấy model đang thử nghiệm, ai đã bật đăng ký mà có tài khoản lạ, nhân viên nghỉ việc tuần trước còn vào được không, và sau lần cập nhật hôm qua có người mất lịch sử chat. (Tình huống minh hoạ.)
Bài này đi tiếp sau phần cài ở Cài AI Local trong 30 phút: tài khoản và chờ duyệt, nhóm và quyền, quyền theo model, kiểm tra, sao lưu, cập nhật, giấy phép và an toàn. Máy chủ Linux có GPU xem Cài AI Local trên Linux và máy chủ GPU.
Dựng Open WebUI cho cả nhóm là gì?
Dựng Open WebUI cho cả nhóm là cấu hình giao diện chat tự host để mỗi người có tài khoản riêng do admin duyệt, chỉ thấy các model và tài liệu nhóm mình được cấp, còn dữ liệu được sao lưu và phần mềm được cập nhật theo quy trình.
- Ghim phiên bảnChạy bản cố định, khoá bí mật cố định, có volume dữ liệu
- Tài khoảnAdmin đầu tiên; đăng ký mới vào trạng thái chờ duyệt
- Nhóm và quyềnMặc định tối thiểu, cấp thêm theo nhóm
- Quyền modelModel riêng tư, cấp quyền đọc cho nhóm cần dùng
- Vận hànhKiểm tra bằng tài khoản thường, sao lưu, cập nhật có kế hoạch
Bước 1. Chạy bản cố định với Docker Compose
Tag :main và :latest là bản "cuốn chiếu" theo nhánh phát triển, không phải bản ổn định. Tài liệu khuyên máy dùng chung ghim tag dạng :vX.Y.Z (có cả vX.Y.Z-cuda cho GPU NVIDIA). Đặt hai tệp trong cùng một thư mục: tệp .env giữ số phiên bản và khoá bí mật, tệp compose.yaml đọc từ đó.
WEBUI_TAG=v0.12.3
WEBUI_SECRET_KEY=<chuỗi tạo bằng openssl rand -hex 32>services:
open-webui:
image: ghcr.io/open-webui/open-webui:${WEBUI_TAG}
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
extra_hosts:
- host.docker.internal:host-gateway
environment:
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- DEFAULT_USER_ROLE=pending
- ENABLE_PASSWORD_VALIDATION=true
- ENABLE_COMMUNITY_SHARING=false
restart: unless-stopped
volumes:
open-webui:Chạy docker compose up -d (cần Compose v2), rồi xem docker logs -f open-webui tới khi có dòng Application startup complete. Ba điểm không được bỏ: volume open-webui (thiếu là mất chat sau khi khởi động lại), WEBUI_SECRET_KEY cố định (thiếu là mọi người bị đăng xuất sau cập nhật), và không dùng WEBUI_AUTH=False cho nhóm.
DEFAULT_USER_ROLE, ENABLE_SIGNUP chỉ có tác dụng ở lần chạy đầu; sau đó giá trị lưu trong cơ sở dữ liệu thắng, nên đổi trong trang quản trị. Tệp .env chứa khoá bí mật: không gửi qua chat, không đưa lên kho mã.Nguồn: Open WebUI – Quick start: tag, Compose · Open WebUI – biến môi trường · Open WebUI FAQ · Docker Compose – biến từ .env
Bước 2. Tài khoản admin, đăng ký và chờ duyệt
- Mở trang lần đầu, chọn Create Admin Account. Tài khoản này là admin chính, không xoá được bằng giao diện.
- Khi cần mời nhân viên: avatar → Settings > Admin > Authentication → bật New Sign Ups. Giữ Default User Role là
pending; đặtuserthì ai đăng ký cũng vào được ngay. - Nhân viên tự đăng ký, tài khoản nằm ở trạng thái pending, chưa có quyền gì.
- Admin vào Admin Panel > Users, đối chiếu đúng người, đổi
pendingthànhuser. Mời xong thì tắt New Sign Ups.
| Vai trò | Quyền theo tài liệu |
|---|---|
admin | Bỏ qua hầu hết kiểm tra quyền; chỉ cấp cho 1–2 người phụ trách |
user | Theo quyền mặc định và quyền của các nhóm mình thuộc về |
pending | Không có quyền; dùng cho tài khoản chờ duyệt hoặc cần khoá |
Khoá tài khoản: hạ về pending rồi bấm Sign out all devices. Khoá API của người đó vẫn còn hiệu lực, nên chỉ cấp quyền API Keys qua nhóm cho người thật cần. Quên mật khẩu admin: làm theo trang Reset Admin Password của tài liệu, thao tác trực tiếp trên tệp webui.db, nên sao lưu trước.
Nguồn: Open WebUI – chia sẻ cho nhóm · Open WebUI – vai trò · Open WebUI – đặt lại mật khẩu admin
Bước 3. Nhóm và quyền: mặc định tối thiểu, cấp thêm theo nhóm
Quyền trong Open WebUI cộng dồn: một người có tổng quyền của mặc định toàn cục và mọi nhóm họ thuộc về, kể cả nhóm cha. Không có quyền "cấm". Vì vậy tài liệu khuyên để Default Permissions ở mức tối thiểu (Admin Panel > Users > Groups), rồi tạo nhóm để cấp thêm. Có năm khu quyền: Workspace (Models, Knowledge, Prompts, Tools, Skills, nhập xuất), Sharing, Chat (tải tệp, xoá chat, chat tạm…), Features (API Keys, Notes, Channels, Web Search, tạo ảnh, Code Interpreter, Memories…) và Settings.
| Nhóm (ví dụ minh hoạ) | Được dùng | Quyền thêm |
|---|---|---|
| Mặc định (mọi người) | Chat, tải tệp lên | Tắt Tools, API Keys, chia sẻ ra ngoài nhóm |
| Sale | Model "Trợ lý CSKH" (quyền Read) | Kho kiến thức sản phẩm |
| Marketing | Model "Trợ lý viết nội dung" (Read) | Prompts mẫu, tạo ảnh nếu máy có model ảnh |
| Quản trị AI (1–2 người) | Quyền Write các model của công ty | Workspace Models, Knowledge; Tools nếu thật cần |
Mỗi nhóm có thể đặt Default models riêng và mục "Who can share to this group" (Anyone, Members mặc định, No one). Nhóm lồng nhau được, ví dụ nhóm Sale miền Bắc nằm trong nhóm Sale (ví dụ minh hoạ).
Nguồn: Open WebUI – quyền · Open WebUI – nhóm
Bước 4. Quyền theo model: ai thấy model nào
- Vào Workspace > Models, tạo model tuỳ biến (gắn prompt hệ thống, kho kiến thức) đặt trên model gốc, ví dụ "Trợ lý CSKH" (ví dụ minh hoạ).
- Đặt model ở chế độ Private, rồi cấp Read cho nhóm Sale. Cấp Write tương đương trao quyền chủ sở hữu, chỉ dành cho nhóm Quản trị AI. Public nghĩa là mọi người đã đăng nhập đều dùng được.
- Với model gốc: để Public và bật Hide. Model tuỳ biến cần người dùng có quyền với cả model gốc, nếu không sẽ báo "Model not found".
- Giữ
BYPASS_MODEL_ACCESS_CONTROLở mặc định False; đặt True thì ai cũng thấy mọi model.
Mỗi model mở có giấy phép riêng (Apache-2.0, MIT, giấy phép cộng đồng…); đọc điều khoản trước khi đưa vào việc kinh doanh, xem Bản đồ model AI mở.
Nguồn: Open WebUI – quyền với model · Open WebUI – Workspace Models · Open WebUI – BYPASS_MODEL_ACCESS_CONTROL
Kiểm tra đã làm đúng
- Tạo một tài khoản thử, đăng ký: tài khoản nằm ở
pendingvà không chat được. - Duyệt tài khoản thử vào nhóm Sale, đăng nhập bằng nó: chỉ thấy "Trợ lý CSKH", không thấy model gốc đã ẩn hay model của nhóm khác.
- Admin dùng Preview Access (Admin Panel > Users) để xem nhanh một người thấy gì.
- Hạ tài khoản thử về
pending, bấm Sign out all devices: phiên đang mở bị đăng xuất. - Khởi động lại container: người dùng, nhóm, lịch sử chat vẫn còn.
Nguồn: Open WebUI – kiểm tra bằng tài khoản thường · Open WebUI – Preview Access
Sao lưu và khôi phục dữ liệu Open WebUI
Mọi tài khoản, nhóm, lịch sử chat, cài đặt nằm trong volume open-webui. Lệnh sao lưu theo tài liệu tạo một tệp nén có ngày trong tên, ở thư mục bạn đang đứng:
docker run --rm -v open-webui:/data -v $(pwd):/backup \
alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /dataKhôi phục (thay ngày của tệp cần dùng):
docker stop open-webui
docker run --rm -v open-webui:/data -v $(pwd):/backup \
alpine sh -c "rm -rf /data/* && tar xzf /backup/openwebui-<YYYYMMDD>.tar.gz -C /"
docker start open-webui- Sao lưu trước mỗi lần cập nhật và theo lịch đều đặn.
- Chép bản sao lưu sang máy hoặc ổ khác; bản nằm cùng máy không cứu được khi hỏng ổ.
- Bản sao lưu chứa hội thoại nội bộ: cất ở nơi có phân quyền, mã hoá nếu mang ra ngoài.
- Lưu
WEBUI_SECRET_KEYtrong trình quản lý mật khẩu; mất khoá thì mọi người phải đăng nhập lại.
Nguồn: Open WebUI – sao lưu, khôi phục
Cập nhật và gỡ cài đặt
- Đọc ghi chú phát hành của bản mới. Open WebUI ra bản lớn hằng tuần; bản v0.12.1 có chuyển đổi cơ sở dữ liệu và tài liệu nhắc sao lưu trước.
- Sao lưu volume như mục trên.
- Sửa
WEBUI_TAGtrong.envsang bản mới, chạydocker compose pullrồidocker compose up -d. - Nhắc mọi người xoá bộ nhớ đệm trình duyệt (Ctrl+F5 hoặc Cmd+Shift+R), rồi kiểm tra lại như mục Kiểm tra.
Chuyển đổi cơ sở dữ liệu là một chiều: đổi lại image cũ không đưa dữ liệu về như trước, phải khôi phục bản sao lưu. Về tự động: Watchtower bản gốc đã ngừng bảo trì và lỗi với Docker 29 trở lên, tài liệu chỉ sang bản fork nickfedor/watchtower; với máy dùng chung, tài liệu khuyên dùng Diun (chỉ báo có bản mới) và cập nhật tay. Cài bằng pip thì cập nhật bằng pip install -U open-webui.
Gỡ: docker compose down giữ lại dữ liệu; thêm -v là xoá toàn bộ dữ liệu. Bản pip gỡ bằng pip uninstall open-webui, dữ liệu ở DATA_DIR phải tự xoá.
Nguồn: Open WebUI – cập nhật · Open WebUI – các bản phát hành · Open WebUI FAQ – nhịp phát hành · Open WebUI – gỡ cài đặt
Giấy phép: giữ thương hiệu thì không giới hạn người dùng nội bộ
Từ bản 0.6.6, giấy phép Open WebUI là BSD-3 kèm điều khoản giữ thương hiệu. Trang giấy phép ghi: dùng cho nhân viên trong nội bộ không giới hạn số người, miễn tên và logo Open WebUI luôn hiện rõ. Chỉ khi muốn xoá hoặc đổi thương hiệu mới cần một trong ba điều kiện:
- Có từ 50 người dùng trở xuống trong một khoảng 30 ngày;
- Là người đóng góp đáng kể cho dự án và được cho phép trước bằng văn bản;
- Có giấy phép doanh nghiệp cho phép đổi thương hiệu.
Vậy nếu định gắn logo công ty thay cho Open WebUI, hãy đếm số người dùng trước. Nội dung trên là tóm tắt; đọc toàn văn trước khi quyết định.
Nguồn: Open WebUI – giấy phép · Open WebUI – GitHub
Lỗi thường gặp và cách xử lý
| Hiện tượng | Cách xử lý theo tài liệu |
|---|---|
| Mọi người bị đăng xuất, báo "Error decrypting tokens" sau cập nhật | Đặt WEBUI_SECRET_KEY cố định |
| Mất hết chat sau khi khởi động lại | Chạy thiếu volume -v open-webui:/app/backend/data |
| Báo "Open WebUI backend required" | Map sai cổng (phải vào cổng 8080 của container) hoặc trình duyệt giữ bản cũ |
| Không kết nối được Ollama trên Linux | Trong container, localhost là chính container. Hoặc đặt OLLAMA_HOST=0.0.0.0 cho Ollama (cả mạng LAN gọi được, cần tường lửa), hoặc chạy Open WebUI với --network=host và OLLAMA_BASE_URL=http://127.0.0.1:11434, khi đó giao diện ở cổng 8080 |
| Sau reverse proxy chat rỗng hoặc treo | Đặt WEBUI_URL, CORS_ALLOW_ORIGIN; proxy hỗ trợ WebSocket; Nginx thêm proxy_buffering off; |
| Trợ lý chia sẻ báo "Model not found" | Cấp quyền model gốc (Public + Hide) |
Nguồn: Open WebUI – lỗi kết nối · Open WebUI FAQ
An toàn khi mở cho cả nhóm
- Không mở thẳng ra Internet. Open WebUI không tự làm HTTPS; đặt sau reverse proxy (Nginx, Caddy…) hoặc VPN như Tailscale. Có HTTPS thì đặt
WEBUI_SESSION_COOKIE_SECURE=truevà giới hạnFORWARDED_ALLOW_IPS(mặc định*) về IP của proxy. - Giữ chờ duyệt và mật khẩu mạnh:
DEFAULT_USER_ROLE=pending,ENABLE_PASSWORD_VALIDATION=true. - Giữ dữ liệu trong nhà: tắt Community Sharing. Bản cài mặc định có gọi ra ngoài để kiểm tra phiên bản (
ENABLE_VERSION_UPDATE_CHECK), lấy danh sách model OpenAI (ENABLE_OPENAI_API), kiểm tra model embedding trên Hugging Face (RAG_EMBEDDING_MODEL_AUTO_UPDATE); đặt false cái nào không cần. - Cập nhật bản vá: v0.11.4 từng vá lỗi cho phép trang web lạ lấy token phiên đăng nhập (điểm 8.1).
- Kết nối đám mây là dữ liệu rời máy: nếu thêm API Claude hay GPT vào Connections, ghi rõ model nào chạy ngoài để nhân viên không dán dữ liệu khách vào nhầm chỗ.
Nguồn: Open WebUI – Hardening · Open WebUI – gọi ra ngoài · Open WebUI – advisories
Bắt đầu từ đâu?
- Hôm nay: chuyển sang bản ghim phiên bản, kiểm tra volume và khoá bí mật, chạy một lần sao lưu.
- Tuần này: đặt quyền mặc định tối thiểu, tạo 2–3 nhóm, đưa model gốc về Public + Hide, chia sẻ model tuỳ biến theo nhóm, kiểm tra bằng tài khoản thường.
- Hằng tuần: một người phụ trách đọc ghi chú phát hành, sao lưu rồi mới cập nhật.
Đọc tiếp: LM Studio làm máy chủ AI, hỏi đáp tài liệu nội bộ. Muốn được tư vấn hoặc cài đặt AI Local theo nhu cầu riêng, bạn có thể đăng ký Tư vấn 1-1 hoặc Coaching 1-1 cho doanh nghiệp; chi phí báo sau buổi tư vấn.
Đọc tiếp: LM Studio làm máy chủ →
Câu hỏi thường gặp
Nhân viên nghỉ việc thì khoá tài khoản Open WebUI thế nào?
Vào Admin Panel > Users, đổi vai trò người đó về pending (khoá ngay) và bấm Sign out all devices để đăng xuất mọi phiên. Tài liệu lưu ý khoá API của người đó vẫn còn hiệu lực, nên ngay từ đầu chỉ cấp quyền API Keys cho người thật sự cần.
Vì sao nhân viên báo "Model not found" khi chọn trợ lý tôi đã chia sẻ?
Model tuỳ biến trong Workspace cần người dùng có quyền với cả model gốc bên dưới. Cách tài liệu khuyên: để model gốc ở chế độ Public và bật Hide, rồi chia sẻ model tuỳ biến cho nhóm cần dùng.
Có cách nào cấm một quyền chỉ với một nhóm không?
Không có quyền "cấm" riêng. Quyền trong Open WebUI cộng dồn từ mặc định toàn cục và mọi nhóm người đó thuộc về. Muốn tắt một quyền, phải tắt ở mặc định và ở mọi nhóm của người đó. Vì vậy nên để mặc định tối thiểu, cấp thêm qua nhóm.
Công ty hơn 50 người dùng Open WebUI có phải mua giấy phép không?
Theo trang giấy phép, dùng nội bộ không giới hạn số người khi giữ nguyên tên và logo Open WebUI ở vị trí dễ thấy. Ngưỡng 50 người dùng trong 30 ngày chỉ liên quan khi bạn muốn xoá hoặc đổi thương hiệu; quá ngưỡng đó cần giấy phép doanh nghiệp hoặc văn bản cho phép. Hãy đọc toàn văn trước khi quyết định.
Cập nhật Open WebUI bị lỗi thì quay lại bản cũ được không?
Chỉ đổi lại image cũ là chưa đủ nếu bản mới đã chuyển đổi cơ sở dữ liệu, vì bước này một chiều. Cách quay lại là khôi phục bản sao lưu làm trước khi cập nhật. Đó là lý do luôn sao lưu volume trước mỗi lần nâng cấp.
Tài liệu liên quan
- AI Local · AI AgentAI Local là gì? Chạy AI ngay trên máy tính, không tốn phí APIAI Local là gì: chạy model AI mở ngay trên máy tính của bạn, không trả phí API theo lượt, dữ liệu ở lại máy. Lợi ích, giới hạn, so sánh với AI đám mây.
- AI Local · AI AgentCài Ollama trên Windows có card NVIDIA từng bướcCài Ollama trên Windows có card NVIDIA: kiểm tra driver, cài đặt, dời thư mục model sang ổ khác, đặt biến môi trường, xác nhận chạy GPU, sửa lỗi, cập nhật, gỡ.
- AI Local · AI AgentCấu hình máy tính chạy AI Local: RAM, VRAM, Mac hay PC NVIDIACấu hình máy tính chạy AI Local: RAM, VRAM quyết định model nào chạy được, cách ước tính dung lượng theo Q4/Q8, Mac hay PC NVIDIA, ổ cứng, mua máy hay thuê GPU.
- AI Local · AI AgentCài AI Local trên Mac: Ollama và LM StudioCài AI Local trên Mac từng bước: xác định chip Apple hay Intel, cài Ollama và LM Studio, dời thư mục model, tắt tự chạy, kiểm tra, sửa lỗi, cập nhật, gỡ.
Xem tất cả tài liệu hướng dẫn →

Đăng ký Tư vấn 1-1 về AI Local
Chuyên gia Aduca cùng bạn xem nhu cầu, máy đang có và dữ liệu cần bảo vệ, rồi đề xuất nên chạy AI Local, dùng đám mây hay kết hợp. Dịch vụ cài AI Local nằm trong gói Tư vấn 1-1 hoặc Coaching 1-1; chi phí báo sau buổi tư vấn.
Nguồn tham khảo
- Open WebUI Docs – Quick start
- Open WebUI Docs – Chia sẻ cho nhóm
- Open WebUI Docs – Vai trò
- Open WebUI Docs – Quyền
- Open WebUI Docs – Nhóm
- Open WebUI Docs – Workspace Models
- Open WebUI Docs – Cập nhật, sao lưu
- Open WebUI Docs – Hardening
- Open WebUI Docs – Biến môi trường
- Open WebUI – Giấy phép
Lịch sử cập nhật
- 21/10/2026 — Bản đầu.
Miễn trừ trách nhiệm
Bài viết thuộc chuỗi kiến thức của Công ty Cổ phần Giáo dục Aduca, chia sẻ miễn phí cho mục đích học tập. Thông tin kỹ thuật đối chiếu với tài liệu chính thức của các dự án và nền tảng tại ngày cập nhật (có ghi nguồn); phần nhận định là quan điểm của Aduca. OpenClaw, Hermes Agent, Claude (thương hiệu của Anthropic), ChatGPT (thương hiệu của OpenAI), n8n (thương hiệu của n8n GmbH), các phần mềm chạy model và các model AI mở (Ollama, LM Studio, Qwen, Gemma, gpt-oss…), Obsidian, Notion, phương pháp Building a Second Brain (Tiago Forte) cùng các phần mềm, dịch vụ nêu trong bài thuộc về chủ sở hữu tương ứng, không thuộc Aduca; Aduca không phải đối tác chính thức của các công ty này. Tính năng, gói và giá có thể thay đổi bất cứ lúc nào – hãy kiểm tra trang chính thức trước khi mua. Kết quả áp dụng phụ thuộc quy trình, dữ liệu và con người của từng doanh nghiệp; bài viết không cam kết doanh thu hay hiệu quả cụ thể. © 2026 Aduca — được trích dẫn khi ghi rõ nguồn aduca.vn.