agent: Continuous recording: panic: runtime error: invalid memory address or nil pointer dereference
Hello,
I am trying enable “Continuous recording” but no success. Every time I enable container crash. I am using docker +docker compose instead of kubernetes.
docker-compose.yml
version: '3'
services:
kerberos-agent:
image: 'kerberos/agent-dev:arch-amd64-a67c84a'
restart: always
container_name: 'kerberos-camera1'
hostname: 'kerberos-camera1'
ports:
- '8080'
volumes:
- "./agent/config:/home/agent/data/config"
- "./agent/recordings:/home/agent/data/recordings"
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.kerberos-camera1.rule=Host(`kerberos-camera1.domain.tld`)'
- 'traefik.http.routers.kerberos-camera1.entrypoints=websecure'
- 'traefik.http.routers.kerberos-camera1.tls=true'
- 'traefik.http.routers.kerberos-camera1.tls.certresolver=leresolver'
- 'traefik.http.services.kerberos-camera1.loadbalancer.server.port=8080'
kerberos-vault:
image: 'kerberos/vault:latest'
restart: always
container_name: 'kerberos-vault'
hostname: 'kerberos-vault'
ports:
- '80'
- '8081'
volumes:
- "./vault:/vault"
environment:
- GIN_MODE=release
- STORAGE_API_URL=kerberos-vault-api.domain.tld
- KERBEROS_LOGIN_USERNAME=root
- KERBEROS_LOGIN_PASSWORD=pass
- MONGODB_HOST=kerberos-mongo
- MONGODB_DATABASE_CREDENTIALS=admin
- MONGODB_USERNAME=root
- MONGODB_PASSWORD=pass
- MONGODB_DATABASE_STORAGE=KerberosStorage
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.kerberos-vault.rule=Host(`kerberos-vault.domain.tld`)'
- 'traefik.http.routers.kerberos-vault.entrypoints=websecure'
- 'traefik.http.routers.kerberos-vault.tls=true'
- 'traefik.http.routers.kerberos-vault.tls.certresolver=leresolver'
- "traefik.http.routers.kerberos-vault.service=kerberos_vault"
- 'traefik.http.services.kerberos_vault.loadbalancer.server.port=80'
- 'traefik.http.routers.kerberos-vault-api.rule=Host(`kerberos-vault-api.domain.tld`)'
- 'traefik.http.routers.kerberos-vault-api.entrypoints=websecure'
- 'traefik.http.routers.kerberos-vault-api.tls=true'
- 'traefik.http.routers.kerberos-vault-api.tls.certresolver=leresolver'
- "traefik.http.routers.kerberos-vault-api.service=kerberos_vault_api"
- 'traefik.http.services.kerberos_vault_api.loadbalancer.server.port=8081'
kerberos-mongo:
image: 'mongo:4.4.16'
container_name: 'kerberos-mongo'
hostname: 'kerberos-mongo'
ports:
- 27017
volumes:
- ./mongodb:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=pass
volumes:
kerberos-data:
networks:
default:
name: cluster-net
external: true
Docker Logs:
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /debug/pprof/ --> github.com/gin-gonic/gin.WrapF.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/cmdline --> github.com/gin-gonic/gin.WrapF.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/profile --> github.com/gin-gonic/gin.WrapF.func1 (3 handlers)
[GIN-debug] POST /debug/pprof/symbol --> github.com/gin-gonic/gin.WrapF.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/symbol --> github.com/gin-gonic/gin.WrapF.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/trace --> github.com/gin-gonic/gin.WrapF.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/allocs --> github.com/gin-gonic/gin.WrapH.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/block --> github.com/gin-gonic/gin.WrapH.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/goroutine --> github.com/gin-gonic/gin.WrapH.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/heap --> github.com/gin-gonic/gin.WrapH.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/mutex --> github.com/gin-gonic/gin.WrapH.func1 (3 handlers)
[GIN-debug] GET /debug/pprof/threadcreate --> github.com/gin-gonic/gin.WrapH.func1 (3 handlers)
{"level":"info","msg":"RunAgent: opening RTSP stream","time":"2022-09-08T16:10:58+01:00"}
[GIN-debug] GET /swagger/*any --> github.com/swaggo/gin-swagger.CustomWrapHandler.func1 (4 handlers)
[GIN-debug] GET /config --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func1 (4 handlers)
[GIN-debug] POST /config --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func2 (4 handlers)
[GIN-debug] POST /api/login --> github.com/appleboy/gin-jwt/v2.(*GinJWTMiddleware).LoginHandler-fm (4 handlers)
[GIN-debug] GET /api/dashboard --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func3 (4 handlers)
[GIN-debug] POST /api/latest-events --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func4 (4 handlers)
[GIN-debug] GET /api/days --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func5 (4 handlers)
[GIN-debug] GET /api/stream --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func6 (4 handlers)
[GIN-debug] GET /api/config --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func7 (4 handlers)
[GIN-debug] POST /api/config --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func8 (4 handlers)
[GIN-debug] GET /api/restart --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func9 (4 handlers)
[GIN-debug] GET /api/stop --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func10 (4 handlers)
[GIN-debug] POST /api/hub/verify --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func11 (4 handlers)
[GIN-debug] POST /api/persistence/verify --> github.com/kerberos-io/agent/machinery/src/routers/http.AddRoutes.func12 (4 handlers)
[GIN-debug] GET /file/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (9 handlers)
[GIN-debug] HEAD /file/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (9 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8080
{"level":"info","msg":"ControlAgent: Number of packets read 0","time":"2022-09-08T16:10:58+01:00"}
{"level":"info","msg":"ConfigureMQTT: Set broker uri ","time":"2022-09-08T16:10:59+01:00"}
{"level":"info","msg":"ConfigureMQTT: Set username xxx","time":"2022-09-08T16:10:59+01:00"}
{"level":"info","msg":"ConfigureMQTT: Set password xxx","time":"2022-09-08T16:10:59+01:00"}
{"level":"error","msg":"HandleHeartBeat: (400) Something went wrong while sending to Kerberos Hub.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"HandleLiveStreamHD: Waiting for peer connections.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"HandleRecordStream: Start continuous recording ","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"WriteToTrack: listing codecs.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"WriteToTrack: codec - H264 found.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"H264","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"WriteToTrack: codec - PCM_ALAW found.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"PCM_ALAW","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"WriteToTrack: not using a transcoder.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"ProcessMotion: Continuous recording, so no motion detection.","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"HandleStream: packet size 176627","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"Recording started","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"HandleRecordStream: composing recording","time":"2022-09-08T16:11:02+01:00"}
{"level":"info","msg":"HandleRecordStream: write header","time":"2022-09-08T16:11:02+01:00"}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x6196a0]
goroutine 30 [running]:
github.com/kerberos-io/joy4/format/mp4.(*Muxer).WriteHeader(0xc000034050?, {0xc00046eaa0?, 0x242?, 0xc00041eec0?})
/go/pkg/mod/github.com/kerberos-io/joy4@v1.0.33/format/mp4/muxer.go:154 +0x20
github.com/kerberos-io/agent/machinery/src/capture.HandleRecordStream(0xc00003c620?, 0xc0001e6000, 0xc0005d6070, {0xc00046eaa0, 0x2, 0x2})
/go/src/github.com/kerberos-io/agent/machinery/src/capture/main.go:194 +0x18fb
created by github.com/kerberos-io/agent/machinery/src/components.RunAgent
/go/src/github.com/kerberos-io/agent/machinery/src/components/Kerberos.go:125 +0x8ef
Please, can you help figure out?
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 16 (11 by maintainers)
@cedricve Sorry for delay. Yes, I created persistent volume and now is working fine. Thanks for help guys.
If you want pick docker-compose.yml stuff that I placed here for people that do not want deploy using kubernettes, you can add also to documentation.
docker-compose.yml
Yes I can write docker + docker compose implementation. I avoid kubernetes because actually I am using this for small scale in my home surveillance, so I think is more easy to setup.
For standart I think in their homes people will choose docker compose. It is possible making kerberos (agent + vault + storage) home surveillance using Port forwarding (80,443) in Router to Virtual Machine that can be created using Virtual Box with or without vaild domain name.
With kerberos is possible avoid NAS hardware, replaced by Minio, so I think is better in costs, one Virtual Machine with 2 Cores and 4GB RAM can make all work.