Hướng dẫn thực hànhHướng dẫn

Hướng dẫn cách cài n8n trên Docker để giữ dữ liệu

Hôm nay mình sẽ hướng dẫn anh em cách cài n8n trên Docker với volume để mở giao diện và giữ dữ liệu khi chạy lại.

Mình soạn các bước từ tài liệu chính thức của công cụ. Nguồn chưa có log thực thi container, nên phần hỏi AI bên dưới chỉ giúp anh em hiểu lệnh, chưa chứng minh dữ liệu còn nguyên sau khi khởi động lại.

Bước 1: Chuẩn bị cách cài n8n trên Docker

Trước khi làm, anh em cần cài sẵn Docker và mở terminal (cửa sổ gõ lệnh). Anh em gõ lệnh ở đó, rồi mở trình duyệt để vào giao diện.

Ngăn lưu màu hổ phách nằm riêng bên dưới một vỏ hộp trong suốt.

Trước tiên, mình giải thích hai từ anh em sẽ gặp trong lệnh: image là gói cài sẵn của ứng dụng, còn container là bản đang chạy được tạo từ gói đó.

Còn volume là chỗ lưu dữ liệu nằm ngoài container để anh em giữ công việc đã lưu. Theo tài liệu, xóa container không làm mất dữ liệu người dùng trong volume.

Mình sẽ dùng cách lưu mặc định mà tài liệu đã hướng dẫn. Anh em chưa cần đổi cơ sở dữ liệu ở lần làm này, vì việc cần kiểm tra trước là ứng dụng có tìm lại đúng dữ liệu sau khi chạy lại.

Bước 2: Tạo volume cho n8n

Anh em tạo volume trước để có chỗ giữ công việc đã lưu. Lệnh dưới đây tạo volume tên n8n_data để anh em dùng khi chạy ứng dụng. Ở bước sau mình gắn đúng tên này vào lệnh chạy.

docker volume create n8n_data
Cây cầu sáng màu xanh nối hai ô mở trên những khối hình đặt cạnh nhau.

Lần nào chạy anh em cũng dùng đúng tên n8n_data nhé. Nếu anh em gắn một volume khác vào lần chạy sau, ứng dụng sẽ không thấy dữ liệu nằm trong volume trước dù bản thân phần dữ liệu đó vẫn còn.

Theo tài liệu, SQLite lưu dữ liệu workflow trong thư mục người dùng. Anh em cứ hiểu workflow là chuỗi việc mình sắp xếp cho công cụ thực hiện, còn SQLite là cơ sở dữ liệu mà ứng dụng dùng để ghi lại công việc.

Theo tài liệu, lệnh docker rm chỉ xóa container, không xóa dữ liệu người dùng. Anh em cứ giữ nguyên tên n8n_data trong lệnh chạy, lần sau ứng dụng sẽ tìm lại workflow cũ trong volume đó.

Bước 3: Chạy container của n8n

Mình chép nguyên lệnh trong tài liệu để anh em dùng bên dưới. Anh em cần lấy cả khối lệnh, vì dòng gắn volume phải đi cùng phần chạy ứng dụng thì dữ liệu mới được ghi vào đúng chỗ lưu vừa chuẩn bị.

docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

Theo tài liệu, lệnh này tải image cần thiết rồi chạy container trên máy. Anh em chờ ứng dụng khởi động trước khi mở trình duyệt, đồng thời giữ nguyên dòng -v vì nó gắn volume vào thư mục mà ứng dụng dùng để lưu dữ liệu.

Mình nhắc kỹ dòng -v vì thư mục này còn chứa cả encryption key (khóa mã hóa). Tài liệu ghi thư mục này chứa dữ liệu workflow, webhook URL và encryption key dùng để mã hóa credentials. Webhook URL là địa chỉ nhận yêu cầu bên ngoài, còn credentials là tài khoản đăng nhập anh em lưu cho các kết nối.

Đừng bỏ dòng -v nhé. Khóa mã hóa nằm trong volume này, mất volume là n8n tự sinh khóa mới và credentials cũ không mở ra được nữa.

Bước 4: Mở n8n rồi chạy lại

Anh em mở http://localhost:5678 trong trình duyệt để vào giao diện theo địa chỉ mà tài liệu cung cấp. Số 5678 là cổng, tức cửa để n8n nhận kết nối từ trình duyệt của anh em. Dòng -p 5678:5678 nối cửa đó ra máy mình, nên anh em gõ localhost:5678 là vào được giao diện.

Mình sẽ dùng lệnh dừng container mà tài liệu đã cung cấp. Lệnh chạy container giữ terminal đó để hiện log, nên mình sẽ mở thêm một terminal thứ hai. Anh em xem danh sách container bằng lệnh dưới đây để lấy đúng mã của ứng dụng cần dừng.

docker ps -a

Anh em thay [container_id] bằng container ID, tức mã nhận diện của container lấy từ lệnh docker ps -a. Nhớ bỏ luôn dấu ngoặc vuông, chỉ để lại mã container.

docker stop [container_id]

Trước khi dừng, anh em tạo một workflow thử và lưu lại để lát nữa có cái mà kiểm tra. Sau khi dừng, anh em chạy lại lệnh docker run ở bước chạy container, không cần tạo volume lại. Anh em mở lại http://localhost:5678 và xem workflow vừa lưu có còn trong giao diện hay không.

Anh em nhớ chờ n8n khởi động xong rồi hãy mở trình duyệt để kiểm tra workflow vừa lưu.

Lỗi hay gặp

Lỗi đáng lo nhất là mất khóa mã hóa, vì tài liệu cảnh báo rất rõ chuyện này. Nếu dữ liệu chứa khóa không còn ở lần khởi động sau, ứng dụng tạo khóa mới và những credentials đã lưu với khóa cũ sẽ không giải mã được.

Mình khuyên anh em kiểm tra thêm phần credentials sau khi thấy workflow cũ trong giao diện. Giao diện mở được chưa chắc credentials còn dùng được, nên anh em mở một kết nối đã lưu và thử chạy nó. Nếu ứng dụng báo lỗi giải mã, anh em cần kiểm tra xem khóa mã hóa có bị đổi hay không.

Tài liệu cũng nhắc chuyện giữ thư mục khi đổi cơ sở dữ liệu. Dù chuyển phần lưu workflow sang nơi khác, anh em vẫn cần giữ thư mục người dùng vì khóa mã hóa nằm ở đó và vẫn cần cho các kết nối cũ.

Mình đọc lại lần hỏi AI trong log

Phần này mình kể lại lần hỏi Claude Sonnet, dựa trên log mình đã lưu. Theo log, mình gửi prompt cho Claude Sonnet qua Claude Code để nhờ giải thích lệnh chạy và hậu quả khi bỏ phần gắn volume.

Prompt cũng yêu cầu giải thích vì sao trình duyệt mở được giao diện. Mình nhờ model nối phần kết nối với phần lưu dữ liệu, để anh em hiểu vì sao một lệnh chạy được vẫn có thể thiếu chỗ giữ công việc lâu dài.

Log ghi Claude Sonnet trả lời sau 9,5 giây kể từ lúc hỏi. Log ghi câu trả lời của Claude Sonnet dài 368 chữ, nên anh em có thể hình dung đây là phần giải thích ngắn.

Phản hồi đã giải thích các phần của lệnh và chuyện mất khóa. Tuy nhiên, log ghi lần hỏi không kèm file hay công cụ nào, nên câu trả lời ấy chưa chứng minh workflow còn nguyên sau thao tác dừng rồi chạy lại container.

Cách chắc nhất vẫn là anh em tự thử: tạo workflow, dừng container, chạy lại cùng volume rồi xem workflow còn không.

Nguồn tham khảo

  1. README.md · github.com · Tài liệu kỹ thuật · đọc ngày
  2. Lần mình chạy thử ngày 17/10/2026: Hướng dẫn chạy n8n trên máy cá nhân bằng Docker, mở giao diện trên trình duyệt và giữ dữ liệu khi khởi động lại. · quanbi.dev · Mình tự thử · đọc ngày

Bài này thế nào?

Chia sẻ

XFacebook

Ảnh đại diện của chủ trang quanbi.dev

Về mình

Quân Bi · Người viết

Xem thêm →

Bình luận (0)

Chưa có bình luận nào. Bạn mở hàng nhé.

Viết bình luận