惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
腾讯CDC
L
LangChain Blog
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
量子位
Apple Machine Learning Research
Apple Machine Learning Research
Cloudbric
Cloudbric
B
Blog RSS Feed
B
Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
S
Schneier on Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
美团技术团队
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
T
Threatpost
A
Arctic Wolf
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
Recorded Future
Recorded Future
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
SecWiki News
SecWiki News
H
Hacker News: Front Page
AWS News Blog
AWS News Blog
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
C
Check Point Blog
L
Lohrmann on Cybersecurity
F
Full Disclosure
TaoSecurity Blog
TaoSecurity Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
Martin Fowler
Martin Fowler

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
How to build a budget, self-hosted video surveillance system on a Raspberry Pi
Xeoma Software · 2026-06-25 · via DEV Community

Video surveillance is no longer something reserved for the wealthy or for large corporations. In one form or another, a video surveillance system now turns up almost everywhere — in the smallest businesses, in ordinary (not just high-end) residential buildings, in car parks, even in the stairwells of apartment blocks. And the best part for anyone on a budget is that you can build one yourself, with no installer and no monthly cloud bill, using nothing more exotic than a tiny single-board computer.

This guide walks through building a low-cost, self-hosted video surveillance system on a Raspberry Pi: a setup where the recording and the analytics run on your own hardware, on your own network, and your footage never leaves your control. We'll use the Xeoma video surveillance software as the "brain", because it runs on ARM (and therefore on a Raspberry Pi) and offers a wide range of features — but the hardware approach applies to almost any VMS that supports Linux ARM.

Budget surveillance vs. free surveillance

It's worth separating two ideas that often get confused.

A budget video surveillance system is one you assemble cheaply, usually by doing the work yourself instead of paying an integrator — that alone is a significant saving. A free system is a different question (we cover whether video surveillance can be done entirely for free in a separate article).

You can push the budget down further with a "use what you already have" approach — repurposing a spare computer or laptop as the surveillance host. That has obvious upsides (almost nothing to buy) but also drawbacks: higher power draw from a full-size machine left running 24/7, and the risk that using the computer for everyday tasks interferes with the surveillance running on it. This guide takes the cleaner route: a small computer dedicated to the job, which is exactly what a Raspberry Pi is good for.

Why a Raspberry Pi — and why it doesn't have to be one

There's no hard requirement to use a Raspberry Pi specifically. Because the Xeoma video monitoring software runs on both Intel/AMD architectures and on ARM, you can pick whatever microcomputer (or mini PC) suits your needs. What the Raspberry Pi gives a beginner is popularity: more tutorials, more compatible software, more forums where someone has already solved your problem. It's silent, low-power, and capable enough for a modest camera setup, so it remains a sensible default.

The current flagship is the Raspberry Pi 5 (released October 2023):

  • Broadcom BCM2712 quad-core Arm Cortex-A76 @ 2.4 GHz (roughly 2–3× faster than the Pi 4)
  • RAM options from 1 GB up to 16 GB (LPDDR4X)
  • VideoCore VII GPU, dual micro-HDMI (up to 4Kp60), H.265 hardware decode
  • Gigabit Ethernet (PoE+ with an optional HAT), dual-band Wi-Fi 5, Bluetooth 5.0
  • 2× USB 3.0 and 2× USB 2.0 ports
  • PCIe 2.0 x1 — so you can add an M.2 NVMe SSD via a HAT, which is excellent for recording storage

A few practical notes that have changed recently and matter for a build:

  • Active cooling is expected. The Pi 5 runs best with a fan or an active-cooler case, especially under a constant surveillance load. A heat-dissipating metal case is an alternative, though it can slightly dampen Wi-Fi.
  • Power. The Pi 5 wants a proper 5V/5A (27 W) USB-C supply; an underpowered charger will cause instability.
  • The price caveat. Through late 2025 and into 2026 a global DRAM shortage pushed Raspberry Pi prices up significantly (the 16 GB Pi 5 climbed well past its original launch price). Raspberry Pi responded with a 1 GB Pi 5 at around $45, which is the budget entry point and is perfectly fine for a headless surveillance appliance. Still, with higher-RAM boards now pricier, a small mini PC (for example, an Intel N100 box) is a legitimate alternative — sometimes for similar money you get an x86 machine with more I/O. As Pi users themselves often point out: pay a little more and you're into mini-PC territory. Choose based on what you actually need.

If you want to go even smaller and cheaper, a Raspberry Pi Zero 2 W can work for a single light stream, and a Raspberry Pi 4 is still perfectly capable. Older boards like the Pi 3 are best avoided for this: limited real-world network throughput and no 64-bit comfort margin.

What you'll need

To build the system, gather:

  • A Raspberry Pi (Pi 4 or Pi 5 recommended) with a microSD card or, better, an SSD for the recording archive
  • One or more cameras — an IP camera is the most flexible choice, but a USB camera or the Pi camera module works too
  • A network: Ethernet (preferred for stability) or Wi-Fi
  • Peripherals for the initial setup: a monitor, keyboard and mouse (you can remove these later)
  • The video surveillance software that will act as the hub. Here that's Xeoma, chosen for its breadth of features — not just basic motion detection and GPIO/pin control, but AI-based analytics such as licence-plate recognition (ANPR), face recognition, and more unusual tools like emotion detection, colour search, crowd detection and parking-space monitoring

Think about cooling and storage up front: a fan or active-cooler case for the Pi, and enough fast storage (a USB SSD, an M.2 NVMe via HAT on the Pi 5, or a network share) for the footage you intend to keep.


Step 1 — Install the operating system

With the parts connected — storage, network, keyboard, mouse, monitor — install the OS. The logical choice is the vendor's own Raspberry Pi OS (formerly Raspbian), which is current and supported on every recent model. Note that the Pi 5 requires an up-to-date OS image; older Raspbian releases won't boot on it. Recent Raspberry Pi OS builds are based on Debian and ship as 64-bit.

The easiest method is Raspberry Pi Imager: download and run it on another computer, insert the microSD card (or SSD), and let it write the OS for you. It can also pre-configure Wi-Fi, hostname, SSH and user account before first boot — handy for a headless build.

Remember the architecture you install (32-bit or 64-bit). You'll need it later when downloading the surveillance software: a 32-bit OS takes the ARMv7 build, a 64-bit OS takes the ARMv8 build. On a Pi 4 or Pi 5 you'll normally run 64-bit, i.e. ARMv8.

You can install Raspberry Pi OS with or without a desktop, depending on how you plan to work. If you'll manage and view everything from the Pi itself, install the desktop. If the Pi will run as a quiet, headless server and you'll connect from another device — a phone, tablet or laptop — the Lite (no-desktop) image is leaner. Both routes are covered below.

Step 2 — Connect and verify your cameras

Before touching the surveillance software, connect your cameras and confirm they work, following each camera's own instructions. For an IP camera, the quick test is to type its IP address into a browser on the same network: if its web interface opens, the camera is reachable and you're ready to bring it into the VMS. USB and Pi-module cameras are detected directly by the host.

Step 3 — Install the video surveillance software (desktop version)

Prefer to watch? Here's a video guide to working with Xeoma on Linux:

(See headless below)

For Linux ARM the choice of full-featured surveillance programs is small, and it narrows further the more analytics you want — which is part of why Xeoma fits here. With a desktop installed, the steps are:

1. Download the program. On the Pi, open the Xeoma download page and choose the ARM tab (it's pre-selected if you visit from a Raspberry Pi). You'll see a couple of choices:

  • Beta vs. release. Usually they match. If the beta carries a higher version number, check the changelog — if it contains something you need, use it; otherwise take the more stable release build.
  • ARMv7 vs. ARMv8. This must match your OS architecture: ARMv7 for a 32-bit OS, ARMv8 for a 64-bit OS. Pick the wrong one and the program won't start.

The download is a .tgz archive containing a single xeoma.app file, which holds both the server and the client parts — you run whichever you need. (You can also download on another machine and copy it over on a USB stick.)

2. Extract it. Right-click the .tgz and choose "Extract here". The resulting xeoma.app behaves like any ordinary application.

3. Launch it. Double-click xeoma.app. Notably, it runs immediately — there's no separate installation step required just to open it; the interface appears after a couple of seconds while the program starts its components.

4. Read the welcome screen. On first launch Xeoma shows a welcome window with useful tips and direct links to features (such as installation). It's worth reading; you can reopen the tips later via the "!" icon in the lower right.

Working with the software: cameras and module chains

After the welcome screen you're in the main interface. On first start the program automatically searches your local network for cameras, so found devices may already be on screen — USB cameras and the Pi camera module are detected first. A progress bar appears at the lower right; stop it once your cameras have been added. If the search finishes and nothing was added, open the add-camera menu (the + icon on the bottom panel) and look there — cameras protected by a login only appear once you enter their credentials.

Features in Xeoma are mostly represented as modules — icons connected by a line, an arrangement called a chain. Open "Detailed settings" (the gear icon) to see the chain configured for a given camera. Read a chain left to right: the first module is the source (the image), the stream flows rightward through subsequent modules, and usually ends in destination modules. Filter modules in between sift the stream. For example, the Motion Detector (added by default in many Xeoma editions) checks whether there's motion that meets your criteria; if yes, the stream passes further down the chain — to other filters or to response modules; if not, it's filtered out and never reaches the modules on the right.

The Motion Detector isn't mandatory — you can remove it or swap it for other filters. Some features aren't modules at all but menu options (PTZ control, or access rights for cameras and functions, for instance); those are documented in the user manual.

Editions and activation

Xeoma has several editions — modes with different feature sets: Free and Trial (both free), plus Lite, Standard and Pro (paid).

  • The Free edition is genuinely free and ad-free, but with one key limitation: no remote connection. It can only run on the same computer it's installed on — which also means it needs a desktop (it can't be used on a headless OS). If you installed the desktop, you can run the Free edition here, but you'll only review footage on the Pi itself; you do still get motion-detection notifications, a simple but genuinely useful free feature set.
  • The paid editions add remote access, more cameras and more analytics. Pricing is published openly on the site; as a rough guide it starts around $15 per camera for a perpetual Lite licence, with Standard available in the $9-$33 per camera range, and Pro - in the $28-$99 per camera range (monthly rent is also an option for Standard and Pro). Even at the low end, this stays a genuinely budget system. (Check the current price list, as editions and prices change.)

Don't leave the program in the Trial edition. Trial is for testing only: settings reset after a short period with no way to save them, so you'd be reconfiguring from scratch each time. For permanent use, switch to Free or activate a paid licence.

To switch to Free: Main menu → Registration → Switch to another version → Switch to the free version. To activate a purchased licence: Main menu → Registration → Activate (your licence email includes instructions). Without a licence the program defaults to Trial each time it starts.

Autostart: install it as a service

When you first opened the program, no installation was needed. But if the Pi is going to run unattended, you'll want the surveillance software to start automatically with the system, so it comes back up after a reboot or power cut. Do this via Main menu → Install → Install. For this kind of appliance it's best to install the server part only as the autostart service, and launch the client manually (from the desktop shortcut) when you want to look at cameras.

Remote access

Viewing your cameras and recordings remotely, changing settings and exporting clips is available on the paid editions (not on Free).

Xeoma offers free mobile apps for Android and iPhone/iPad — search the official app stores for "Xeoma". You can also connect from another computer: just download the Xeoma program there (remember the single download contains both client and server, so it works as a client too). Limited viewing and control is also possible through a browser, though connecting via the program is the primary method.

A little theory: remote access normally requires the server — here, the Raspberry Pi — to have a public ("white") static IP address. If you don't know whether you have one, you almost certainly don't (it's a paid extra from most ISPs). The good news is that Xeoma includes its own substitute: a free P2P (peer-to-peer) connection that stands in for a public IP and lets a remote client connect without the hassle — but only within Xeoma.

So, to set up remote access:

  1. On the Pi, get the connection details from Xeoma:
    • Main menu → Remote access → P2P connection gives you a P2P address and password; or
    • Main menu → Remote access → Connect to a remote server shows the Xeoma password (don't copy the address here — it's the internal/"grey" one; for a public-IP setup you supply the white IP yourself, and forward Xeoma's port 8090 on the server-side router).
  2. Install and launch Xeoma on the remote device.
  3. On iPhone/iPad, enter the details from step 1 directly. On Android, enter them in the connection dialog (open it via Main menu → Remote access → Connect to a remote server if it didn't appear automatically).

Browser access doesn't use P2P (yet) and needs an extra port forwarded plus some additional setup on the Pi; see the site if you need that route.


Doing it headless (no desktop)

A budget self-hosted system based on Xeoma also runs happily on a server OS with no desktop. You do the base setup from the console, then connect a client — the mobile app or the program on another computer, on the same network or over the internet — to manage cameras and settings.

1. Download the program with wget. Xeoma isn't in the package manager, so fetch it directly. Pick the build that matches your OS architecture:

# 32-bit OS (ARMv7):
wget https://felenasoft.com/xeoma/downloads/latest/linux/xeoma_linux_arm7.tgz

# 64-bit OS (ARMv8) — typical for Pi 4 / Pi 5:
wget https://felenasoft.com/xeoma/downloads/latest/linux/xeoma_linux_arm8.tgz

(Use the release build unless the beta has a change you need. The wrong architecture won't start.)

2. Extract it:

tar -xvf xeoma_linux_arm8.tgz      # or xeoma_linux_arm7.tgz

Inside is xeoma.app, containing both server and client — here you only need the server, since the client requires a desktop.

3. Run, or (recommended) install the server. You can start the server part directly:

./xeoma.app -core

Or install it, which also opens the Xeoma port you'll need for connecting and configuring (requires admin rights):

sudo ./xeoma.app -install -coreauto

On a successful install the Xeoma password is printed at the end. You can show it again later with -showpassword.

4. Switch the edition / activate. From the console you can also set the edition. As noted above, the Free editions don't work headless, so you'll need one of the paid licences. Activate with -activateOnline (if the Pi has internet) or -activateRequest (if it doesn't; see the offline-activation guide for details).

5. Do the rest from a second device with a screen. Connecting cameras and configuring features needs a client with a GUI — a computer, phone or tablet on the same network or remote. Call it "device #2":

  • On the Pi, run ifconfig (or check another way) to find its internal ("grey") IP address.
  • Take the Xeoma password from step 3.
  • On device #2, download Xeoma for that device's OS and launch it.
  • Go to Main menu → Remote access → Connect to a remote server and enter the Pi's IP and the Xeoma password.
  • Once connected, you can add cameras, build chains, install/autostart and activate exactly as in the desktop section.

Conclusion

That's essentially everything needed to stand up a budget, self-hosted video surveillance system on a Raspberry Pi with the Xeoma platform. If you already own a Pi — or are about to buy one — this approach is well worth trying. And remember it doesn't have to be a Raspberry Pi at all: the same software runs on other microcomputers, on mini PCs and on regular Linux machines, so you can match the hardware to your budget and your camera count. The result is a private, low-power IP-camera system that records and analyses on your own terms, with no forced cloud and no recurring fees — surveillance you genuinely own.

------------------LINKS BELOW------------------
Xeoma video surveillance software
Raspberry Pi-based home automation
Other Rpi information