Hướng dẫn thiết lập camera Raspberry Pi với Shinobi giám sát 24/7
Hướng dẫn này sẽ đưa bạn qua các bước thiết lập camera Raspberry Pi với phần mềm CCTV mã nguồn mở Shinobi. Chúng tôi sẽ đề cập đến các vấn đề phần cứng, mạng và hiệu suất thường gặp để tạo ra một giải pháp giám sát ổn định, hoạt động ngay cả trên các thiết bị có tài nguyên hạn chế như Raspberry Pi 2.
Mục tiêu
Thiết lập một hệ thống giám sát CCTV tin cậy và hiệu quả, có khả năng hoạt động 24/7 với chi phí thấp.
Các yêu cầu cần thiết
Phần cứng
- Raspberry Pi: Đã thử nghiệm trên Pi 2.
- Camera: Module camera CSI tương thích (OV5647).
- Nguồn điện: Cung cấp nguồn ổn định.
- Thẻ SD: Tối thiểu 32GB.
Phần mềm
- Hệ điều hành: Cài đặt Raspberry Pi OS mới.
- Khách hàng SSH: Sử dụng để kết nối từ xa.
- Mạng: Kiến thức cơ bản về cấu hình router và truy cập mạng cục bộ.
Bước 1: Cài đặt cơ bản Raspberry Pi
Cấu hình cơ bản
- Flash Raspberry Pi OS: Sử dụng Raspberry Pi Imager để cài đặt Raspberry Pi OS Lite (không có giao diện đồ họa) hoặc có Desktop.
- Bật SSH: Trong quá trình ghi hình, bật SSH trong tùy chọn nâng cao hoặc bật sau khi khởi động bằng
sudo raspi-config
. - Khởi động lần đầu: Kết nối qua SSH và cập nhật hệ thống:
sudo apt-get update && sudo apt-get upgrade -y
Xác minh phần cứng camera
Trước khi cài đặt bất kỳ thứ gì, hãy xác minh camera hoạt động:
bash
libcamera-hello -t 2000
Bạn sẽ thấy một bản xem trước 2 giây (trên màn hình kết nối) hoặc lệnh hoàn tất mà không có lỗi "camera not found". Nếu không thành công, kiểm tra kết nối cáp ribbon - mọi thứ khác phụ thuộc vào điều này.
Bước 2: Cài đặt Shinobi
Chạy Trình cài đặt chính thức
- Chuyển sang root và chạy trình cài đặt:
sudo su sh <(curl -s https://cdn.shinobi.video/installers/shinobi-install.sh)
- Chọn "Ubuntu Touchless" khi được yêu cầu - điều này hoạt động tốt nhất cho các cài đặt Raspberry Pi.
- Giải quyết vấn đề IPv6: Nếu được hỏi về việc tắt IPv6, chọn "Yes" để tránh các vấn đề kết nối trong quá trình cài đặt.
Cấu hình mạng quan trọng
Phần này thường bị bỏ qua: Shinobi chỉ liên kết với IPv6 theo mặc định, làm cho nó không thể truy cập từ các thiết bị khác trên mạng của bạn.
- Chỉnh sửa tệp cấu hình:
sudo nano /home/Shinobi/conf.json
- Thêm tham số IP (không phải "host") ở đầu JSON:
json
{ "ip": "192.168.20.15", "port": 8080, ...
192.168.20.15
bằng địa chỉ IP thực tế của Pi của bạn. - Khởi động lại Shinobi:
sudo pm2 restart camera
- Xác minh hoạt động:
sudo netstat -tlnp | grep :8080
tcp
vàtcp6
, không chỉtcp6
.
Thiết lập ban đầu Shinobi
- Truy cập bảng điều khiển superuser: Mở
http://YOUR_PI_IP:8080/super
trong trình duyệt của bạn. - Thông tin đăng nhập mặc định:
- Tên người dùng:
admin@shinobi.video
- Mật khẩu:
admin
- Tên người dùng:
- Tạo tài khoản quản trị viên thông qua bảng điều khiển superuser.
- Đăng nhập vào giao diện chính: Truy cập
http://YOUR_PI_IP:8080
(không có/super
) bằng thông tin đăng nhập mới của bạn. - Thay đổi thông tin đăng nhập superuser ngay lập tức trong tab Tùy chọn để bảo mật.
Bước 3: Dòng phát camera
Tạo một luồng video đáng tin cậy mà Shinobi có thể kết nối.
Cài đặt các gói cần thiết
bash
sudo apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad netcat-openbsd
Tạo script phát
- Tạo tệp script:
nano /home/first/streamscript
- Thêm pipeline này (tối ưu cho độ tin cậy hơn là chất lượng):
bash
#!/bin/bash # Luồng MJPEG đáng tin cậy sử dụng mã hóa phần mềm # Mã hóa phần cứng không khả dụng trên các mô hình Pi cũ BOUNDARY="--boundary" PIPELINE="gst-launch-1.0 -q libcamerasrc ! video/x-raw,width=320,height=240,framerate=10/1 ! jpegenc ! multipartmux boundary=${BOUNDARY} ! filesink location=/dev/stdout" while true; do { echo -e "HTTP/1.0 200 OK\r\nContent-Type: multipart/x-mixed-replace; boundary=${BOUNDARY}\r\n"; ${PIPELINE}; } | nc -l -p 8090 done
- Làm cho script có thể thực thi:
chmod +x /home/first/streamscript
Bước 4: Thiết lập dịch vụ nền
Thiết lập khởi động tự động và phục hồi khi gặp sự cố bằng cách sử dụng dịch vụ người dùng systemd.
Tạo dịch vụ
- Tạo thư mục dịch vụ:
mkdir -p ~/.config/systemd/user/
- Tạo tệp dịch vụ:
nano ~/.config/systemd/user/shinobi-stream.service
- Thêm cấu hình dịch vụ:
ini
[Unit] Description=Shinobi Camera Streamer Wants=graphical-session.target After=graphical-session.target [Service] ExecStart=/home/first/streamscript Restart=always RestartSec=5 [Install] WantedBy=default.target
Kích hoạt và bắt đầu
Chạy các lệnh này không có sudo (quan trọng cho dịch vụ người dùng):
bash
systemctl --user daemon-reload
systemctl --user enable shinobi-stream.service
systemctl --user start shinobi-stream.service
Kích hoạt tự động khởi động khi khởi động
Bước quan trọng này giúp dịch vụ khởi động ngay cả khi bạn không đăng nhập:
bash
sudo loginctl enable-linger first
Khởi động lại Pi của bạn để kiểm tra xem mọi thứ có khởi động đúng không.
Bước 5: Cấu hình giám sát Shinobi
Kết nối Shinobi với luồng camera của bạn.
- Thêm giám sát mới: Nhấp vào biểu tượng
+
trong bảng điều khiển Shinobi. - Cài đặt kết nối:
- Loại đầu vào:
MJPEG
- Địa chỉ URL đầy đủ:
http://127.0.0.1:8090
- Loại đầu vào:
- Cài đặt luồng:
- Tốc độ khung hình:
10
- Chiều rộng:
320
- Chiều cao:
240
- Tốc độ khung hình:
- Lưu và kiểm tra: Bạn nên thấy video trực tiếp ngay lập tức.
Bước 6: Tinh chỉnh hiệu suất
Phần cứng hạn chế tài nguyên yêu cầu sự cân bằng cẩn thận giữa chất lượng và hiệu suất.
Hiểu các giới hạn
Các mô hình Raspberry Pi cũ không có bộ mã hóa video phần cứng mà GStreamer có thể truy cập. Mọi thứ đều chạy trên CPU, vì vậy việc tối ưu hóa là rất quan trọng.
Tinh chỉnh tham số
Điều chỉnh biến PIPELINE
trong /home/first/streamscript
:
Để có hiệu suất tốt hơn (giảm mức sử dụng CPU):
bash
PIPELINE="gst-launch-1.0 -q libcamerasrc ! video/x-raw,width=160,height=120,framerate=5/1 ! jpegenc quality=50 ! multipartmux boundary=${BOUNDARY} ! filesink location=/dev/stdout"
Để có chất lượng tốt hơn (tăng mức sử dụng CPU):
bash
PIPELINE="gst-launch-1.0 -q libcamerasrc ! video/x-raw,width=640,height=480,framerate=15/1 ! jpegenc quality=90 ! multipartmux boundary=${BOUNDARY} ! filesink location=/dev/stdout"
Theo dõi mức sử dụng CPU bằng htop
và điều chỉnh tương ứng.
Khắc phục sự cố các vấn đề thường gặp
"Không thể truy cập từ các thiết bị khác"
Điều này thường là vấn đề liên kết IPv4/IPv6:
- Kiểm tra Shinobi đang lắng nghe trên gì:
sudo netstat -tlnp | grep :8080
- Nếu bạn chỉ thấy
tcp6
, hãy kiểm tra cấu hình của bạn:sudo grep -A3 -B3 '"ip"' /home/Shinobi/conf.json
- Đảm bảo bạn đã sử dụng tham số
"ip"
chứ không phải"host"
.
"Luồng không khởi động"
- Kiểm tra trạng thái dịch vụ:
systemctl --user status shinobi-stream.service
- Xem nhật ký dịch vụ:
journalctl --user -u shinobi-stream.service -f
- Kiểm tra camera trực tiếp:
libcamera-hello -t 2000
"Mức sử dụng CPU cao"
- Giảm độ phân giải và tốc độ khung hình trong script phát của bạn.
- Giảm chất lượng JPEG bằng cách thêm
quality=50
vàojpegenc
. - Kiểm tra xem có nhiều luồng đang chạy ngẫu nhiên không.
Các vấn đề về bảo mật
Bảo mật mạng
- Thay đổi thông tin đăng nhập mặc định của Shinobi ngay sau khi thiết lập.
- Không mở cổng 8080 cho internet thông qua chuyển tiếp cổng router.
- Sử dụng mật khẩu mạnh cho tất cả các tài khoản.
- Xem xét quy tắc tường lửa để giới hạn truy cập cho các khoảng IP cụ thể:
sudo ufw allow from 192.168.0.0/16 to any port 8080
Bảo mật hệ thống
- Thay đổi mật khẩu Pi mặc định nếu bạn chưa làm điều này.
- Giữ hệ thống được cập nhật bằng cách thường xuyên chạy
sudo apt update && sudo apt upgrade
. - Theo dõi nhật ký truy cập trong bảng điều khiển quản trị Shinobi.
Ghi chú cuối
Cài đặt này ưu tiên độ tin cậy hơn là các tính năng phức tạp. Bạn sẽ có một giải pháp giám sát ổn định, hoạt động 24/7 ngay cả trên phần cứng cũ. Những điểm chính giúp điều này hoạt động:
- Sử dụng mã hóa phần mềm - không có bộ mã hóa phần cứng đáng tin cậy.
- Khắc phục vấn đề liên kết IPv4 - sử dụng tham số
"ip"
, không phải"host"
. - Thiết lập dịch vụ systemd hợp lý - đảm bảo phục hồi tự động.
- Cài đặt hiệu suất bảo thủ - ngăn chặn sự cố dưới tải.
Khi bạn đã có thiết lập cơ bản này hoạt động đáng tin cậy, bạn có thể thử nghiệm với độ phân giải cao hơn, nhiều camera hoặc các tính năng nâng cao của Shinobi.