Cài n8n trên Synology bằng Docker Container Manager

Cài n8n trên Synology bằng Docker Container Manager

n8n (đọc là "n-eight-n") là công cụ tự động hóa workflow kiểu kéo-thả — bạn nối các dịch vụ lại với nhau bằng node, không cần viết code, để dữ liệu tự chạy từ chỗ này sang chỗ khác. Nghĩ đơn giản: có

n8n là gì mà dân tự động hóa NAS nhắc hoài vậy?

n8n (đọc là "n-eight-n") là công cụ tự động hóa workflow kiểu kéo-thả — bạn nối các dịch vụ lại với nhau bằng node, không cần viết code, để dữ liệu tự chạy từ chỗ này sang chỗ khác. Nghĩ đơn giản: có sự kiện A xảy ra thì tự làm B, không cần bạn ngồi bấm tay mỗi lần. Nó giải quyết đúng nỗi đau của dân NAS: muốn tự động hóa mấy việc lặp đi lặp lại nhưng không muốn trả tiền theo từng lần chạy như dịch vụ cloud, và cũng không muốn dữ liệu nhà mình bay lên server người khác.

Vài thứ n8n làm được mà bạn sẽ thấy hữu dụng ngay:

  • Nối hơn 400 dịch vụ (Telegram, Gmail, Google Sheets, GitHub...) kèm logic if/else, loop, transform dữ liệu — thứ mà Home Assistant automation thuần không kham nổi khi phức tạp lên.
  • Tự host miễn phí, chạy bao nhiêu workflow, bao nhiêu lần cũng không bị tính phí theo execution như bản cloud.
  • Nói chuyện trực tiếp với các dịch vụ khác đang chạy cùng NAS (Nextcloud, Home Assistant) qua mạng nội bộ — nhanh, dữ liệu không phải vòng ra internet rồi vòng lại.
  • Có sẵn AI Agent node, gắn được Claude, GPT-4o, Gemini vào workflow để làm automation "có não" ngay trên NAS nhà bạn.

Vài case thực tế cho dễ hình dung: nhà có kho ảnh điện thoại, n8n tự hút ảnh mới vào Nextcloud, resize, gắn tag, xong bắn thông báo qua Telegram báo "đã backup xong". Hoặc cảm biến cửa/nhiệt độ trong Home Assistant bắn webhook qua n8n, để n8n xử lý logic rắc rối (kiểu "nếu cửa mở quá 5 phút VÀ sau 11 giờ đêm thì mới báo") rồi mới gửi email/Telegram — thay vì nhồi hết logic đó vào YAML của HA cho rối mắt. Việc văn phòng nhỏ tại nhà cũng làm được: đồng bộ Google Sheet với dữ liệu từ form, tự tạo báo cáo định kỳ, nhắc việc.

So với Zapier hay Make — hai cái tên quen thuộc hơn — n8n tự host miễn phí và không giới hạn số lần chạy, đổi lại bạn phải tự lo phần hạ tầng. So với Node-RED, thứ dân Home Assistant hay dùng, n8n có giao diện hiện đại hơn và tích hợp sẵn nhiều dịch vụ SaaS hơn hẳn.

Sơ đồ luồng hoạt động của n8n từ sự kiện đến hành động tự động

Vì sao cài bằng Docker qua Container Manager, không Portainer, không VM

Trước khi vọc, cần nói rõ: n8n không có package DSM chính thức, cũng không nằm trong SynoCommunity. Docker là con đường thực tế duy nhất, không phải mình thích Docker cho vui.

Nhiều bài hướng dẫn (kiểu mariushosting) dạy cài thêm Portainer để quản container. Thật ra không cần — Container Manager, package có sẵn trong DSM từ bản 7.2, đã hỗ trợ đọc trực tiếp file docker-compose.yml qua mục Project. Thêm Portainer vào chỉ tổ rườm rà, chẳng giải quyết thêm vấn đề gì cho người dùng phổ thông.

Cũng đừng nghĩ đến Virtual Machine Manager. Chạy cả một hệ điều hành khách chỉ để host một ứng dụng Node.js là overkill — bạn phải cấp riêng CPU/RAM cho VM đó, trong khi một container chỉ ăn tài nguyên đúng phần n8n cần. Docker + Container Manager là lựa chọn cân bằng nhất giữa đơn giản và đủ dùng.

Về database: bài này dùng SQLite mặc định đi kèm sẵn trong image, không kéo thêm Postgres. Với nhu cầu cá nhân/gia đình SQLite đủ chạy mượt. Chỉ cần Postgres khi bạn chạy production với nhiều workflow nặng cùng lúc — lúc đó tính sau, đừng tự làm khó mình ngay từ đầu.

Tiêu chíContainer ManagerPortainerVM Manager
Có sẵn trong DSM
Đọc docker-compose.yml
Cần cài thêm gói
Tốn tài nguyên NASThấpThấpCao
Phù hợp người dùng phổ thông

Yêu cầu trước khi bắt đầu

Kiểm tra 3 thứ này trước, đỡ mất công làm nửa chừng rồi bỏ dở:

  • NAS phải là dòng x86_64 (dòng +/plus) và DSM 7.2 trở lên. Một số dòng ARM64 đời mới có hỗ trợ Container Manager, nhưng các dòng ARM cũ như DS223j, DS124 thì chịu — không cài Docker được, đừng cố.
  • RAM tối thiểu 2GB theo tài liệu chính thức, nhưng thực tế nên có 4GB trở lên để chạy mượt, 8GB nếu định dùng nhiều AI node.
  • Một domain hoặc Synology DDNS để cấu hình HTTPS sau này — n8n bắt buộc chạy qua HTTPS mới hoạt động đầy đủ (webhook, OAuth với các dịch vụ ngoài).

Bước 1: Cài Container Manager và tạo shared folder

Vào Package Center, tìm và cài Container Manager (tên cũ là Docker, DSM đổi tên từ bản 7.2).

Tiếp theo tạo shared folder qua Control Panel → Shared Folder → Create: đặt tên docker (nếu chưa có), bên trong tạo folder con n8n, rồi bên trong n8n tạo tiếp 2 folder: datafiles (folder files chỉ cần nếu bạn định xử lý file nhị phân qua workflow).

Đường dẫn cuối cùng sẽ là /volume1/docker/n8n/data/volume1/docker/n8n/files.

Container n8n chạy dưới user nội bộ tên node với UID 1000. Folder data phải cấp quyền đọc/ghi cho UID này, không thì container không viết được database vào trong — lỗi EACCES ở bước sau bắt nguồn từ đây. Vào File Station, chuột phải folder n8n → Properties → Permission, thêm quyền Read/Write cho user hoặc group tương ứng UID 1000 trên NAS của bạn.

Bước 2: Tạo Project trong Container Manager với docker-compose.yml

Mở Container Manager → Project → Create. Đặt tên project (ví dụ n8n), chọn đường dẫn /volume1/docker/n8n, và chọn kiểu docker-compose.yml. Dán nội dung sau vào:

version: "3.7"
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:1.xx.x
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.tenmien-cuaban.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.tenmien-cuaban.com/
      - GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
      - TZ=Asia/Ho_Chi_Minh
      - N8N_ENCRYPTION_KEY=chuoi-bi-mat-tu-tao-dung-doi
      - N8N_RUNNERS_ENABLED=true
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    volumes:
      - /volume1/docker/n8n/data:/home/node/.n8n
      - /volume1/docker/n8n/files:/files

Vài chỗ cần để ý:

  • Thay 1.xx.x bằng version cụ thể — kiểm tra bản mới nhất tại trang GitHub releases của n8n-io/n8n. Đừng dùng :latest: image update liên tục, dính bản có breaking change là workflow đang chạy ngon bỗng dưng gãy không hiểu vì sao.
  • N8N_HOST chỉ ghi tên domain thuần, không có https:// phía trước — ghi kèm là sai định dạng, n8n không khởi động đúng.
  • N8N_ENCRYPTION_KEY là chuỗi bạn tự bịa ra (random string đủ dài là được), nhưng một khi đã chạy với key này thì không được đổi. Đổi giữa chừng là toàn bộ credentials đã lưu (mật khẩu Nextcloud, token Home Assistant...) hết giải mã được.
  • Port 5678 map ra ở đây chỉ để bạn test nội bộ, không phải để mở thẳng ra internet — chuyện này nói kỹ hơn ở phần bảo mật dưới.

Bấm Next rồi Done để Container Manager build và chạy project. Đợi vài chục giây, kiểm tra tab Container thấy trạng thái container n8n chuyển sang Running là ổn.

Bước 3: Test nhanh trong mạng LAN

Trước khi đụng vào Reverse Proxy hay domain, mở trình duyệt trong mạng nhà, gõ http://<ip-nas>:5678. Thấy màn hình n8n hiện lên (dù báo thiếu HTTPS cũng không sao) tức là container đã chạy đúng, phần còn lại chỉ là cấu hình mạng. Bước này giúp bạn tách bạch được lỗi do container hay lỗi do Reverse Proxy — đỡ mất công đoán mò sau này.

Bước 4: Cấu hình Reverse Proxy và HTTPS

n8n cần chạy qua HTTPS thật sự để webhook và OAuth hoạt động đúng, nên không thể dừng ở bước LAN test. Vào Control Panel → Login Portal → Advanced → Reverse Proxy Server → Create.

  • Source: Protocol HTTPS, Hostname là domain của bạn (ví dụ n8n.tenmien-cuaban.com), Port 443.
  • Destination: Protocol HTTP, Hostname localhost, Port 5678.

Đây là chỗ dễ bỏ sót nhất trong cả bài: sau khi tạo rule, mở lại rule đó, vào tab Custom Header → Create, chọn sẵn mục WebSocket. Không bật cái này, giao diện n8n vẫn load được nhưng editor sẽ "đơ" — bấm chạy workflow xong không thấy log thực thi hiện real-time, cứ như app bị treo vậy. Rất nhiều người tưởng container lỗi, restart tới lui, thật ra chỉ thiếu đúng một dòng tick này.

Cũng đừng nhầm dùng Web Station để publish thay Reverse Proxy Server — Web Station không xử lý websocket tốt cho kiểu ứng dụng này, cùng một lỗi "đơ editor" sẽ lặp lại.

Trỏ domain về NAS qua Synology DDNS (nếu dùng domain riêng của Synology) hoặc trỏ A record domain riêng của bạn về IP public nhà. Sau đó vào Control Panel → Security → Certificate, thêm chứng chỉ Let's Encrypt cho domain đó, gán vào rule Reverse Proxy vừa tạo.

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

Mở https://n8n.tenmien-cuaban.com, lần đầu vào n8n sẽ yêu cầu tạo tài khoản owner (email, mật khẩu). Xong bước này là bạn có một n8n instance chạy hoàn chỉnh, sẵn sàng vẽ workflow.

Kết nối Nextcloud và Home Assistant

Đây là phần "đáng đồng tiền" nhất khi n8n chạy cùng NAS — vì mọi thứ đi qua mạng nội bộ, không phải vòng ra ngoài internet:

  • Nextcloud: tạo credential trong n8n dùng app password (Nextcloud → Settings → Security → tạo App Password riêng cho n8n) hoặc OAuth nếu Nextcloud của bạn đã bật. Đừng dùng chung mật khẩu tài khoản chính.
  • Home Assistant: vào HA → Profile → Long-Lived Access Token → tạo token riêng đặt tên rõ ràng kiểu "n8n-integration". Dùng token này cho node HTTP Request hoặc node Home Assistant có sẵn trong n8n để nhận webhook và gửi lệnh điều khiển.

Tạo token riêng cho từng dịch vụ, đừng dùng chung — sau này muốn thu hồi quyền của n8n mà không ảnh hưởng app khác thì chỉ cần revoke đúng token đó, khỏe re.

Lỗi thường gặp

LỗiNguyên nhânCách xử lý
EACCES permission deniedUID 1000 không có quyền ghi folder dataCấp quyền Read/Write UID 1000 qua File Station
Editor đơ, không thấy logThiếu Custom Header WebSocketBật WebSocket trong Reverse Proxy Rule
Webhook ngoài không nhận đượcWEBHOOK_URL sai hoặc chưa forward portKhớp đúng domain/port thật, forward port trên router
Mất workflow sau khi updateKhông mount volume ra ngoài containerLuôn bind mount /home/node/.n8n ra /volume1/docker/n8n/data
Không giải mã được credentialsN8N_ENCRYPTION_KEY bỏ trống hoặc bị đổiSet 1 giá trị cố định ngay từ đầu, không đổi sau này

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

Vài nguyên tắc nên nhớ nằm lòng:

  • Không bao giờ mở port 5678 thẳng ra internet qua NAT router — mọi truy cập từ ngoài phải đi qua Reverse Proxy HTTPS của DSM. Port 5678 chỉ dùng để test nội bộ.
  • Backup định kỳ folder /volume1/docker/n8n/data. Trong đó có encryption key và toàn bộ credentials đã mã hóa của mọi dịch vụ bạn từng kết nối. Mất folder này là mất sạch, làm lại từ đầu.
  • Lưu riêng giá trị N8N_ENCRYPTION_KEY vào một password manager, tách khỏi NAS. Lỡ ổ cứng chết phải cài lại toàn bộ, không có key này thì dữ liệu backup credentials cũng vô dụng — có ổ mà như không.

Cái ổ cứng nào rồi cũng có ngày trở chứng, backup xong thì mới yên tâm ngồi vẽ workflow tiếp được.

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