https://github.com/pascalallen/rpi-security-cam
Live camera streaming on a Raspberry Pi, served over HTTP in Go.
https://github.com/pascalallen/rpi-security-cam
camera docker go golang gstreamer http-server libcamera mjpeg raspberry-pi security-camera streaming
Last synced: 12 days ago
JSON representation
Live camera streaming on a Raspberry Pi, served over HTTP in Go.
- Host: GitHub
- URL: https://github.com/pascalallen/rpi-security-cam
- Owner: pascalallen
- Created: 2026-05-22T13:17:54.000Z (29 days ago)
- Default Branch: main
- Last Pushed: 2026-05-22T14:40:03.000Z (29 days ago)
- Last Synced: 2026-05-22T19:01:23.446Z (29 days ago)
- Topics: camera, docker, go, golang, gstreamer, http-server, libcamera, mjpeg, raspberry-pi, security-camera, streaming
- Language: Go
- Homepage:
- Size: 6.73 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rpi-security-cam
Live camera streaming on a Raspberry Pi, served over HTTP in Go.
## Device

## Demo

## Features
- MJPEG stream via GStreamer + libcamera
- Fan-out hub — multiple viewers share one camera pipeline
- Embedded web viewer
- Docker Compose with device passthrough
## Prerequisites
- [Docker](https://www.docker.com/)
- [Docker Compose](https://docs.docker.com/compose/)
- Raspberry Pi with camera module (libcamera compatible)
## Usage
### Clone Repository
```bash
cd && git clone https://github.com/pascalallen/rpi-security-cam.git
```
### Bring Up Environment
```bash
docker compose up -d --build
```
You will find the stream viewer running at [http://localhost:8080/](http://localhost:8080/)
### Take Down Environment
```bash
docker compose down
```
## Testing
Run tests and create coverage profile:
```bash
go test ./... -covermode=count -coverprofile=coverage.out
```
Generate HTML file to view test coverage profile:
```bash
go tool cover -html=coverage.out -o coverage.html
```
## Contributing
Pull requests are welcome. For major changes, please open an issue first
to discuss what you would like to change.
Please make sure to update tests as appropriate.
## License
[MIT](LICENSE)