Hướng dẫn cài FFmeg lên VPS N8N Tino tự động

Bài viết này hướng dẫn cách cài FFmpeg cho VPS TinoGroup đã được cài sẵn n8n Docker template.

Mặc định template n8n trên VPS TinoGroup sử dụng thư mục:

/opt/n8n

Sau khi cài FFmpeg, bạn có thể dùng n8n để xử lý video/audio, ví dụ:

  • Tách audio từ video.
  • Chuyển đổi định dạng video.
  • Kiểm tra thông tin file media.
  • Kết hợp n8n với AI để tự động hóa xử lý nội dung.

1. FFmpeg dùng để làm gì trong n8n?

FFmpeg là công cụ xử lý video/audio phổ biến.

Trong n8n, FFmpeg có thể dùng cho các workflow như:

Video đầu vào → Tách audio → Gửi qua AI xử lý → Xuất kết quả

Hoặc:

Tải video → Chuyển định dạng → Upload lên nền tảng khác

Vì n8n trên VPS TinoGroup chạy bằng Docker, nên chỉ cài FFmpeg trên hệ điều hành VPS là chưa đủ. FFmpeg cần có bên trong container n8n thì workflow mới gọi được lệnh xử lý video/audio.

2. SSH vào VPS

Trước tiên, SSH vào VPS đang chạy n8n.

Cú pháp SSH cơ bản:

ssh root@IP_VPS

Ví dụ:

ssh root@123.123.123.123

Nếu VPS dùng port SSH khác 22, dùng lệnh:

ssh root@IP_VPS -p PORT

Ví dụ:

ssh root@123.123.123.123 -p 2222

Sau khi đăng nhập thành công, màn hình terminal thường có dạng:

root@your-vps:~#

3. Chạy lệnh cài FFmpeg tự động

Chạy nhanh bằng một dòng lệnh duy nhất:

curl -fsSL https://trankhacblog.io.vn/install-n8n-ffmpeg-auto.sh | bash

Mặc định script sẽ tạo thư mục chứa file tại:

/opt/n8n/files

Thư mục này sẽ được mount vào container n8n với đường dẫn cố định /files. Nghĩa là:

  • Trên VPS host: /opt/n8n/files/video.mp4
  • Bên trong container n8n: /files/video.mp4

Nếu muốn dùng thư mục khác trên VPS, ví dụ /data/n8n-media, thì chạy script như sau:

cd /root
curl -fsSL https://trankhacblog.io.vn/install-n8n-ffmpeg-auto.sh -o install-n8n-ffmpeg-auto.sh
chmod +x install-n8n-ffmpeg-auto.sh
N8N_FILES_DIR=/data/n8n-media ./install-n8n-ffmpeg-auto.sh

Quy ước này giúp workflow n8n dễ dùng hơn: dù bạn chọn thư mục nào trên VPS, trong n8n vẫn luôn dùng /files.

4. Script sẽ tự làm những gì?

Script sẽ tự động xử lý các bước chính:

  1. Kiểm tra thư mục n8n tại /opt/n8n.
  2. Kiểm tra file docker-compose.yml.
  3. Backup file docker-compose.yml hiện tại.
  4. Tạo Dockerfile custom.
  5. Build image n8n mới có FFmpeg và FFprobe.
  6. Đổi image cho container n8n và n8n-worker.
  7. Tạo thư mục chứa file media trên VPS.
  8. Mount thư mục media vào container n8n thành /files.
  9. Khởi động lại container n8n.
  10. Kiểm tra FFmpeg/FFprobe và mount /files trong container.

Trong quá trình chạy, bạn có thể thấy log tương tự:

Base image phat hien
Custom image se dung: n8n-ffmpeg:latest
Da backup compose
Build custom image
Recreate n8n va n8n-worker
Kiem tra ffmpeg trong n8n main
Kiem tra mount /files trong n8n main
Hoan tat

Nếu script không dừng giữa chừng và kiểm tra FFmpeg có version, nghĩa là cài đặt thành công.

5. Kiểm tra FFmpeg đã cài thành công chưa

Sau khi script chạy xong, vào thư mục n8n và chạy lệnh kiểm tra:

cd /opt/n8n
docker exec n8n-n8n-1 ffmpeg -version

Nếu kết quả trả về version, ví dụ:

ffmpeg version 6.1.2

Nghĩa là FFmpeg đã được cài thành công trong container n8n.

6. Upload video demo lên VPS

Nếu dùng thư mục mặc định, upload video vào /opt/n8n/files. Kiểm tra file trên VPS:

ls -lh /opt/n8n/files/video.mp4

Nếu file video có tên chứa khoảng trắng, nên đổi về tên đơn giản để tránh lỗi:

cd /opt/n8n/files
mv "2025-04-29 12-31-59.mp4" video.mp4

Nếu dùng thư mục tùy chỉnh, ví dụ /data/n8n-media, upload video vào đó — nhưng trong container n8n vẫn truy cập bằng đường dẫn /files/video.mp4.

7. Demo chuyển video sang audio trong SSH node của n8n

Trong workflow n8n, dùng SSH node để SSH vào chính VPS và chạy command.

Cấu hình node SSH:

  • Resource: Command
  • Operation: Execute
  • Working Directory: /opt/n8n

Command:

docker compose exec -T n8n ffmpeg -y -i /files/video.mp4 /files/audio.mp3 && ls -lh files/audio.mp3

Nếu node trả về code: 0 và trong output có dòng tương tự bên dưới, nghĩa là đã chuyển video sang audio thành công:

-rw-r--r-- 1 root root 3.4K files/audio.mp3

Nếu dùng thư mục tùy chỉnh /data/n8n-media, trong SSH node để Working Directory là /data/n8n-media và dùng command:

docker exec n8n-n8n-1 ffmpeg -y -i /files/video.mp4 /files/audio.mp3 && ls -lh audio.mp3

8. Một số lỗi thường gặp

Lỗi: No such file or directory

Error opening input file /files/video.mp4
No such file or directory

Nguyên nhân thường là chưa upload video đúng thư mục hoặc mount /files chưa hoạt động. Kiểm tra:

ls -lh /opt/n8n/files/video.mp4
cd /opt/n8n
docker compose exec -T n8n ls -lh /files/video.mp4

Nếu không thấy file trong container, chạy lại script cài FFmpeg để kiểm tra mount /files.

Lỗi: File already exists. Overwrite?

File '/files/audio.mp3' already exists. Overwrite? [y/N] Not overwriting - exiting

Nguyên nhân là file output đã tồn tại. Thêm -y vào lệnh FFmpeg để tự ghi đè — command mẫu ở trên đã có sẵn -y.

Lỗi do tên file có khoảng trắng

Nếu file có tên chứa khoảng trắng như 2025-04-29 12-31-59.mp4, FFmpeg hoặc Docker có thể hiểu sai đường dẫn. Nên đổi tên file đơn giản hơn:

mv "2025-04-29 12-31-59.mp4" video.mp4

9. Lưu ý bảo mật

FFmpeg rất hữu ích khi làm automation video/audio, nhưng khi dùng SSH node hoặc các node có khả năng chạy command trong n8n, cần lưu ý:

  • Không chạy workflow không rõ nguồn gốc.
  • Không chia sẻ tài khoản n8n cho người không tin cậy.
  • Không chạy lệnh xóa/sửa hệ thống nếu chưa hiểu rõ.
  • Nên kiểm tra lệnh trước khi đưa vào workflow thật.

Với VPS production hoặc có dữ liệu quan trọng, nên backup trước khi thao tác.

10. Tổng kết

Với VPS TinoGroup đã cài sẵn n8n tại /opt/n8n, cài FFmpeg tự động bằng lệnh:

curl -fsSL https://trankhacblog.io.vn/install-n8n-ffmpeg-auto.sh | bash

Nếu muốn dùng thư mục media riêng:

N8N_FILES_DIR=/data/n8n-media ./install-n8n-ffmpeg-auto.sh

Sau đó upload video vào thư mục media và chạy trong SSH node n8n:

docker compose exec -T n8n ffmpeg -y -i /files/video.mp4 /files/audio.mp3 && ls -lh files/audio.mp3

Nếu file audio.mp3 được tạo, nghĩa là FFmpeg đã hoạt động tốt với n8n.

TK
admin

Viết về những gì tự tay làm trên VPS — AI cục bộ, Docker và tự động hoá. Xem tất cả bài viết →