Thực hành AI Local · Bài 4

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ập nhật 21/10/2026⏱ 10 phút đọcCài đặt & bắt đầuTrung cấp

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.

Sơ đồ phân quyền Open WebUI cho cả nhóm: tài khoản mới ở trạng thái pending chờ admin duyệt; ba vai trò admin, user, pending; quyền cộng dồn từ mặc định toàn cục và các nhóm Sale, Marketing, Quản trị AI; model đặt Private rồi cấp Read cho từng nhóm; quyền Tools tương đương quyền root nên chỉ cấp cho người tin cậy
Hình: Tài khoản, nhóm và quyền model trong Open WebUI (minh hoạ)
  1. Ghim phiên bảnChạy bản cố định, khoá bí mật cố định, có volume dữ liệu
  2. Tài khoảnAdmin đầu tiên; đăng ký mới vào trạng thái chờ duyệt
  3. Nhóm và quyềnMặc định tối thiểu, cấp thêm theo nhóm
  4. Quyền modelModel riêng tư, cấp quyền đọc cho nhóm cần dùng
  5. 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
Năm việc khi mở Open WebUI cho cả nhóm.

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ừ đó.

.env (chỉ để trên máy chủ)Tạo tệp .env cạnh compose.yaml; thay phần trong <…>
WEBUI_TAG=v0.12.3
WEBUI_SECRET_KEY=<chuỗi tạo bằng openssl rand -hex 32>
compose.yamlGhép từ cú pháp chính thức, hãy thử trên máy thử trước
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.

Các biến như 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

  1. 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.
  2. Khi cần mời nhân viên: avatar → Settings > Admin > Authentication → bật New Sign Ups. Giữ Default User Role là pending; đặt user thì ai đăng ký cũng vào được ngay.
  3. Nhân viên tự đăng ký, tài khoản nằm ở trạng thái pending, chưa có quyền gì.
  4. Admin vào Admin Panel > Users, đối chiếu đúng người, đổi pending thành user. Mời xong thì tắt New Sign Ups.
Vai tròQuyền theo tài liệu
adminBỏ qua hầu hết kiểm tra quyền; chỉ cấp cho 1–2 người phụ trách
userTheo quyền mặc định và quyền của các nhóm mình thuộc về
pendingKhô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ùngQuyền thêm
Mặc định (mọi người)Chat, tải tệp lênTắt Tools, API Keys, chia sẻ ra ngoài nhóm
SaleModel "Trợ lý CSKH" (quyền Read)Kho kiến thức sản phẩm
MarketingModel "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 tyWorkspace Models, Knowledge; Tools nếu thật cần
Tài liệu cảnh báo: coi quyền Tools Access như quyền root, vì công cụ chạy mã Python tuỳ ý trên máy chủ. Chỉ cấp cho người bạn tin như tin quản trị máy chủ.

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

  1. 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ạ).
  2. Đặ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.
  3. 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".
  4. 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

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:

Lệnh trên máy tính của bạnDán vào Terminal máy chủ, đứng ở thư mục chứa bản sao lưu
docker run --rm -v open-webui:/data -v $(pwd):/backup \
  alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /data

Khôi phục (thay ngày của tệp cần dùng):

Lệnh trên máy tính của bạnChỉ chạy khi cần khôi phục; lệnh xoá sạch volume trước khi giải nén
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

Nguồn: Open WebUI – sao lưu, khôi phục

Cập nhật và gỡ cài đặt

Quy trình cập nhật Open WebUI an toàn cho cả nhóm: đọc ghi chú phát hành, sao lưu volume open-webui bằng tar, đổi tag phiên bản ghim, docker compose pull rồi up -d, xoá bộ nhớ đệm trình duyệt và kiểm tra bằng tài khoản thường; chuyển đổi cơ sở dữ liệu là một chiều nên muốn quay lại phải khôi phục bản sao lưu
Hình: Năm bước cập nhật Open WebUI không mất dữ liệu (minh hoạ)
  1. Đọ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.
  2. Sao lưu volume như mục trên.
  3. Sửa WEBUI_TAG trong .env sang bản mới, chạy docker compose pull rồi docker compose up -d.
  4. 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:

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ượngCá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ạiChạ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 LinuxTrong 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

Nguồn: Open WebUI – Hardening · Open WebUI – gọi ra ngoài · Open WebUI – advisories

Bắt đầu từ đâu?

  1. 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.
  2. 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.
  3. 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

Xem tất cả tài liệu hướng dẫn →

Đăng ký Tư vấn 1-1 về AI Local – Nguyễn Đức, Aduca
Bước tiếp theo

Đă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.

Về AducaChuỗi bài do đội ngũ Aduca biên soạn từ kinh nghiệm đào tạo và triển khai AI Agent cho Marketing – Sales. Aduca Academy do Nguyễn Đức – Chủ tịch Aduca Group sáng lập; ông kinh doanh thương mại điện tử từ 2012, chạy quảng cáo Facebook từ 2014 và đào tạo từ 2016. Phần thực hành từng bước nằm trong các thư mục OpenClaw, Hermes Agent, Claude, ChatGPT và n8n, Second Brain.

Nguồn tham khảo

Lịch sử cập nhật

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.