diff --git a/.ffmpeg/Dockerfile b/.ffmpeg/Dockerfile index 9c0dfe29a3..f9089d45bf 100644 --- a/.ffmpeg/Dockerfile +++ b/.ffmpeg/Dockerfile @@ -9,7 +9,7 @@ USER root # Install build tools #====================================== ARG TOOLS_DEPS="autoconf automake cmake libfreetype6 gcc build-essential libtool make nasm pkg-config zlib1g-dev numactl \ -libnuma-dev libx11-dev libxcb-shm0 libxcb1-dev yasm git curl jq wget ca-certificates" +libnuma-dev libx11-dev libxcb-shm0 libxcb1-dev libpulse-dev libasound2-dev yasm git curl jq wget ca-certificates" RUN apt-get update -qqy \ && apt-get upgrade -yq \ @@ -66,6 +66,8 @@ RUN cd /usr/local/src \ --enable-nonfree \ --enable-libx264 \ --enable-libxcb \ + --enable-libpulse \ + --enable-alsa \ --enable-static \ && make \ && make install @@ -80,7 +82,9 @@ COPY --from=builder /usr/local/bin/rclone /usr/local/bin/rclone RUN apt-get -qqy update \ && apt-get -qqy --no-install-recommends install \ - libx11-dev libxcb-shm0 libxcb1-dev \ + libx11-dev libxcb-shm0 libxcb1-dev libpulse-dev libasound2-dev \ + && apt-get -qqy update \ + && apt-get -yq upgrade \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* RUN ldd /usr/local/bin/ffmpeg \ diff --git a/ENV_VARIABLES.md b/ENV_VARIABLES.md index a1c49a9c4e..bdd746a219 100644 --- a/ENV_VARIABLES.md +++ b/ENV_VARIABLES.md @@ -53,7 +53,7 @@ | SE_HTTPS_PRIVATE_KEY | /opt/selenium/secrets/tls.key | | | | SE_ENABLE_TRACING | true | | | | SE_OTEL_EXPORTER_ENDPOINT | | | | -| SE_OTEL_SERVICE_NAME | selenium-router | | | +| SE_OTEL_SERVICE_NAME | selenium-standalone-docker | | | | SE_OTEL_JVM_ARGS | | | | | SE_OTEL_TRACES_EXPORTER | otlp | | | | SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED | true | | | @@ -88,7 +88,7 @@ | SE_REJECT_UNSUPPORTED_CAPS | false | | | | SE_NEW_SESSION_THREAD_POOL_SIZE | | | | | SE_SESSION_REQUEST_TIMEOUT | 300 | | | -| SE_SESSION_RETRY_INTERVAL | 5 | | | +| SE_SESSION_RETRY_INTERVAL | 15 | | | | SE_HEALTHCHECK_INTERVAL | 120 | | | | SE_RELAX_CHECKS | true | | | | SE_SESSION_QUEUE_HOST | | | | @@ -119,3 +119,5 @@ | SE_SUPERVISORD_LOG_FILE | /tmp/supervisord.log | | | | SE_SUPERVISORD_AUTO_RESTART | true | | | | SE_SUPERVISORD_START_RETRIES | 5 | | | +| SE_RECORD_AUDIO | false | Flag to enable recording the audio source (default is Pulse Audio input) | | +| SE_AUDIO_SOURCE | -f pulse -ac 2 -i default | FFmpeg arguments to record the audio source | | diff --git a/Router/Dockerfile b/Router/Dockerfile index 1ca285af5c..f9f06423d6 100644 --- a/Router/Dockerfile +++ b/Router/Dockerfile @@ -13,7 +13,7 @@ USER ${SEL_UID} # In seconds, maps to "--session-request-timeout" ENV SE_SESSION_REQUEST_TIMEOUT="300" \ # In seconds, maps to "--session-retry-interval" - SE_SESSION_RETRY_INTERVAL="5" \ + SE_SESSION_RETRY_INTERVAL="15" \ SE_OTEL_SERVICE_NAME="selenium-router" EXPOSE 4444 diff --git a/Video/Dockerfile b/Video/Dockerfile index efac89a5cc..18823d4bd0 100644 --- a/Video/Dockerfile +++ b/Video/Dockerfile @@ -17,9 +17,11 @@ COPY --from=source /usr/local/bin/rclone /usr/local/bin/rclone RUN apt-get -qqy update \ && apt-get -qqy --no-install-recommends install \ - libx11-dev libxcb-shm0 libxcb1-dev \ + libx11-dev libxcb-shm0 libxcb1-dev libpulse-dev libasound2-dev \ x11-xserver-utils x11-utils \ python3-pip \ + && apt-get -qqy update \ + && apt-get -yq upgrade \ && pip install --upgrade --break-system-packages --no-cache-dir setuptools psutil \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* @@ -35,6 +37,8 @@ RUN ffmpeg -version \ ENV DISPLAY_NUM="99" \ DISPLAY_CONTAINER_NAME="selenium" \ SE_RECORD_VIDEO="true" \ + SE_RECORD_AUDIO="false" \ + SE_AUDIO_SOURCE="-f pulse -ac 2 -i default" \ SE_SERVER_PROTOCOL="http" \ SE_VIDEO_POLL_INTERVAL="1" \ SE_SCREEN_WIDTH="1920" \ diff --git a/Video/video.sh b/Video/video.sh index 50328f9f1a..2901f82b47 100755 --- a/Video/video.sh +++ b/Video/video.sh @@ -204,14 +204,23 @@ function graceful_exit_force() { exit 0 } +if [ "${SE_RECORD_AUDIO,,}" = "true" ]; then + echo "$(date -u +"${ts_format}") [${process_name}] - Audio source arguments: ${SE_AUDIO_SOURCE}" +else + SE_AUDIO_SOURCE="" +fi + if [[ "${VIDEO_UPLOAD_ENABLED}" != "true" ]] && [[ "${VIDEO_FILE_NAME}" != "auto" ]] && [[ -n "${VIDEO_FILE_NAME}" ]]; then trap graceful_exit SIGTERM SIGINT EXIT wait_for_display video_file="$VIDEO_FOLDER/$VIDEO_FILE_NAME" # exec replaces the video.sh process with ffmpeg, this makes easier to pass the process termination signal ffmpeg -hide_banner -loglevel warning -flags low_delay -threads 2 -fflags nobuffer+genpts -strict experimental -y -f x11grab \ - -video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p "$video_file" & - wait $! + -video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} ${SE_AUDIO_SOURCE} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p "$video_file" & + FFMPEG_PID=$! + if ps -p $FFMPEG_PID >/dev/null; then + wait $FFMPEG_PID + fi wait_for_file_integrity else @@ -243,8 +252,11 @@ else video_file="${VIDEO_FOLDER}/$video_file_name" echo "$(date -u +"${ts_format}") [${process_name}] - Starting to record video" ffmpeg -hide_banner -loglevel warning -flags low_delay -threads 2 -fflags nobuffer+genpts -strict experimental -y -f x11grab \ - -video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p "$video_file" & - recording_started="true" + -video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} ${SE_AUDIO_SOURCE} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p "$video_file" & + FFMPEG_PID=$! + if ps -p $FFMPEG_PID >/dev/null; then + recording_started="true" + fi echo "$(date -u +"${ts_format}") [${process_name}] - Video recording started" sleep ${poll_interval} elif [[ "$session_id" != "$prev_session_id" && "$recording_started" = "true" ]]; then diff --git a/scripts/generate_list_env_vars/description.yaml b/scripts/generate_list_env_vars/description.yaml index 6fb8a1373d..dab0832814 100644 --- a/scripts/generate_list_env_vars/description.yaml +++ b/scripts/generate_list_env_vars/description.yaml @@ -360,3 +360,9 @@ - name: SE_SUPERVISORD_START_RETRIES description: '' cli: '' +- name: SE_RECORD_AUDIO + description: Flag to enable recording the audio source (default is Pulse Audio input) + cli: '' +- name: SE_AUDIO_SOURCE + description: FFmpeg arguments to record the audio source + cli: '' diff --git a/scripts/generate_list_env_vars/extract_env.py b/scripts/generate_list_env_vars/extract_env.py index c71600b0db..b024bccc5f 100644 --- a/scripts/generate_list_env_vars/extract_env.py +++ b/scripts/generate_list_env_vars/extract_env.py @@ -6,6 +6,7 @@ def extract_variables_from_shell_scripts(directory_path): variables = OrderedDict() for root, _, files in os.walk(directory_path): + files.sort() for file in files: if file.endswith(".sh"): file_path = os.path.join(root, file) @@ -23,6 +24,7 @@ def extract_variables_from_shell_scripts(directory_path): def extract_variables_from_dockerfiles(directory_path): variables = OrderedDict() for root, _, files in os.walk(directory_path): + files.sort() for file in files: if file.startswith("Dockerfile"): file_path = os.path.join(root, file) @@ -40,6 +42,7 @@ def extract_variables_from_dockerfiles(directory_path): def combine_dictionaries(dict1, dict2): combined_dict = OrderedDict(dict1) combined_dict.update(dict2) + combined_dict = dict(sorted(combined_dict.items())) return combined_dict def read_description_yaml(file_path): diff --git a/scripts/generate_list_env_vars/value.yaml b/scripts/generate_list_env_vars/value.yaml index c574df4bdb..39e9579e2f 100644 --- a/scripts/generate_list_env_vars/value.yaml +++ b/scripts/generate_list_env_vars/value.yaml @@ -1,238 +1,242 @@ -- name: SE_SCREEN_WIDTH - default: '1920' -- name: SE_SCREEN_HEIGHT - default: '1080' -- name: SE_VIDEO_FILE_NAME - default: video.mp4 -- name: SE_FRAME_RATE - default: '15' -- name: SE_CODEC - default: libx264 -- name: SE_PRESET - default: -preset ultrafast -- name: SE_VIDEO_UPLOAD_ENABLED +- name: SE_AUDIO_SOURCE + default: -f pulse -ac 2 -i default +- name: SE_BIND_HOST default: 'false' -- name: SE_VIDEO_INTERNAL_UPLOAD - default: 'true' -- name: SE_UPLOAD_DESTINATION_PREFIX - default: '' -- name: SE_UPLOAD_PIPE_FILE_NAME - default: '' -- name: SE_SERVER_PROTOCOL - default: http -- name: SE_VIDEO_POLL_INTERVAL +- name: SE_BROWSER_LEFTOVERS_INTERVAL_SECS + default: '3600' +- name: SE_BROWSER_LEFTOVERS_PROCESSES_SECS + default: '7200' +- name: SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS default: '1' -- name: SE_VIDEO_WAIT_ATTEMPTS +- name: SE_CODEC + default: libx264 +- name: SE_DISABLE_UI default: '' -- name: SE_VIDEO_FILE_READY_WAIT_ATTEMPTS +- name: SE_DISTRIBUTOR_HOST default: '' -- name: SE_VIDEO_WAIT_UPLOADER_SHUTDOWN_ATTEMPTS +- name: SE_DISTRIBUTOR_PORT default: '' -- name: SE_LOG_TIMESTAMP_FORMAT - default: '%Y-%m-%d %H:%M:%S,%3N' -- name: SE_VIDEO_RECORD_STANDALONE +- name: SE_DRAIN_AFTER_SESSION_COUNT + default: '0' +- name: SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP + default: 'false' +- name: SE_ENABLE_TLS + default: 'false' +- name: SE_ENABLE_TRACING + default: 'true' +- name: SE_EVENT_BUS_HOST default: '' -- name: SE_NODE_PORT +- name: SE_EVENT_BUS_PORT default: '' -- name: SE_ROUTER_USERNAME +- name: SE_EVENT_BUS_PUBLISH_PORT default: '' -- name: SE_ROUTER_PASSWORD +- name: SE_EVENT_BUS_SUBSCRIBE_PORT default: '' -- name: SE_SUPERVISORD_PID_FILE - default: /tmp/supervisord.pid -- name: SE_DRAIN_AFTER_SESSION_COUNT - default: '0' -- name: SE_SUB_PATH +- name: SE_EXTERNAL_URL default: '' -- name: SE_NODE_GRID_URL +- name: SE_FRAME_RATE + default: '15' +- name: SE_GRID_URL default: '' +- name: SE_HEALTHCHECK_INTERVAL + default: '120' +- name: SE_HTTPS_CERTIFICATE + default: /opt/selenium/secrets/tls.crt +- name: SE_HTTPS_PRIVATE_KEY + default: /opt/selenium/secrets/tls.key +- name: SE_HTTP_LOGS + default: 'false' - name: SE_HUB_HOST default: '' -- name: SE_ROUTER_HOST - default: '' - name: SE_HUB_PORT default: '' -- name: SE_ROUTER_PORT - default: '' -- name: SE_NODE_GRID_GRAPHQL_URL +- name: SE_JAVA_DISABLE_HOSTNAME_VERIFICATION + default: 'true' +- name: SE_JAVA_HEAP_DUMP + default: 'false' +- name: SE_JAVA_HTTPCLIENT_VERSION + default: HTTP_1_1 +- name: SE_JAVA_OPTS default: '' -- name: SE_VIDEO_FILE_NAME_TRIM_REGEX - default: '[:alnum:]-_' -- name: SE_VIDEO_FILE_NAME_SUFFIX +- name: SE_JAVA_OPTS_DEFAULT + default: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/selenium/logs +- name: SE_JAVA_SSL_TRUST_STORE + default: /opt/selenium/secrets/server.jks +- name: SE_JAVA_SSL_TRUST_STORE_PASSWORD + default: /opt/selenium/secrets/server.pass +- name: SE_LOG_LEVEL + default: INFO +- name: SE_LOG_LISTEN_GRAPHQL default: '' -- name: SE_RCLONE_CONFIG +- name: SE_LOG_TIMESTAMP_FORMAT + default: '%Y-%m-%d %H:%M:%S,%3N' +- name: SE_NEW_SESSION_THREAD_POOL_SIZE default: '' -- name: SE_UPLOAD_COMMAND +- name: SE_NODE_BROWSER_VERSION + default: stable +- name: SE_NODE_DOCKER_CONFIG_FILENAME default: '' -- name: SE_UPLOAD_OPTS +- name: SE_NODE_ENABLE_CDP default: '' -- name: SE_UPLOAD_RETAIN_LOCAL_FILE +- name: SE_NODE_ENABLE_MANAGED_DOWNLOADS default: '' -- name: SE_VIDEO_UPLOAD_BATCH_CHECK +- name: SE_NODE_GRACEFUL_SHUTDOWN default: '' -- name: SE_RCLONE_ +- name: SE_NODE_GRID_GRAPHQL_URL default: '' -- name: SE_OPTS +- name: SE_NODE_GRID_URL default: '' -- name: SE_EVENT_BUS_HOST +- name: SE_NODE_HEARTBEAT_PERIOD + default: '30' +- name: SE_NODE_MAX_SESSIONS + default: '1' +- name: SE_NODE_OVERRIDE_MAX_SESSIONS + default: 'false' +- name: SE_NODE_PLATFORM_NAME + default: Linux +- name: SE_NODE_PORT default: '' -- name: SE_EVENT_BUS_PORT +- name: SE_NODE_PRESTOP_WAIT_STRATEGY default: '' -- name: SE_LOG_LEVEL - default: INFO -- name: SE_HTTP_LOGS - default: 'false' -- name: SE_STRUCTURED_LOGS - default: 'false' -- name: SE_EXTERNAL_URL +- name: SE_NODE_REGISTER_CYCLE default: '' -- name: SE_ENABLE_TLS - default: 'false' -- name: SE_JAVA_SSL_TRUST_STORE - default: /opt/selenium/secrets/server.jks -- name: SE_JAVA_OPTS +- name: SE_NODE_REGISTER_PERIOD default: '' -- name: SE_JAVA_SSL_TRUST_STORE_PASSWORD - default: /opt/selenium/secrets/server.pass -- name: SE_JAVA_DISABLE_HOSTNAME_VERIFICATION - default: 'true' -- name: SE_HTTPS_CERTIFICATE - default: /opt/selenium/secrets/tls.crt -- name: SE_HTTPS_PRIVATE_KEY - default: /opt/selenium/secrets/tls.key -- name: SE_ENABLE_TRACING +- name: SE_NODE_SESSION_TIMEOUT + default: '300' +- name: SE_NO_VNC_PORT + default: '7900' +- name: SE_OFFLINE default: 'true' +- name: SE_OPTS + default: '' - name: SE_OTEL_EXPORTER_ENDPOINT default: '' -- name: SE_OTEL_SERVICE_NAME - default: selenium-router +- name: SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED + default: 'true' - name: SE_OTEL_JVM_ARGS default: '' +- name: SE_OTEL_SERVICE_NAME + default: selenium-standalone-docker - name: SE_OTEL_TRACES_EXPORTER default: otlp -- name: SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED - default: 'true' -- name: SE_JAVA_HTTPCLIENT_VERSION - default: HTTP_1_1 -- name: SE_JAVA_OPTS_DEFAULT - default: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/selenium/logs -- name: SE_JAVA_HEAP_DUMP +- name: SE_PRESET + default: -preset ultrafast +- name: SE_RCLONE_ + default: '' +- name: SE_RCLONE_CONFIG + default: '' +- name: SE_RECORD_AUDIO default: 'false' -- name: SE_BIND_HOST +- name: SE_RECORD_VIDEO + default: 'true' +- name: SE_REGISTRATION_SECRET + default: '' +- name: SE_REJECT_UNSUPPORTED_CAPS default: 'false' +- name: SE_RELAX_CHECKS + default: 'true' +- name: SE_ROUTER_HOST + default: '' +- name: SE_ROUTER_PASSWORD + default: '' +- name: SE_ROUTER_PORT + default: '' +- name: SE_ROUTER_USERNAME + default: '' - name: SE_SCREEN_DEPTH default: '24' - name: SE_SCREEN_DPI default: '96' -- name: SE_START_XVFB - default: 'true' -- name: SE_START_VNC - default: 'true' -- name: SE_START_NO_VNC - default: 'true' -- name: SE_VNC_ULIMIT +- name: SE_SCREEN_HEIGHT + default: '1080' +- name: SE_SCREEN_WIDTH + default: '1920' +- name: SE_SERVER_PROTOCOL + default: http +- name: SE_SESSIONS_HOST default: '' -- name: SE_NO_VNC_PORT - default: '7900' -- name: SE_VNC_PORT - default: '5900' -- name: SE_VNC_NO_PASSWORD +- name: SE_SESSIONS_MAP_EXTERNAL_DATASTORE + default: 'false' +- name: SE_SESSIONS_MAP_HOST default: '' -- name: SE_VNC_VIEW_ONLY +- name: SE_SESSIONS_MAP_PORT default: '' -- name: SE_VNC_PASSWORD +- name: SE_SESSIONS_PORT default: '' -- name: SE_EVENT_BUS_PUBLISH_PORT +- name: SE_SESSION_QUEUE_HOST default: '' -- name: SE_EVENT_BUS_SUBSCRIBE_PORT +- name: SE_SESSION_QUEUE_PORT default: '' -- name: SE_NODE_SESSION_TIMEOUT +- name: SE_SESSION_REQUEST_TIMEOUT default: '300' -- name: SE_NODE_ENABLE_MANAGED_DOWNLOADS +- name: SE_SESSION_RETRY_INTERVAL + default: '15' +- name: SE_START_NO_VNC + default: 'true' +- name: SE_START_VNC + default: 'true' +- name: SE_START_XVFB + default: 'true' +- name: SE_STRUCTURED_LOGS + default: 'false' +- name: SE_SUB_PATH default: '' -- name: SE_NODE_ENABLE_CDP +- name: SE_SUPERVISORD_AUTO_RESTART + default: 'true' +- name: SE_SUPERVISORD_CHILD_LOG_DIR + default: /tmp +- name: SE_SUPERVISORD_LOG_FILE + default: /tmp/supervisord.log +- name: SE_SUPERVISORD_LOG_LEVEL + default: info +- name: SE_SUPERVISORD_PID_FILE + default: /tmp/supervisord.pid +- name: SE_SUPERVISORD_START_RETRIES + default: '5' +- name: SE_UPLOAD_COMMAND default: '' -- name: SE_NODE_REGISTER_PERIOD +- name: SE_UPLOAD_DESTINATION_PREFIX default: '' -- name: SE_NODE_REGISTER_CYCLE +- name: SE_UPLOAD_OPTS default: '' -- name: SE_NODE_HEARTBEAT_PERIOD - default: '30' -- name: SE_REGISTRATION_SECRET +- name: SE_UPLOAD_PIPE_FILE_NAME default: '' -- name: SE_BROWSER_LEFTOVERS_PROCESSES_SECS - default: '7200' -- name: SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS - default: '1' -- name: SE_BROWSER_LEFTOVERS_INTERVAL_SECS - default: '3600' -- name: SE_DISABLE_UI +- name: SE_UPLOAD_RETAIN_LOCAL_FILE default: '' -- name: SE_REJECT_UNSUPPORTED_CAPS - default: 'false' -- name: SE_NEW_SESSION_THREAD_POOL_SIZE +- name: SE_VIDEO_CONTAINER_NAME default: '' -- name: SE_SESSION_REQUEST_TIMEOUT - default: '300' -- name: SE_SESSION_RETRY_INTERVAL - default: '5' -- name: SE_HEALTHCHECK_INTERVAL - default: '120' -- name: SE_RELAX_CHECKS - default: 'true' -- name: SE_SESSION_QUEUE_HOST +- name: SE_VIDEO_FILE_NAME + default: video.mp4 +- name: SE_VIDEO_FILE_NAME_SUFFIX default: '' -- name: SE_SESSION_QUEUE_PORT +- name: SE_VIDEO_FILE_NAME_TRIM_REGEX + default: '[:alnum:]-_' +- name: SE_VIDEO_FILE_READY_WAIT_ATTEMPTS default: '' - name: SE_VIDEO_FOLDER default: '' -- name: SE_LOG_LISTEN_GRAPHQL - default: '' -- name: SE_NODE_PRESTOP_WAIT_STRATEGY - default: '' -- name: SE_SESSIONS_HOST +- name: SE_VIDEO_INTERNAL_UPLOAD + default: 'true' +- name: SE_VIDEO_POLL_INTERVAL + default: '1' +- name: SE_VIDEO_RECORD_STANDALONE default: '' -- name: SE_SESSIONS_PORT +- name: SE_VIDEO_UPLOAD_BATCH_CHECK default: '' -- name: SE_SESSIONS_MAP_EXTERNAL_DATASTORE +- name: SE_VIDEO_UPLOAD_ENABLED default: 'false' -- name: SE_SESSIONS_MAP_HOST - default: '' -- name: SE_SESSIONS_MAP_PORT - default: '' -- name: SE_DISTRIBUTOR_HOST +- name: SE_VIDEO_WAIT_ATTEMPTS default: '' -- name: SE_DISTRIBUTOR_PORT +- name: SE_VIDEO_WAIT_UPLOADER_SHUTDOWN_ATTEMPTS default: '' -- name: SE_GRID_URL +- name: SE_VNC_NO_PASSWORD default: '' -- name: SE_NODE_DOCKER_CONFIG_FILENAME +- name: SE_VNC_PASSWORD default: '' -- name: SE_NODE_GRACEFUL_SHUTDOWN +- name: SE_VNC_PORT + default: '5900' +- name: SE_VNC_ULIMIT default: '' -- name: SE_VIDEO_CONTAINER_NAME +- name: SE_VNC_VIEW_ONLY default: '' -- name: SE_RECORD_VIDEO - default: 'true' -- name: SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP - default: 'false' -- name: SE_NODE_MAX_SESSIONS - default: '1' -- name: SE_NODE_OVERRIDE_MAX_SESSIONS - default: 'false' -- name: SE_OFFLINE - default: 'true' -- name: SE_NODE_BROWSER_VERSION - default: stable -- name: SE_NODE_PLATFORM_NAME - default: Linux -- name: SE_SUPERVISORD_LOG_LEVEL - default: info -- name: SE_SUPERVISORD_CHILD_LOG_DIR - default: /tmp -- name: SE_SUPERVISORD_LOG_FILE - default: /tmp/supervisord.log -- name: SE_SUPERVISORD_AUTO_RESTART - default: 'true' -- name: SE_SUPERVISORD_START_RETRIES - default: '5'