Cài Portainer trên Synology: quản lý Docker qua Web UI

Cài Portainer trên Synology: quản lý Docker qua Web UI

Nếu bạn đã cài Container Manager trên Synology và chạy vài container rồi, chắc cũng nhận ra một điều: giao diện DSM cho Docker nó... vừa đủ dùng, không hơn. Muốn xem log chi tiết, muốn debug một file

Portainer là gì và tại sao dân chơi Docker trên NAS ai cũng nhắc đến nó

Nếu bạn đã cài Container Manager trên Synology và chạy vài container rồi, chắc cũng nhận ra một điều: giao diện DSM cho Docker nó... vừa đủ dùng, không hơn. Muốn xem log chi tiết, muốn debug một file docker-compose bị lỗi cú pháp, muốn quản lý cùng lúc chục container — Container Manager bắt đầu đuối. Portainer sinh ra để lấp đúng chỗ trống đó.

Nói ngắn gọn, Portainer là một web UI mã nguồn mở dùng để quản lý Docker — container, image, volume, network — mọi thứ nằm trên một dashboard, thao tác bằng chuột thay vì gõ lệnh docker liên tục qua SSH.

Nó làm được gì cho bạn cụ thể:

  • Dashboard trực quan: start/stop/xóa container, xem resource CPU/RAM từng container chỉ vài click — nhanh hơn hẳn việc lục từng package trong DSM.
  • Stacks: deploy multi-container bằng cú pháp docker-compose ngay trên UI, kèm gợi ý sửa lỗi cú pháp khi bạn gõ sai — đỡ phải đoán mò xem compose file sai chỗ nào.
  • App Templates: cài nhanh các app phổ biến (Nginx, WordPress, Portainer Agent...) chỉ vài click, không cần tự tay viết compose từ đầu.
  • Quản lý đa host: qua Environments và Portainer Agent, bạn gom nhiều Docker host — nhiều NAS, VPS — về chung một dashboard.

Case thực tế thì dễ hình dung. Bạn tự dựng "home server" chạy 10-15 container: Jellyfin, cả dàn *arr stack (Sonarr, Radarr, Prowlarr...), Uptime Kuma theo dõi uptime, VPN client... Mỗi lần muốn xem container nào đang ăn RAM bất thường, hoặc restart nhanh một cái bị treo, vào Container Manager lục từng project rất mệt. Portainer cho bạn nhìn toàn cảnh trong một màn hình.

Hoặc bạn vừa quản Synology ở nhà vừa có 1-2 VPS chạy Docker host vài dự án cá nhân — thay vì SSH nhảy qua nhảy lại từng máy, gom hết vào một dashboard Portainer duy nhất. Người mới học Docker cũng hợp: exec vào container, xem log real-time, tất cả qua trình duyệt thay vì phải nhớ cả rổ lệnh docker exec, docker logs -f.

Quan trọng là hiểu đúng vai trò: Portainer không thay thế Container Manager. Container Manager (chính là package Docker cũ đổi tên từ DSM 7.2) là cái engine chạy Docker thật sự. Portainer chỉ là lớp giao diện quản lý ngồi lên trên, mạnh hơn ở phần Stacks, Templates và multi-host mà Container Manager chưa làm tới.

Sơ đồ luồng Portainer kết nối và quản lý Docker Engine qua giao diện web

Vì sao cài bằng docker run qua SSH, không dùng GUI Container Manager hay VM

Nghe có vẻ ngược đời — cài công cụ quản lý Docker mà lại phải chọc SSH gõ lệnh, chứ không dùng đúng giao diện Container Manager sẵn có? Có lý do kỹ thuật hẳn hoi, không phải mình thích làm khó bạn đâu.

Portainer cần mount một file đặc biệt: /var/run/docker.sock — socket giúp Portainer nói chuyện trực tiếp với Docker daemon đang chạy trên NAS, nhờ vậy mới thấy và quản lý được các container hiện có. Vấn đề là Container Manager GUI (đường Registry → Image → Run) chỉ cho bạn browse và mount các thư mục nằm trong shared folder qua File Station. Socket hệ thống đó nằm ngoài /volume1, GUI không thấy được, nên không có cách nào mount qua giao diện chuột. Bắt buộc phải dùng dòng lệnh để chỉ định volume mount này tường minh.

Còn tại sao không chạy Portainer trong Virtual Machine Manager cho "sạch sẽ"? Vì làm vậy là tự đá vào chân mình. VM sẽ tạo ra một Docker daemon hoàn toàn riêng biệt bên trong nó, không liên quan gì tới Docker engine thật đang chạy container của bạn trên NAS. Portainer trong VM sẽ nhìn thấy một dashboard trống trơn, không quản lý được cái gì cả — mất hết ý nghĩa cài Portainer ngay từ đầu.

Về việc bật SSH: bài này ưu tiên cách chạy lệnh một lần qua SSH tạm thời (hoặc Task Scheduler chạy script dưới quyền root), thay vì để SSH bật vĩnh viễn. Bật SSH thường trực trên NAS expose ra ngoài là tự thêm một cửa cho kẻ xấu dò mật khẩu — không cần thiết nếu chỉ dùng một lần rồi tắt.

Yêu cầu trước khi cài

Kiểm tra cái này trước, đỡ mất công làm nửa chừng rồi phát hiện máy không hỗ trợ:

  • CPU phải là x86_64 (Intel Celeron/Pentium/Atom, hoặc AMD Ryzen). Docker/Container Manager chỉ chạy trên kiến trúc này. Các dòng ARM như DS124, DS223, DS223j, DS423, hay BeeStation — xin lỗi, không cài được Container Manager nên cũng không cài được Portainer theo cách này.
  • DSM 7.2 trở lên: cài package tên Container Manager từ Package Center. Máy chạy DSM cũ hơn thì tìm package tên Docker (tên gọi trước khi Synology đổi thành Container Manager) — bản chất giống nhau.
  • Container Manager phải đang chạy (status Running trong Package Center), không chỉ cài xong để đó.

Muốn biết model của bạn thuộc dòng nào, vào Control Panel → Info Center xem CPU, hoặc tra thẳng model trên trang Synology.

Các bước cài đặt Portainer

Bước 1: Cài Container Manager

Vào Package Center, tìm "Container Manager", bấm Install. Đợi cài xong và trạng thái hiện Running.

Bước 2: Tạo thư mục lưu dữ liệu

Mở File Station, vào shared folder docker (tạo mới nếu chưa có), tạo thêm thư mục con portainer-ce. Đường dẫn đầy đủ sẽ là /volume1/docker/portainer-ce — nếu volume chính của bạn là volume2 hay volume khác thì thay số tương ứng. Đặt tên toàn chữ thường, tránh gõ nhầm hoa/thường sau này khi gõ lệnh.

Bước 3: Bật SSH tạm thời

Vào Control Panel → Terminal & SNMP, tick "Enable SSH service". Nhớ note lại port SSH (mặc định 22). Thích gọn hơn thì tạo một script chạy một lần trong Task Scheduler (dưới quyền root) để chạy lệnh docker run mà không cần bật SSH — an toàn hơn cho người không rành SSH vì không để cổng mở ra ngoài.

Bước 4: Chạy lệnh docker run

SSH vào NAS (dùng PuTTY, Terminal, hay bất kỳ SSH client nào) bằng tài khoản admin, rồi chạy:

sudo docker run -d \
  -p 8000:8000 -p 9000:9000 -p 9443:9443 \
  --name=portainer-ce --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /volume1/docker/portainer-ce:/data \
  portainer/portainer-ce

Giải thích nhanh các port: 9000 là web UI qua HTTP, 9443 là web UI qua HTTPS (nên dùng cái này cho mọi lần truy cập sau), 8000 dành cho Edge agent — chỉ cần nếu sau này bạn muốn quản lý thêm Docker host khác từ xa. Đừng quên sudo, đây là lỗi phổ biến nhất khiến lệnh báo lỗi ngay từ đầu.

Bước 5: Truy cập và tạo tài khoản admin

Mở trình duyệt, vào https://ip-nas-cua-ban:9443 (hoặc http://ip-nas-cua-ban:9000). Trình duyệt sẽ cảnh báo chứng chỉ không an toàn — bình thường thôi, vì Portainer tự ký chứng chỉ, cứ bấm "Advanced → Proceed". Tạo tài khoản admin và đặt mật khẩu ngay.

Đây là chỗ dễ trượt nhất: bạn có khoảng 5 phút kể từ lúc container start để hoàn tất bước tạo tài khoản admin này. Ai đang cài mà bị gọi điện thoại, quay lại thấy trang báo "initial admin user setup has been disabled" thì không phải bạn làm sai gì, chỉ là hết giờ thôi. Chạy lại sudo docker restart portainer-ce để mở lại wizard.

Bước 6: Tắt SSH nếu không cần nữa

Nếu bạn bật SSH chỉ để chạy đúng lệnh này, quay lại Control Panel tắt đi. Không có lý do gì để mở thêm một cửa cho NAS nếu bạn không dùng thường xuyên.

Kiểm tra Portainer đã kết nối đúng Docker engine

Đăng nhập xong, Portainer tự nhận diện một Environment tên "local" — chính là Docker engine của Container Manager trên NAS, kết nối qua socket bạn mount ở bước 4. Vào mục Containers, bạn phải thấy toàn bộ container đang chạy trên NAS xuất hiện ở đây, kể cả những container tạo từ trước bằng Container Manager. Danh sách trống trơn? Quay lại kiểm tra bước mount docker.sock, gần như chắc chắn thiếu dòng -v /var/run/docker.sock:/var/run/docker.sock.

Muốn theo dõi resource real-time (CPU, RAM từng container), bật thêm tùy chọn "Live connect" trong phần cài đặt Environment.

Giao diện Portainer có gì hay ho hơn Container Manager

Vào thử vài mục chính để thấy sự khác biệt:

  • Containers/Images/Volumes/Networks: liệt kê đầy đủ, filter và search nhanh, xem log dài mà không bị cắt như trên DSM.
  • Stacks: đây là điểm ăn tiền. Tạo một stack mới, dán nguyên file docker-compose vào, Portainer báo lỗi cú pháp ngay trên UI nếu bạn gõ sai indent hay thiếu dấu — so với Container Manager phải deploy xong mới biết lỗi ở đâu.
  • App Templates: kho app dựng sẵn, cài WordPress hay Nginx test chỉ vài click, không cần tự viết compose.

Container Manager có tab "Project" làm việc tương tự Stacks, nhưng trải nghiệm sửa lỗi kém trực quan hơn nhiều — bạn phải soi log thủ công thay vì được gợi ý lỗi ngay khi gõ. Đó là lý do phần lớn người dùng chuyển sang Portainer khi số container tăng lên.

Tính năngContainer ManagerPortainer
Quản lý container cơ bản
Sửa compose có gợi ý lỗi
App Templates cài nhanh
Quản lý nhiều Docker host
Log & resource chi tiếtHạn chếĐầy đủ
Tích hợp sẵn trong DSM

Lỗi thường gặp khi cài

  • "Cannot connect to the Docker daemon at unix:///var/run/docker.sock": hoặc bạn quên sudo, hoặc Container Manager chưa cài/chưa chạy. Vào Package Center kiểm tra lại status.
  • Port 9000 bị chiếm dụng: nếu đã có package hay container khác dùng port này, đổi host port khi chạy lại lệnh, ví dụ -p 9001:9000.
  • Hết thời gian tạo tài khoản admin: như đã nói ở trên, chạy docker restart portainer-ce để mở lại wizard.
  • Dashboard trống, không thấy container nào: thiếu mount docker.sock — lỗi này gần như 100% do quên dòng -v /var/run/docker.sock:/var/run/docker.sock.
  • Gõ nhầm tên volume (volume1 với volume2, hoặc sai hoa/thường trong đường dẫn /data): dữ liệu cấu hình Portainer không lưu đúng chỗ, mất sạch khi container bị xóa hoặc update lên bản mới. Kiểm tra kỹ đường dẫn trước khi chạy lệnh.
  • Firewall DSM chặn port: nếu bạn có bật Firewall trong Control Panel, nhớ thêm rule cho phép port 9000/9443, không thì trình duyệt cứ timeout mãi mà chẳng hiểu vì sao.

Bảo mật và bảo trì

Cái này quan trọng, đọc kỹ: mount /var/run/docker.sock nghĩa là Portainer có quyền tương đương root trên toàn bộ Docker của NAS — tạo, xóa bất kỳ container nào, đọc được mọi volume. Tài khoản admin Portainer không phải chuyện đùa, đặt mật khẩu mạnh và bật 2FA nếu bản Portainer CE bạn dùng hỗ trợ.

Tuyệt đối đừng mở port 9000/9443 trực tiếp ra Internet qua port-forward trên router. Cần truy cập Portainer từ xa, dùng VPN (Synology VPN Server hoặc Tailscale) hoặc đặt sau reverse proxy có xác thực. Trong DSM, giới hạn Firewall chỉ cho LAN truy cập các port này.

Định kỳ pull image mới và recreate container để cập nhật Portainer — công cụ có quyền quản trị cao thế này càng cũ càng dễ thành mục tiêu. Nhiều người cùng quản trị thì dùng tính năng RBAC (Teams/Roles) của Portainer để phân quyền, đừng chia sẻ chung một tài khoản admin cho cả team.

Portainer không khó cài, chỉ khó ở chỗ nhớ đúng thứ tự và đừng quên mount cái socket. Làm đúng một lần, dùng mãi — còn hơn ngồi gõ docker ps cả trăm lần mỗi tuần.

Mua NAS chính hãng

Xem tất cả →

Thiết bị NAS Synology & ổ cứng chính hãng Nhật Bản — tư vấn cấu hình, lắp đặt và bảo hành. Mua qua Shopee, giao toàn quốc.

No comments yet