Add go2rtc healthcheck service

Also don't make go2rtc exits cause the container to fail.
This commit is contained in:
Felipe Santos 2023-02-19 13:34:14 -03:00
parent 5c039da168
commit 542c64ac7e
6 changed files with 28 additions and 26 deletions

View File

@ -0,0 +1,10 @@
#!/command/with-contenv bash
# shellcheck shell=bash
set -o errexit -o nounset -o pipefail
readonly exit_code_service="${1}"
readonly exit_code_signal="${2}"
readonly service="go2rtc-healthcheck"
echo "[INFO] The ${service} service exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2

View File

@ -0,0 +1,16 @@
#!/command/with-contenv bash
# shellcheck shell=bash
# Start the go2rtc healthcheck service
set -o errexit -o nounset -o pipefail
echo "[INFO] Starting go2rtc healthcheck service..." >&2
while sleep 1m; do
# Check if the service is running
if ! curl -fsSL http://127.0.0.1:1984/api/streams >/dev/null; then
echo "[ERROR] The go2rtc is apparently not working, restarting it..." >&2
# We can also use -r instead of -t to send kill signal rather than term
s6-svc -t /var/run/service/go2rtc
fi
done

View File

@ -0,0 +1 @@
longrun

View File

@ -1,32 +1,10 @@
#!/command/with-contenv bash
# shellcheck shell=bash
# Take down the S6 supervision tree when the service exits
set -o errexit -o nounset -o pipefail
declare exit_code_container
exit_code_container=$(cat /run/s6-linux-init-container-results/exitcode)
readonly exit_code_container
readonly exit_code_service="${1}"
readonly exit_code_signal="${2}"
readonly service="go2rtc"
echo "Service ${service} exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2
if [[ "${exit_code_service}" -eq 256 ]]; then
if [[ "${exit_code_container}" -eq 0 ]]; then
echo $((128 + exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
fi
elif [[ "${exit_code_service}" -ne 0 ]]; then
if [[ "${exit_code_container}" -eq 0 ]]; then
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
fi
else
# go2rtc is not supposed to exit, so even when it exits with 0 we make the
# container with 1. We only tolerate it when Frigate is restarting.
if [[ "${exit_code_container}" -eq 0 && ! -f /dev/shm/restarting-frigate ]]; then
echo "1" > /run/s6-linux-init-container-results/exitcode
fi
fi
exec /run/s6/basedir/bin/halt
echo "[INFO] The ${service} service exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2

View File

@ -4,9 +4,6 @@
set -o errexit -o nounset -o pipefail
# Tell S6-Overlay not to restart this service
s6-svc -O .
function get_ip_and_port_from_supervisor() {
local ip_address
# Example: 192.168.1.10/24