This application is currently in beta testing. It may contain bugs and its features are subject to change. All feedback and suggestions are welcome!
Hikvision Manager is a Spring Boot application designed to manage Hikvision Cameras, execute backup jobs, store backup history, and provide a UI for browsing and downloading recordings. It integrates with Hikvision ISAPI endpoints, schedules recording backups, stores metadata in PostgreSQL, and exposes a management dashboard. Also provides HTTP Live Streaming by HLS and FFmpeg.
- Real-time RTSP stream viewing via HLS (HTTP Live Streaming)
- Channel switching (Main stream 101, Sub stream 102)
- Automatic session cleanup
- No transcoding (camera must provide H.264/H.265)
- Browse and search camera recordings
- Batch download multiple recordings
- Real-time download progress tracking with speed and ETA
- Download status monitoring (queued, downloading, completed, failed)
- Automatic file management and cleanup
- Automated scheduled backups
- Manual on-demand backups
- Live backup progress tracking
- Detailed logs for every backup
- Retention and cleanup policies
- Backup history with statistics
Hikvision Manager supports multiple notification providers for backup alerts:
- NTFY - Self-hosted or public push notifications
- Discord - Embedded messages in Discord channels
- Generic Webhook - Integration with Zapier, n8n, Make.com, or custom APIs
- Camera restart functionality
- System information display (model, firmware, serial number)
- Real-time status monitoring (uptime, temperature, CPU, memory)
- Storage information (HDD capacity, free space, usage percentage)
- Time and network settings access
- Backend: Spring Boot 3.5.7, Java 24
- Cache: Caffeine
- Database: PostgreSQL 16
- Frontend: Thymeleaf, Bootstrap 5.3, JavaScript
- Streaming: FFmpeg, HLS.js
- Build Tool: Maven
- ISAPI Integration: Direct communication with Hikvision camera API
- HLS Streaming: FFmpeg-based RTSP to HLS conversion
- Scheduled Tasks: Automated backups and cleanup
- Flyway automatic database migrations
You can run the application either locally without Docker or via Docker Compose (recommended).
- JDK 24
- Maven
- PostgreSQL 16 installed locally
- FFmpeg installed locally
- Clone the repository
git clone https://github.com/kCn3333/hikvision-manager.git
cd hikvision-manager- Make sure, you have a PostgreSQL installed
# Ubuntu/Debian
sudo apt install postgresql-16
- Create Database
CREATE DATABASE camera_db;
CREATE USER postgres WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE camera_db TO postgres;- Make sure, you have a FFmpeg installed
# Ubuntu/Debian
sudo apt install ffmpeg- Configure environment variables
cp .env.example .env
# Edit .env with your camera credentials and settings- Start with Maven
mvn clean spring-boot:run- Access the application
http://localhost:8081
- Clone the repository
git clone https://github.com/kCn3333/hikvision-manager.git
cd hikvision-manager- Configure environment variables
cp .env.example .env
# Edit .env with your camera credentials and settings- Start services
docker compose --env-file .env up -d- Access the application
http://localhost:8081
logs:
docker logs -f hikvision-managerCreate a .env file in the project root:
# --- Credentials ---
ADMIN_USERNAME=admin
ADMIN_PASSWORD={noop}your-secure-password
# --- Database ---
DB_PASSWORD=changeme
# --- Camera ---
CAMERA_IP=192.168.X.X
CAMERA_PORT=80
CAMERA_USERNAME=admin
CAMERA_PASSWORD=password
CAMERA_RTSP_PORT=554
TIMEZONE=UTCA prebuilt Docker image is available here: https://hub.docker.com/r/kcn333/hikvision-manager
Pull the image directly without cloning the repository:
docker pull kcn333/hikvision-manager:latest
docker run \
-p 8081:8081 \
--env-file .env \
kcn333/hikvision-manager:latestBy default, the application runs in HTTP mode. To enable HTTPS:
Use Nginx/Traefik for SSL termination:
- Set
HTTPS_ONLY=truein.env - Configure your reverse proxy (see
nginx-reverse-proxy.conf.example) - Proxy requests to
http://localhost:8081
The application will automatically:
- Set secure cookies
- Enforce HTTPS for all requests
- Set proper CORS headers
Ensure your Hikvision camera has:
- ISAPI enabled (usually enabled by default)
- HTTP authentication set to Digest
- RTSP enabled on port 554
Tested with:
- DS-2CD2xxx series
- DS-2DE series
hikvision-manager/
βββ src/main/
β βββ java/com/kcn/hikvision-manager/
β β βββ client/ # HTTP client for Hikvision ISAPI
β β βββ config/ # Spring configuration classes
β β βββ controller/ # REST and MVC controllers
β β βββ domain/ # Domain models
β β βββ dto/ # API request/response DTOs
β β βββ entity/ # JPA entities mapped to PostgreSQL
β β βββ events/ # Domain events
β β βββ exception/ # Custom exceptions + global handler
β β βββ mapper/ # Mappers
β β βββ repository/ # Repositories for DB and Cache access
β β βββ service/ # Business logic and device operations
β β βββ scheduler/ # Scheduled backup jobs
β β βββ util/ # Utility classes
β βββ resources/
β βββ db/migration/ # Flyway scripts
β βββ static/
β β βββ css/ # CSS style
β β βββ js/ # Java Script
β βββ templates/ # Thymeleaf HTML templates
β βββ application.properties
βββ Dockerfile
βββ docker-compose.yml
βββ README.md # this file
- Always change default PostgreSQL and camera passwords
- Consider running behind reverse proxy (nginx, caddy)
- Enable HTTPS for production deployment
- Use VPN for remote access
- Restrict camera access to local network only
- Consider using VLANs to isolate camera network
This project is licensed under the MIT License - see the LICENSE file for details.
