Starting Docker Compose Tests - Sun Dec 21 23:37:01 UTC 2025
==========================================
File: docker-compose.missing-caps.yml
----------------------------------------

Testing: docker-compose.missing-caps.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations

Running docker-compose up...
 Volume "configurations_netalertx_data"  Creating
 Volume "configurations_netalertx_data"  Created
 Container netalertx-test-missing-caps  Creating
 Container netalertx-test-missing-caps  Created
Attaching to netalertx-test-missing-caps
netalertx-test-missing-caps  | exec /bin/sh: operation not permitted

[Knetalertx-test-missing-caps exited with code 255
File: docker-compose.readonly.yml
----------------------------------------

Testing: docker-compose.readonly.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations

Running docker-compose up...
 Volume "configurations_netalertx_data"  Creating
 Volume "configurations_netalertx_data"  Created
 Container netalertx-test-readonly  Creating
 Container netalertx-test-readonly  Created
Attaching to netalertx-test-readonly
netalertx-test-readonly  | [1;31m
netalertx-test-readonly  |  _   _      _    ___  _           _  __   __
netalertx-test-readonly  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-readonly  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-readonly  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-readonly  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-readonly  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-readonly  | [0m   Network intruder and presence detector. 
netalertx-test-readonly  |    https://netalertx.com
netalertx-test-readonly  | 
netalertx-test-readonly  | 
netalertx-test-readonly  | Startup pre-checks
netalertx-test-readonly  | --> storage permission.sh 
netalertx-test-readonly  | --> data migration.sh 
netalertx-test-readonly  | --> mounts.py 
netalertx-test-readonly  | --> first run config.sh 
netalertx-test-readonly  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-readonly  | 
netalertx-test-readonly  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-readonly  |     this instance in production.
netalertx-test-readonly  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly  | --> first run db.sh 
netalertx-test-readonly  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-readonly  | 
netalertx-test-readonly  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-readonly  |     DB before onboarding sensitive or critical networks.
netalertx-test-readonly  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly  | --> mandatory folders.sh 
netalertx-test-readonly  | --> apply conf override.sh 
netalertx-test-readonly  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-readonly  | 
netalertx-test-readonly  |     Make sure the JSON content is correct before starting the application.
netalertx-test-readonly  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-readonly  | --> writable config.sh 
netalertx-test-readonly  | --> nginx config.sh 
netalertx-test-readonly  | --> user netalertx.sh 
netalertx-test-readonly  | --> host mode network.sh 
netalertx-test-readonly  | --> layer 2 capabilities.sh 
netalertx-test-readonly  | --> excessive capabilities.sh 
netalertx-test-readonly  | --> appliance integrity.sh 
netalertx-test-readonly  | --> ports available.sh 
netalertx-test-readonly  | [0m/services/scripts/update_vendors.sh: line 28: /tmp/run/tmp/ieee-oui.txt.tmp: Read-only file system
netalertx-test-readonly  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-readonly  | Starting supercronic --debug "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-readonly  | /services/start-php-fpm.sh: line 30: /tmp/log/app.php_errors.log: Read-only file system
netalertx-test-readonly  | /services/start-cron.sh: line 37: /tmp/log/cron.log: Read-only file system
netalertx-test-readonly  | php-fpm stopped! (exit 1)
netalertx-test-readonly  | Supercronic stopped! (exit 1)
netalertx-test-readonly  | mktemp: : Read-only file system
netalertx-test-readonly  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-readonly  | /services/start-backend.sh: line 16: /tmp/log/stdout.log: Read-only file system
netalertx-test-readonly  | ERROR: Failed to download or process OUI data
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-readonly  Stopping
 Container netalertx-test-readonly  Stopped

File: docker-compose.writable.yml
----------------------------------------

Testing: docker-compose.writable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations

Running docker-compose up...
 Volume "configurations_netalertx_data"  Creating
 Volume "configurations_netalertx_data"  Created
 Container netalertx-test-writable  Creating
 Container netalertx-test-writable  Created
Attaching to netalertx-test-writable
netalertx-test-writable  | [1;31m
netalertx-test-writable  |  _   _      _    ___  _           _  __   __
netalertx-test-writable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-writable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-writable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-writable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-writable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-writable  | [0m   Network intruder and presence detector. 
netalertx-test-writable  |    https://netalertx.com
netalertx-test-writable  | 
netalertx-test-writable  | 
netalertx-test-writable  | Startup pre-checks
netalertx-test-writable  | --> storage permission.sh 
netalertx-test-writable  | --> data migration.sh 
netalertx-test-writable  | --> mounts.py 
netalertx-test-writable  | --> first run config.sh 
netalertx-test-writable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-writable  | 
netalertx-test-writable  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-writable  |     this instance in production.
netalertx-test-writable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable  | --> first run db.sh 
netalertx-test-writable  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-writable  | 
netalertx-test-writable  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-writable  |     DB before onboarding sensitive or critical networks.
netalertx-test-writable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable  | --> mandatory folders.sh 
netalertx-test-writable  |     * Creating NetAlertX log directory.
netalertx-test-writable  |     * Creating NetAlertX API cache.
netalertx-test-writable  |     * Creating System services runtime directory.
netalertx-test-writable  |     * Creating nginx active configuration directory.
netalertx-test-writable  |     * Creating Plugins log.
netalertx-test-writable  |     * Creating System services run log.
netalertx-test-writable  |     * Creating System services run tmp.
netalertx-test-writable  |     * Creating DB locked log.
netalertx-test-writable  |     * Creating Execution queue log.
netalertx-test-writable  | --> apply conf override.sh 
netalertx-test-writable  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-writable  | 
netalertx-test-writable  |     Make sure the JSON content is correct before starting the application.
netalertx-test-writable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-writable  | --> writable config.sh 
netalertx-test-writable  | --> nginx config.sh 
netalertx-test-writable  | --> user netalertx.sh 
netalertx-test-writable  | --> host mode network.sh 
netalertx-test-writable  | --> layer 2 capabilities.sh 
netalertx-test-writable  | --> excessive capabilities.sh 
netalertx-test-writable  | --> appliance integrity.sh 
netalertx-test-writable  | --> ports available.sh 
netalertx-test-writable  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-writable  | Starting supercronic --debug "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-writable  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-writable  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-writable  | [0mTraceback (most recent call last):
netalertx-test-writable  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-writable  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-writable  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-writable  |     sys.exit(main())
netalertx-test-writable  |              ^^^^^^
netalertx-test-writable  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-writable  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-writable  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-writable  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-writable  |     for setting_name, value in settings_override.items():
netalertx-test-writable  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-writable  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-writable  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-writable  Stopping
 Container netalertx-test-writable  Stopped

File: docker-compose.mount-test.active_config_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper nginx config mount
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as writable and mounted
- No configuration warnings for nginx config path
- Custom PORT configuration should work when nginx config is writable

Testing: docker-compose.mount-test.active_config_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_system_services_active_config"  Creating
 Volume "mount-tests_test_system_services_active_config"  Created
 Container netalertx-test-mount-active_config_mounted  Creating
 Container netalertx-test-mount-active_config_mounted  Created
Attaching to netalertx-test-mount-active_config_mounted
netalertx-test-mount-active_config_mounted  | [1;31m
netalertx-test-mount-active_config_mounted  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-active_config_mounted  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-active_config_mounted  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-active_config_mounted  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-active_config_mounted  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-active_config_mounted  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-active_config_mounted  | [0m   Network intruder and presence detector. 
netalertx-test-mount-active_config_mounted  |    https://netalertx.com
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  | Startup pre-checks
netalertx-test-mount-active_config_mounted  | --> storage permission.sh 
netalertx-test-mount-active_config_mounted  | --> data migration.sh 
netalertx-test-mount-active_config_mounted  | --> mounts.py 
netalertx-test-mount-active_config_mounted  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-active_config_mounted  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-active_config_mounted  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_mounted  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_mounted  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_mounted  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_mounted  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_mounted  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_mounted  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_mounted  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  |     * /tmp/nginx/active-config performance issue
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-active_config_mounted  |     configuration can be quite complex.
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  |     Review the documentation for a correct setup:
netalertx-test-mount-active_config_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-active_config_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-active_config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | [0m
netalertx-test-mount-active_config_mounted  | --> first run config.sh 
netalertx-test-mount-active_config_mounted  | --> first run db.sh 
netalertx-test-mount-active_config_mounted  | INFO: ALWAYS_FRESH_INSTALL enabled — removing existing database.
netalertx-test-mount-active_config_mounted  | [1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-active_config_mounted  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-active_config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | --> mandatory folders.sh 
netalertx-test-mount-active_config_mounted  |     * Creating NetAlertX log directory.
netalertx-test-mount-active_config_mounted  |     * Creating NetAlertX API cache.
netalertx-test-mount-active_config_mounted  |     * Creating System services runtime directory.
netalertx-test-mount-active_config_mounted  |     * Creating Plugins log.
netalertx-test-mount-active_config_mounted  |     * Creating System services run log.
netalertx-test-mount-active_config_mounted  |     * Creating System services run tmp.
netalertx-test-mount-active_config_mounted  |     * Creating DB locked log.
netalertx-test-mount-active_config_mounted  |     * Creating Execution queue log.
netalertx-test-mount-active_config_mounted  | --> apply conf override.sh 
netalertx-test-mount-active_config_mounted  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-active_config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | --> writable config.sh 
netalertx-test-mount-active_config_mounted  | --> nginx config.sh 
netalertx-test-mount-active_config_mounted  | --> user netalertx.sh 
netalertx-test-mount-active_config_mounted  | --> host mode network.sh 
netalertx-test-mount-active_config_mounted  | --> layer 2 capabilities.sh 
netalertx-test-mount-active_config_mounted  | --> excessive capabilities.sh 
netalertx-test-mount-active_config_mounted  | --> appliance integrity.sh 
netalertx-test-mount-active_config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_mounted  | 
netalertx-test-mount-active_config_mounted  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-active_config_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_mounted  | --> ports available.sh 
netalertx-test-mount-active_config_mounted  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_mounted  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-active_config_mounted  | [0mmktemp: : Permission denied
netalertx-test-mount-active_config_mounted  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-active_config_mounted  | Traceback (most recent call last):
netalertx-test-mount-active_config_mounted  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-active_config_mounted  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-active_config_mounted  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-active_config_mounted  |     sys.exit(main())
netalertx-test-mount-active_config_mounted  |              ^^^^^^
netalertx-test-mount-active_config_mounted  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-active_config_mounted  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-active_config_mounted  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-active_config_mounted  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-active_config_mounted  |     for setting_name, value in settings_override.items():
netalertx-test-mount-active_config_mounted  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-active_config_mounted  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-active_config_mounted  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-active_config_mounted  Stopping
 Container netalertx-test-mount-active_config_mounted  Stopped

File: docker-compose.mount-test.active_config_no-mount.yml
----------------------------------------
Expected outcome: Container shows warning about missing nginx config mount
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as not mounted
- Warning message about nginx configuration mount being missing
- Custom PORT configuration may not work properly

Testing: docker-compose.mount-test.active_config_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-active_config_no-mount  Creating
 Container netalertx-test-mount-active_config_no-mount  Created
Attaching to netalertx-test-mount-active_config_no-mount
netalertx-test-mount-active_config_no-mount  | [1;31m
netalertx-test-mount-active_config_no-mount  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-active_config_no-mount  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-active_config_no-mount  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-active_config_no-mount  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-active_config_no-mount  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-active_config_no-mount  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-active_config_no-mount  | [0m   Network intruder and presence detector. 
netalertx-test-mount-active_config_no-mount  |    https://netalertx.com
netalertx-test-mount-active_config_no-mount  | 
netalertx-test-mount-active_config_no-mount  | 
netalertx-test-mount-active_config_no-mount  | Startup pre-checks
netalertx-test-mount-active_config_no-mount  | --> storage permission.sh 
netalertx-test-mount-active_config_no-mount  | --> data migration.sh 
netalertx-test-mount-active_config_no-mount  | --> mounts.py 
netalertx-test-mount-active_config_no-mount  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-active_config_no-mount  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-active_config_no-mount  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_no-mount  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_no-mount  | --> first run config.sh 
netalertx-test-mount-active_config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-active_config_no-mount  | 
netalertx-test-mount-active_config_no-mount  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-active_config_no-mount  |     this instance in production.
netalertx-test-mount-active_config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | --> first run db.sh 
netalertx-test-mount-active_config_no-mount  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-active_config_no-mount  | 
netalertx-test-mount-active_config_no-mount  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-active_config_no-mount  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-active_config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | --> mandatory folders.sh 
netalertx-test-mount-active_config_no-mount  |     * Creating NetAlertX log directory.
netalertx-test-mount-active_config_no-mount  |     * Creating NetAlertX API cache.
netalertx-test-mount-active_config_no-mount  |     * Creating System services runtime directory.
netalertx-test-mount-active_config_no-mount  |     * Creating nginx active configuration directory.
netalertx-test-mount-active_config_no-mount  |     * Creating Plugins log.
netalertx-test-mount-active_config_no-mount  |     * Creating System services run log.
netalertx-test-mount-active_config_no-mount  |     * Creating System services run tmp.
netalertx-test-mount-active_config_no-mount  |     * Creating DB locked log.
netalertx-test-mount-active_config_no-mount  |     * Creating Execution queue log.
netalertx-test-mount-active_config_no-mount  | --> apply conf override.sh 
netalertx-test-mount-active_config_no-mount  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-active_config_no-mount  | 
netalertx-test-mount-active_config_no-mount  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-active_config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | --> writable config.sh 
netalertx-test-mount-active_config_no-mount  | --> nginx config.sh 
netalertx-test-mount-active_config_no-mount  | --> user netalertx.sh 
netalertx-test-mount-active_config_no-mount  | --> host mode network.sh 
netalertx-test-mount-active_config_no-mount  | --> layer 2 capabilities.sh 
netalertx-test-mount-active_config_no-mount  | --> excessive capabilities.sh 
netalertx-test-mount-active_config_no-mount  | --> appliance integrity.sh 
netalertx-test-mount-active_config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_no-mount  | 
netalertx-test-mount-active_config_no-mount  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-active_config_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_no-mount  | --> ports available.sh 
netalertx-test-mount-active_config_no-mount  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_no-mount  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-active_config_no-mount  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-active_config_no-mount  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-active_config_no-mount  | [0mTraceback (most recent call last):
netalertx-test-mount-active_config_no-mount  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-active_config_no-mount  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-active_config_no-mount  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-active_config_no-mount  |     sys.exit(main())
netalertx-test-mount-active_config_no-mount  |              ^^^^^^
netalertx-test-mount-active_config_no-mount  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-active_config_no-mount  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-active_config_no-mount  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-active_config_no-mount  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-active_config_no-mount  |     for setting_name, value in settings_override.items():
netalertx-test-mount-active_config_no-mount  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-active_config_no-mount  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-active_config_no-mount  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-active_config_no-mount  Stopping
 Container netalertx-test-mount-active_config_no-mount  Stopped

File: docker-compose.mount-test.active_config_ramdisk.yml
----------------------------------------
Expected outcome: Container shows performance warning for nginx config on RAM disk
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as mounted on tmpfs (RAM disk)
- Performance issue warning since nginx config should be persistent
- Custom PORT configuration may have performance implications

Testing: docker-compose.mount-test.active_config_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-active_config_ramdisk  Creating
 Container netalertx-test-mount-active_config_ramdisk  Created
Attaching to netalertx-test-mount-active_config_ramdisk
netalertx-test-mount-active_config_ramdisk  | [1;31m
netalertx-test-mount-active_config_ramdisk  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-active_config_ramdisk  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-active_config_ramdisk  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-active_config_ramdisk  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-active_config_ramdisk  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-active_config_ramdisk  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-active_config_ramdisk  | [0m   Network intruder and presence detector. 
netalertx-test-mount-active_config_ramdisk  |    https://netalertx.com
netalertx-test-mount-active_config_ramdisk  | 
netalertx-test-mount-active_config_ramdisk  | 
netalertx-test-mount-active_config_ramdisk  | Startup pre-checks
netalertx-test-mount-active_config_ramdisk  | --> storage permission.sh 
netalertx-test-mount-active_config_ramdisk  | --> data migration.sh 
netalertx-test-mount-active_config_ramdisk  | --> mounts.py 
netalertx-test-mount-active_config_ramdisk  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-active_config_ramdisk  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-active_config_ramdisk  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_ramdisk  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_ramdisk  | --> first run config.sh 
netalertx-test-mount-active_config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-active_config_ramdisk  | 
netalertx-test-mount-active_config_ramdisk  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-active_config_ramdisk  |     this instance in production.
netalertx-test-mount-active_config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | --> first run db.sh 
netalertx-test-mount-active_config_ramdisk  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-active_config_ramdisk  | 
netalertx-test-mount-active_config_ramdisk  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-active_config_ramdisk  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-active_config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | --> mandatory folders.sh 
netalertx-test-mount-active_config_ramdisk  |     * Creating NetAlertX log directory.
netalertx-test-mount-active_config_ramdisk  |     * Creating NetAlertX API cache.
netalertx-test-mount-active_config_ramdisk  |     * Creating System services runtime directory.
netalertx-test-mount-active_config_ramdisk  |     * Creating nginx active configuration directory.
netalertx-test-mount-active_config_ramdisk  |     * Creating Plugins log.
netalertx-test-mount-active_config_ramdisk  |     * Creating System services run log.
netalertx-test-mount-active_config_ramdisk  |     * Creating System services run tmp.
netalertx-test-mount-active_config_ramdisk  |     * Creating DB locked log.
netalertx-test-mount-active_config_ramdisk  |     * Creating Execution queue log.
netalertx-test-mount-active_config_ramdisk  | --> apply conf override.sh 
netalertx-test-mount-active_config_ramdisk  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-active_config_ramdisk  | 
netalertx-test-mount-active_config_ramdisk  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-active_config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | --> writable config.sh 
netalertx-test-mount-active_config_ramdisk  | --> nginx config.sh 
netalertx-test-mount-active_config_ramdisk  | --> user netalertx.sh 
netalertx-test-mount-active_config_ramdisk  | --> host mode network.sh 
netalertx-test-mount-active_config_ramdisk  | --> layer 2 capabilities.sh 
netalertx-test-mount-active_config_ramdisk  | --> excessive capabilities.sh 
netalertx-test-mount-active_config_ramdisk  | --> appliance integrity.sh 
netalertx-test-mount-active_config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-active_config_ramdisk  | 
netalertx-test-mount-active_config_ramdisk  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-active_config_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-active_config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_ramdisk  | --> ports available.sh 
netalertx-test-mount-active_config_ramdisk  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-active_config_ramdisk  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-active_config_ramdisk  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-active_config_ramdisk  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-active_config_ramdisk  | [0mTraceback (most recent call last):
netalertx-test-mount-active_config_ramdisk  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-active_config_ramdisk  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-active_config_ramdisk  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-active_config_ramdisk  |     sys.exit(main())
netalertx-test-mount-active_config_ramdisk  |              ^^^^^^
netalertx-test-mount-active_config_ramdisk  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-active_config_ramdisk  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-active_config_ramdisk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-active_config_ramdisk  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-active_config_ramdisk  |     for setting_name, value in settings_override.items():
netalertx-test-mount-active_config_ramdisk  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-active_config_ramdisk  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-active_config_ramdisk  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-active_config_ramdisk  Stopping
 Container netalertx-test-mount-active_config_ramdisk  Stopped

File: docker-compose.mount-test.active_config_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable nginx config partition
- SYSTEM_SERVICES_ACTIVE_CONFIG shows as mounted but unwritable (❌ in Writeable column)
- 35-nginx-config.sh detects permission error and exits with code 1
- Container startup fails because nginx configuration cannot be written for custom ports

Testing: docker-compose.mount-test.active_config_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Volume "mount-tests_test_system_services_active_config"  Creating
 Volume "mount-tests_test_system_services_active_config"  Created
 Container netalertx-test-mount-active_config_unwritable  Creating
 Container netalertx-test-mount-active_config_unwritable  Created
Attaching to netalertx-test-mount-active_config_unwritable
netalertx-test-mount-active_config_unwritable  | [1;31m
netalertx-test-mount-active_config_unwritable  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-active_config_unwritable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-active_config_unwritable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-active_config_unwritable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-active_config_unwritable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-active_config_unwritable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-active_config_unwritable  | [0m   Network intruder and presence detector. 
netalertx-test-mount-active_config_unwritable  |    https://netalertx.com
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  | Startup pre-checks
netalertx-test-mount-active_config_unwritable  | --> storage permission.sh 
netalertx-test-mount-active_config_unwritable  | --> data migration.sh 
netalertx-test-mount-active_config_unwritable  | --> mounts.py 
netalertx-test-mount-active_config_unwritable  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-active_config_unwritable  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-active_config_unwritable  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-active_config_unwritable  |  /tmp/nginx/active-config | ✅| ❌|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     * /tmp/nginx/active-config error writing, performance issue
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-active_config_unwritable  |     configuration can be quite complex.
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     Review the documentation for a correct setup:
netalertx-test-mount-active_config_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-active_config_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | [0m
netalertx-test-mount-active_config_unwritable  | --> first run config.sh 
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-active_config_unwritable  |     this instance in production.
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | --> first run db.sh 
netalertx-test-mount-active_config_unwritable  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-active_config_unwritable  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | --> mandatory folders.sh 
netalertx-test-mount-active_config_unwritable  |     * Creating NetAlertX log directory.
netalertx-test-mount-active_config_unwritable  |     * Creating NetAlertX API cache.
netalertx-test-mount-active_config_unwritable  |     * Creating System services runtime directory.
netalertx-test-mount-active_config_unwritable  |     * Creating Plugins log.
netalertx-test-mount-active_config_unwritable  |     * Creating System services run log.
netalertx-test-mount-active_config_unwritable  |     * Creating System services run tmp.
netalertx-test-mount-active_config_unwritable  |     * Creating DB locked log.
netalertx-test-mount-active_config_unwritable  |     * Creating Execution queue log.
netalertx-test-mount-active_config_unwritable  | --> apply conf override.sh 
netalertx-test-mount-active_config_unwritable  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | --> writable config.sh 
netalertx-test-mount-active_config_unwritable  | --> nginx config.sh 
netalertx-test-mount-active_config_unwritable  | [0m[1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | ⚠️  ATTENTION: Unable to write to /tmp/nginx/active-config/netalertx.conf.
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     Ensure the conf.active mount is writable by the netalertx user before
netalertx-test-mount-active_config_unwritable  |     changing LISTEN_ADDR or PORT. Fix permissions:
netalertx-test-mount-active_config_unwritable  |         chown -R 20211:20211 /tmp/nginx/active-config
netalertx-test-mount-active_config_unwritable  |         find /tmp/nginx/active-config -type d -exec chmod 700 {} +
netalertx-test-mount-active_config_unwritable  |         find /tmp/nginx/active-config -type f -exec chmod 600 {} +
netalertx-test-mount-active_config_unwritable  | 
netalertx-test-mount-active_config_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/nginx-configuration-mount.md
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | [0m\033[1;31m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | ❌ NetAlertX startup aborted: critical failure in nginx config.sh.
netalertx-test-mount-active_config_unwritable  | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/troubleshooting.md
netalertx-test-mount-active_config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-active_config_unwritable  | \033[0m

[Knetalertx-test-mount-active_config_unwritable exited with code 1
File: docker-compose.mount-test.api_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper API mount
- NETALERTX_API shows as writable and mounted
- No configuration warnings for API path
- API data persistence works correctly

Testing: docker-compose.mount-test.api_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Container netalertx-test-mount-api_mounted  Creating
 Container netalertx-test-mount-api_mounted  Created
Attaching to netalertx-test-mount-api_mounted
netalertx-test-mount-api_mounted  | [1;31m
netalertx-test-mount-api_mounted  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-api_mounted  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-api_mounted  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-api_mounted  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-api_mounted  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-api_mounted  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-api_mounted  | [0m   Network intruder and presence detector. 
netalertx-test-mount-api_mounted  |    https://netalertx.com
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  | Startup pre-checks
netalertx-test-mount-api_mounted  | --> storage permission.sh 
netalertx-test-mount-api_mounted  | --> data migration.sh 
netalertx-test-mount-api_mounted  | --> mounts.py 
netalertx-test-mount-api_mounted  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-api_mounted  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-api_mounted  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_mounted  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_mounted  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_mounted  |  /tmp/api                 | ✅| ✅|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-api_mounted  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_mounted  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_mounted  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     * /tmp/api performance issue
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-api_mounted  |     configuration can be quite complex.
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     Review the documentation for a correct setup:
netalertx-test-mount-api_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-api_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | [0m
netalertx-test-mount-api_mounted  | --> first run config.sh 
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-api_mounted  |     this instance in production.
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | --> first run db.sh 
netalertx-test-mount-api_mounted  | [0mINFO: ALWAYS_FRESH_INSTALL enabled — removing existing database.
netalertx-test-mount-api_mounted  | [1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-api_mounted  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | --> mandatory folders.sh 
netalertx-test-mount-api_mounted  |     * Creating Plugins log.
netalertx-test-mount-api_mounted  |     * Creating System services run log.
netalertx-test-mount-api_mounted  |     * Creating System services run tmp.
netalertx-test-mount-api_mounted  |     * Creating DB locked log.
netalertx-test-mount-api_mounted  |     * Creating Execution queue log.
netalertx-test-mount-api_mounted  | --> apply conf override.sh 
netalertx-test-mount-api_mounted  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | --> writable config.sh 
netalertx-test-mount-api_mounted  | --> nginx config.sh 
netalertx-test-mount-api_mounted  | --> user netalertx.sh 
netalertx-test-mount-api_mounted  | --> host mode network.sh 
netalertx-test-mount-api_mounted  | --> layer 2 capabilities.sh 
netalertx-test-mount-api_mounted  | --> excessive capabilities.sh 
netalertx-test-mount-api_mounted  | --> appliance integrity.sh 
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_mounted  | 
netalertx-test-mount-api_mounted  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-api_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_mounted  | --> ports available.sh 
netalertx-test-mount-api_mounted  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-api_mounted  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_mounted  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-api_mounted  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-api_mounted  | [0mTraceback (most recent call last):
netalertx-test-mount-api_mounted  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-api_mounted  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-api_mounted  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-api_mounted  |     sys.exit(main())
netalertx-test-mount-api_mounted  |              ^^^^^^
netalertx-test-mount-api_mounted  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-api_mounted  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-api_mounted  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-api_mounted  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-api_mounted  |     for setting_name, value in settings_override.items():
netalertx-test-mount-api_mounted  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-api_mounted  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-api_mounted  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-api_mounted  Stopping
 Container netalertx-test-mount-api_mounted  Stopped

File: docker-compose.mount-test.api_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error for API directory
- NETALERTX_API shows as not mounted
- Mount error since API directory should be mounted for proper operation
- API functionality may be limited

Testing: docker-compose.mount-test.api_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-api_no-mount  Creating
 Container netalertx-test-mount-api_no-mount  Created
Attaching to netalertx-test-mount-api_no-mount
netalertx-test-mount-api_no-mount  | [1;31m
netalertx-test-mount-api_no-mount  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-api_no-mount  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-api_no-mount  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-api_no-mount  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-api_no-mount  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-api_no-mount  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-api_no-mount  | [0m   Network intruder and presence detector. 
netalertx-test-mount-api_no-mount  |    https://netalertx.com
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  | Startup pre-checks
netalertx-test-mount-api_no-mount  | --> storage permission.sh 
netalertx-test-mount-api_no-mount  | --> data migration.sh 
netalertx-test-mount-api_no-mount  | --> mounts.py 
netalertx-test-mount-api_no-mount  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-api_no-mount  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-api_no-mount  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_no-mount  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_no-mount  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_no-mount  |  /tmp/api                 | ✅| ✅|   ❌  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-api_no-mount  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_no-mount  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_no-mount  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     * /tmp/api not mounted, performance issue
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-api_no-mount  |     configuration can be quite complex.
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     Review the documentation for a correct setup:
netalertx-test-mount-api_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-api_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | [0m
netalertx-test-mount-api_no-mount  | --> first run config.sh 
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-api_no-mount  |     this instance in production.
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | --> first run db.sh 
netalertx-test-mount-api_no-mount  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-api_no-mount  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | --> mandatory folders.sh 
netalertx-test-mount-api_no-mount  |     * Creating Plugins log.
netalertx-test-mount-api_no-mount  |     * Creating System services run log.
netalertx-test-mount-api_no-mount  |     * Creating System services run tmp.
netalertx-test-mount-api_no-mount  |     * Creating DB locked log.
netalertx-test-mount-api_no-mount  |     * Creating Execution queue log.
netalertx-test-mount-api_no-mount  | --> apply conf override.sh 
netalertx-test-mount-api_no-mount  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | --> writable config.sh 
netalertx-test-mount-api_no-mount  | --> nginx config.sh 
netalertx-test-mount-api_no-mount  | --> user netalertx.sh 
netalertx-test-mount-api_no-mount  | --> host mode network.sh 
netalertx-test-mount-api_no-mount  | --> layer 2 capabilities.sh 
netalertx-test-mount-api_no-mount  | --> excessive capabilities.sh 
netalertx-test-mount-api_no-mount  | --> appliance integrity.sh 
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_no-mount  | 
netalertx-test-mount-api_no-mount  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-api_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_no-mount  | --> ports available.sh 
netalertx-test-mount-api_no-mount  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_no-mount  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-api_no-mount  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-api_no-mount  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-api_no-mount  | [0mTraceback (most recent call last):
netalertx-test-mount-api_no-mount  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-api_no-mount  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-api_no-mount  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-api_no-mount  |     sys.exit(main())
netalertx-test-mount-api_no-mount  |              ^^^^^^
netalertx-test-mount-api_no-mount  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-api_no-mount  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-api_no-mount  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-api_no-mount  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-api_no-mount  |     for setting_name, value in settings_override.items():
netalertx-test-mount-api_no-mount  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-api_no-mount  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-api_no-mount  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-api_no-mount  Stopping
 Container netalertx-test-mount-api_no-mount  Stopped

File: docker-compose.mount-test.api_ramdisk.yml
----------------------------------------
Expected outcome: Container shows performance warning for API on RAM disk
- NETALERTX_API shows as mounted on tmpfs (RAM disk)
- Performance issue warning since API data should be on persistent storage
- API data will be lost on container restart

Testing: docker-compose.mount-test.api_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-api_ramdisk  Creating
 Container netalertx-test-mount-api_ramdisk  Created
Attaching to netalertx-test-mount-api_ramdisk
netalertx-test-mount-api_ramdisk  | [1;31m
netalertx-test-mount-api_ramdisk  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-api_ramdisk  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-api_ramdisk  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-api_ramdisk  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-api_ramdisk  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-api_ramdisk  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-api_ramdisk  | [0m   Network intruder and presence detector. 
netalertx-test-mount-api_ramdisk  |    https://netalertx.com
netalertx-test-mount-api_ramdisk  | 
netalertx-test-mount-api_ramdisk  | 
netalertx-test-mount-api_ramdisk  | Startup pre-checks
netalertx-test-mount-api_ramdisk  | --> storage permission.sh 
netalertx-test-mount-api_ramdisk  | --> data migration.sh 
netalertx-test-mount-api_ramdisk  | --> mounts.py 
netalertx-test-mount-api_ramdisk  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-api_ramdisk  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-api_ramdisk  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_ramdisk  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_ramdisk  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_ramdisk  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_ramdisk  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_ramdisk  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_ramdisk  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_ramdisk  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_ramdisk  | --> first run config.sh 
netalertx-test-mount-api_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-api_ramdisk  | 
netalertx-test-mount-api_ramdisk  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-api_ramdisk  |     this instance in production.
netalertx-test-mount-api_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | --> first run db.sh 
netalertx-test-mount-api_ramdisk  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-api_ramdisk  | 
netalertx-test-mount-api_ramdisk  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-api_ramdisk  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-api_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | --> mandatory folders.sh 
netalertx-test-mount-api_ramdisk  |     * Creating NetAlertX log directory.
netalertx-test-mount-api_ramdisk  |     * Creating NetAlertX API cache.
netalertx-test-mount-api_ramdisk  |     * Creating System services runtime directory.
netalertx-test-mount-api_ramdisk  |     * Creating nginx active configuration directory.
netalertx-test-mount-api_ramdisk  |     * Creating Plugins log.
netalertx-test-mount-api_ramdisk  |     * Creating System services run log.
netalertx-test-mount-api_ramdisk  |     * Creating System services run tmp.
netalertx-test-mount-api_ramdisk  |     * Creating DB locked log.
netalertx-test-mount-api_ramdisk  |     * Creating Execution queue log.
netalertx-test-mount-api_ramdisk  | --> apply conf override.sh 
netalertx-test-mount-api_ramdisk  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-api_ramdisk  | 
netalertx-test-mount-api_ramdisk  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-api_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | --> writable config.sh 
netalertx-test-mount-api_ramdisk  | --> nginx config.sh 
netalertx-test-mount-api_ramdisk  | --> user netalertx.sh 
netalertx-test-mount-api_ramdisk  | --> host mode network.sh 
netalertx-test-mount-api_ramdisk  | --> layer 2 capabilities.sh 
netalertx-test-mount-api_ramdisk  | --> excessive capabilities.sh 
netalertx-test-mount-api_ramdisk  | --> appliance integrity.sh 
netalertx-test-mount-api_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-api_ramdisk  | 
netalertx-test-mount-api_ramdisk  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-api_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-api_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_ramdisk  | --> ports available.sh 
netalertx-test-mount-api_ramdisk  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-api_ramdisk  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-api_ramdisk  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-api_ramdisk  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-api_ramdisk  | [0mTraceback (most recent call last):
netalertx-test-mount-api_ramdisk  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-api_ramdisk  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-api_ramdisk  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-api_ramdisk  |     sys.exit(main())
netalertx-test-mount-api_ramdisk  |              ^^^^^^
netalertx-test-mount-api_ramdisk  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-api_ramdisk  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-api_ramdisk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-api_ramdisk  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-api_ramdisk  |     for setting_name, value in settings_override.items():
netalertx-test-mount-api_ramdisk  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-api_ramdisk  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-api_ramdisk  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-api_ramdisk  Stopping
 Container netalertx-test-mount-api_ramdisk  Stopped

File: docker-compose.mount-test.api_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable API partition
- NETALERTX_API shows as mounted but unwritable (❌ in Writeable column)
- API directory must be writable for proper operation
- Container startup fails because API functionality cannot work without write access

Testing: docker-compose.mount-test.api_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Volume "mount-tests_test_netalertx_api"  Creating
 Volume "mount-tests_test_netalertx_api"  Created
 Container netalertx-test-mount-api_unwritable  Creating
 Container netalertx-test-mount-api_unwritable  Created
Attaching to netalertx-test-mount-api_unwritable
netalertx-test-mount-api_unwritable  | [1;31m
netalertx-test-mount-api_unwritable  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-api_unwritable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-api_unwritable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-api_unwritable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-api_unwritable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-api_unwritable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-api_unwritable  | [0m   Network intruder and presence detector. 
netalertx-test-mount-api_unwritable  |    https://netalertx.com
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  | Startup pre-checks
netalertx-test-mount-api_unwritable  | --> storage permission.sh 
netalertx-test-mount-api_unwritable  | --> data migration.sh 
netalertx-test-mount-api_unwritable  | --> mounts.py 
netalertx-test-mount-api_unwritable  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-api_unwritable  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-api_unwritable  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_unwritable  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-api_unwritable  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_unwritable  |  /tmp/api                 | ✅| ❌|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-api_unwritable  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_unwritable  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_unwritable  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  |     * /tmp/api error writing, performance issue
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-api_unwritable  |     configuration can be quite complex.
netalertx-test-mount-api_unwritable  | 
netalertx-test-mount-api_unwritable  |     Review the documentation for a correct setup:
netalertx-test-mount-api_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-api_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-api_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable  | [0m
netalertx-test-mount-api_unwritable  | \033[1;31m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable  | ❌ NetAlertX startup aborted: critical failure in mounts.py.
netalertx-test-mount-api_unwritable  | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/troubleshooting.md
netalertx-test-mount-api_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-api_unwritable  | \033[0m

[Knetalertx-test-mount-api_unwritable exited with code 1
File: docker-compose.mount-test.config_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper config mount
- NETALERTX_CONFIG shows as writable and mounted
- No configuration warnings for config path
- Configuration persistence works correctly

Testing: docker-compose.mount-test.config_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-config_mounted  Creating
 Container netalertx-test-mount-config_mounted  Created
Attaching to netalertx-test-mount-config_mounted
netalertx-test-mount-config_mounted  | [1;31m
netalertx-test-mount-config_mounted  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-config_mounted  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-config_mounted  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-config_mounted  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-config_mounted  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-config_mounted  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-config_mounted  | [0m   Network intruder and presence detector. 
netalertx-test-mount-config_mounted  |    https://netalertx.com
netalertx-test-mount-config_mounted  | 
netalertx-test-mount-config_mounted  | 
netalertx-test-mount-config_mounted  | Startup pre-checks
netalertx-test-mount-config_mounted  | --> storage permission.sh 
netalertx-test-mount-config_mounted  | --> data migration.sh 
netalertx-test-mount-config_mounted  | --> mounts.py 
netalertx-test-mount-config_mounted  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-config_mounted  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-config_mounted  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-config_mounted  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-config_mounted  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-config_mounted  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_mounted  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_mounted  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_mounted  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_mounted  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_mounted  | --> first run config.sh 
netalertx-test-mount-config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-config_mounted  | 
netalertx-test-mount-config_mounted  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-config_mounted  |     this instance in production.
netalertx-test-mount-config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | --> first run db.sh 
netalertx-test-mount-config_mounted  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-config_mounted  | 
netalertx-test-mount-config_mounted  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-config_mounted  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | --> mandatory folders.sh 
netalertx-test-mount-config_mounted  |     * Creating NetAlertX log directory.
netalertx-test-mount-config_mounted  |     * Creating NetAlertX API cache.
netalertx-test-mount-config_mounted  |     * Creating System services runtime directory.
netalertx-test-mount-config_mounted  |     * Creating nginx active configuration directory.
netalertx-test-mount-config_mounted  |     * Creating Plugins log.
netalertx-test-mount-config_mounted  |     * Creating System services run log.
netalertx-test-mount-config_mounted  |     * Creating System services run tmp.
netalertx-test-mount-config_mounted  |     * Creating DB locked log.
netalertx-test-mount-config_mounted  |     * Creating Execution queue log.
netalertx-test-mount-config_mounted  | --> apply conf override.sh 
netalertx-test-mount-config_mounted  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-config_mounted  | 
netalertx-test-mount-config_mounted  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | --> writable config.sh 
netalertx-test-mount-config_mounted  | --> nginx config.sh 
netalertx-test-mount-config_mounted  | --> user netalertx.sh 
netalertx-test-mount-config_mounted  | --> host mode network.sh 
netalertx-test-mount-config_mounted  | --> layer 2 capabilities.sh 
netalertx-test-mount-config_mounted  | --> excessive capabilities.sh 
netalertx-test-mount-config_mounted  | --> appliance integrity.sh 
netalertx-test-mount-config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-config_mounted  | 
netalertx-test-mount-config_mounted  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-config_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-config_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_mounted  | --> ports available.sh 
netalertx-test-mount-config_mounted  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-config_mounted  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-config_mounted  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-config_mounted  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-config_mounted  | [0mTraceback (most recent call last):
netalertx-test-mount-config_mounted  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-config_mounted  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-config_mounted  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-config_mounted  |     sys.exit(main())
netalertx-test-mount-config_mounted  |              ^^^^^^
netalertx-test-mount-config_mounted  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-config_mounted  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-config_mounted  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-config_mounted  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-config_mounted  |     for setting_name, value in settings_override.items():
netalertx-test-mount-config_mounted  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-config_mounted  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-config_mounted  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-config_mounted  Stopping
 Container netalertx-test-mount-config_mounted  Stopped

File: docker-compose.mount-test.config_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error for config directory
- NETALERTX_CONFIG shows as not mounted
- Mount error since config directory should be mounted for proper operation
- Configuration may not persist across restarts

Testing: docker-compose.mount-test.config_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Container netalertx-test-mount-config_no-mount  Creating
 Container netalertx-test-mount-config_no-mount  Created
Attaching to netalertx-test-mount-config_no-mount
netalertx-test-mount-config_no-mount  | [1;31m
netalertx-test-mount-config_no-mount  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-config_no-mount  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-config_no-mount  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-config_no-mount  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-config_no-mount  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-config_no-mount  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-config_no-mount  | [0m   Network intruder and presence detector. 
netalertx-test-mount-config_no-mount  |    https://netalertx.com
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  | Startup pre-checks
netalertx-test-mount-config_no-mount  | --> storage permission.sh 
netalertx-test-mount-config_no-mount  | --> data migration.sh 
netalertx-test-mount-config_no-mount  | --> mounts.py 
netalertx-test-mount-config_no-mount  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-config_no-mount  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-config_no-mount  |  /data                    | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-config_no-mount  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-config_no-mount  |  /data/config             | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-config_no-mount  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_no-mount  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_no-mount  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_no-mount  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     * /data not mounted, risk of dataloss
netalertx-test-mount-config_no-mount  |     * /data/config not mounted, risk of dataloss
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-config_no-mount  |     configuration can be quite complex.
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     Review the documentation for a correct setup:
netalertx-test-mount-config_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-config_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | [0m
netalertx-test-mount-config_no-mount  | --> first run config.sh 
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-config_no-mount  |     this instance in production.
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | --> first run db.sh 
netalertx-test-mount-config_no-mount  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-config_no-mount  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | --> mandatory folders.sh 
netalertx-test-mount-config_no-mount  |     * Creating Plugins log.
netalertx-test-mount-config_no-mount  |     * Creating System services run log.
netalertx-test-mount-config_no-mount  |     * Creating System services run tmp.
netalertx-test-mount-config_no-mount  |     * Creating DB locked log.
netalertx-test-mount-config_no-mount  |     * Creating Execution queue log.
netalertx-test-mount-config_no-mount  | --> apply conf override.sh 
netalertx-test-mount-config_no-mount  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | --> writable config.sh 
netalertx-test-mount-config_no-mount  | --> nginx config.sh 
netalertx-test-mount-config_no-mount  | --> user netalertx.sh 
netalertx-test-mount-config_no-mount  | --> host mode network.sh 
netalertx-test-mount-config_no-mount  | --> layer 2 capabilities.sh 
netalertx-test-mount-config_no-mount  | --> excessive capabilities.sh 
netalertx-test-mount-config_no-mount  | --> appliance integrity.sh 
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-config_no-mount  | 
netalertx-test-mount-config_no-mount  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-config_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-config_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_no-mount  | --> ports available.sh 
netalertx-test-mount-config_no-mount  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-config_no-mount  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-config_no-mount  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-config_no-mount  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-config_no-mount  | [0mTraceback (most recent call last):
netalertx-test-mount-config_no-mount  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-config_no-mount  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-config_no-mount  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-config_no-mount  |     sys.exit(main())
netalertx-test-mount-config_no-mount  |              ^^^^^^
netalertx-test-mount-config_no-mount  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-config_no-mount  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-config_no-mount  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-config_no-mount  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-config_no-mount  |     for setting_name, value in settings_override.items():
netalertx-test-mount-config_no-mount  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-config_no-mount  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-config_no-mount  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-config_no-mount  Stopping
 Container netalertx-test-mount-config_no-mount  Stopped

File: docker-compose.mount-test.config_ramdisk.yml
----------------------------------------
Expected outcome: Container shows dataloss risk warning for config on RAM disk
- NETALERTX_CONFIG shows as mounted on tmpfs (RAM disk)
- Dataloss risk warning since config data should be persistent
- Configuration will be lost on container restart

Testing: docker-compose.mount-test.config_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Container netalertx-test-mount-config_ramdisk  Creating
 Container netalertx-test-mount-config_ramdisk  Created
Attaching to netalertx-test-mount-config_ramdisk
netalertx-test-mount-config_ramdisk  | [1;31m
netalertx-test-mount-config_ramdisk  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-config_ramdisk  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-config_ramdisk  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-config_ramdisk  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-config_ramdisk  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-config_ramdisk  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-config_ramdisk  | [0m   Network intruder and presence detector. 
netalertx-test-mount-config_ramdisk  |    https://netalertx.com
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  | Startup pre-checks
netalertx-test-mount-config_ramdisk  | --> storage permission.sh 
netalertx-test-mount-config_ramdisk  | --> data migration.sh 
netalertx-test-mount-config_ramdisk  | --> mounts.py 
netalertx-test-mount-config_ramdisk  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-config_ramdisk  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-config_ramdisk  |  /data                    | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-config_ramdisk  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-config_ramdisk  |  /data/config             | ✅| ✅|   ✅  |    ❌   |      ➖     |    ❌     
netalertx-test-mount-config_ramdisk  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_ramdisk  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_ramdisk  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_ramdisk  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     * /data not mounted, risk of dataloss
netalertx-test-mount-config_ramdisk  |     * /data/config risk of dataloss
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-config_ramdisk  |     configuration can be quite complex.
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     Review the documentation for a correct setup:
netalertx-test-mount-config_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-config_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | [0m
netalertx-test-mount-config_ramdisk  | --> first run config.sh 
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-config_ramdisk  |     this instance in production.
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | --> first run db.sh 
netalertx-test-mount-config_ramdisk  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-config_ramdisk  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | --> mandatory folders.sh 
netalertx-test-mount-config_ramdisk  |     * Creating Plugins log.
netalertx-test-mount-config_ramdisk  |     * Creating System services run log.
netalertx-test-mount-config_ramdisk  |     * Creating System services run tmp.
netalertx-test-mount-config_ramdisk  |     * Creating DB locked log.
netalertx-test-mount-config_ramdisk  |     * Creating Execution queue log.
netalertx-test-mount-config_ramdisk  | --> apply conf override.sh 
netalertx-test-mount-config_ramdisk  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | --> writable config.sh 
netalertx-test-mount-config_ramdisk  | --> nginx config.sh 
netalertx-test-mount-config_ramdisk  | --> user netalertx.sh 
netalertx-test-mount-config_ramdisk  | --> host mode network.sh 
netalertx-test-mount-config_ramdisk  | --> layer 2 capabilities.sh 
netalertx-test-mount-config_ramdisk  | --> excessive capabilities.sh 
netalertx-test-mount-config_ramdisk  | --> appliance integrity.sh 
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-config_ramdisk  | 
netalertx-test-mount-config_ramdisk  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-config_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-config_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_ramdisk  | --> ports available.sh 
netalertx-test-mount-config_ramdisk  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-config_ramdisk  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-config_ramdisk  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-config_ramdisk  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-config_ramdisk  | [0mTraceback (most recent call last):
netalertx-test-mount-config_ramdisk  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-config_ramdisk  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-config_ramdisk  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-config_ramdisk  |     sys.exit(main())
netalertx-test-mount-config_ramdisk  |              ^^^^^^
netalertx-test-mount-config_ramdisk  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-config_ramdisk  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-config_ramdisk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-config_ramdisk  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-config_ramdisk  |     for setting_name, value in settings_override.items():
netalertx-test-mount-config_ramdisk  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-config_ramdisk  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-config_ramdisk  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-config_ramdisk  Stopping
 Container netalertx-test-mount-config_ramdisk  Stopped

File: docker-compose.mount-test.config_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable config partition
- NETALERTX_CONFIG shows as mounted but unwritable (❌ in Writeable column)
- 30-writable-config.sh detects permission error and exits with code 1
- Container startup fails because config files cannot be written to

Testing: docker-compose.mount-test.config_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_config"  Creating
 Volume "mount-tests_test_netalertx_config"  Created
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Container netalertx-test-mount-config_unwritable  Creating
 Container netalertx-test-mount-config_unwritable  Created
Attaching to netalertx-test-mount-config_unwritable
netalertx-test-mount-config_unwritable  | [1;31m
netalertx-test-mount-config_unwritable  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-config_unwritable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-config_unwritable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-config_unwritable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-config_unwritable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-config_unwritable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-config_unwritable  | [0m   Network intruder and presence detector. 
netalertx-test-mount-config_unwritable  |    https://netalertx.com
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  | Startup pre-checks
netalertx-test-mount-config_unwritable  | --> storage permission.sh 
netalertx-test-mount-config_unwritable  | --> data migration.sh 
netalertx-test-mount-config_unwritable  | --> mounts.py 
netalertx-test-mount-config_unwritable  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-config_unwritable  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-config_unwritable  |  /data                    | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-config_unwritable  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-config_unwritable  |  /data/config             | ✅| ❌|   ✅  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-config_unwritable  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_unwritable  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_unwritable  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_unwritable  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_unwritable  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  |     * /data not mounted, risk of dataloss
netalertx-test-mount-config_unwritable  |     * /data/config error writing, risk of dataloss
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-config_unwritable  |     configuration can be quite complex.
netalertx-test-mount-config_unwritable  | 
netalertx-test-mount-config_unwritable  |     Review the documentation for a correct setup:
netalertx-test-mount-config_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-config_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_unwritable  | [0m
netalertx-test-mount-config_unwritable  | \033[1;31m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_unwritable  | ❌ NetAlertX startup aborted: critical failure in mounts.py.
netalertx-test-mount-config_unwritable  | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/troubleshooting.md
netalertx-test-mount-config_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-config_unwritable  | \033[0m

[Knetalertx-test-mount-config_unwritable exited with code 1
File: docker-compose.mount-test.db_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper database mount
- NETALERTX_DB shows as writable and mounted
- No configuration warnings for database path
- Database persistence works correctly

Testing: docker-compose.mount-test.db_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-db_mounted  Creating
 Container netalertx-test-mount-db_mounted  Created
Attaching to netalertx-test-mount-db_mounted
netalertx-test-mount-db_mounted  | [1;31m
netalertx-test-mount-db_mounted  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-db_mounted  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-db_mounted  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-db_mounted  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-db_mounted  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-db_mounted  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-db_mounted  | [0m   Network intruder and presence detector. 
netalertx-test-mount-db_mounted  |    https://netalertx.com
netalertx-test-mount-db_mounted  | 
netalertx-test-mount-db_mounted  | 
netalertx-test-mount-db_mounted  | Startup pre-checks
netalertx-test-mount-db_mounted  | --> storage permission.sh 
netalertx-test-mount-db_mounted  | --> data migration.sh 
netalertx-test-mount-db_mounted  | --> mounts.py 
netalertx-test-mount-db_mounted  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-db_mounted  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-db_mounted  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-db_mounted  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-db_mounted  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-db_mounted  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_mounted  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_mounted  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_mounted  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_mounted  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_mounted  | --> first run config.sh 
netalertx-test-mount-db_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-db_mounted  | 
netalertx-test-mount-db_mounted  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-db_mounted  |     this instance in production.
netalertx-test-mount-db_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | --> first run db.sh 
netalertx-test-mount-db_mounted  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-db_mounted  | 
netalertx-test-mount-db_mounted  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-db_mounted  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-db_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | --> mandatory folders.sh 
netalertx-test-mount-db_mounted  |     * Creating NetAlertX log directory.
netalertx-test-mount-db_mounted  |     * Creating NetAlertX API cache.
netalertx-test-mount-db_mounted  |     * Creating System services runtime directory.
netalertx-test-mount-db_mounted  |     * Creating nginx active configuration directory.
netalertx-test-mount-db_mounted  |     * Creating Plugins log.
netalertx-test-mount-db_mounted  |     * Creating System services run log.
netalertx-test-mount-db_mounted  |     * Creating System services run tmp.
netalertx-test-mount-db_mounted  |     * Creating DB locked log.
netalertx-test-mount-db_mounted  |     * Creating Execution queue log.
netalertx-test-mount-db_mounted  | --> apply conf override.sh 
netalertx-test-mount-db_mounted  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-db_mounted  | 
netalertx-test-mount-db_mounted  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-db_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | --> writable config.sh 
netalertx-test-mount-db_mounted  | --> nginx config.sh 
netalertx-test-mount-db_mounted  | --> user netalertx.sh 
netalertx-test-mount-db_mounted  | --> host mode network.sh 
netalertx-test-mount-db_mounted  | --> layer 2 capabilities.sh 
netalertx-test-mount-db_mounted  | --> excessive capabilities.sh 
netalertx-test-mount-db_mounted  | --> appliance integrity.sh 
netalertx-test-mount-db_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-db_mounted  | 
netalertx-test-mount-db_mounted  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-db_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-db_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_mounted  | --> ports available.sh 
netalertx-test-mount-db_mounted  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-db_mounted  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-db_mounted  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-db_mounted  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-db_mounted  | [0mTraceback (most recent call last):
netalertx-test-mount-db_mounted  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-db_mounted  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-db_mounted  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-db_mounted  |     sys.exit(main())
netalertx-test-mount-db_mounted  |              ^^^^^^
netalertx-test-mount-db_mounted  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-db_mounted  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-db_mounted  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-db_mounted  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-db_mounted  |     for setting_name, value in settings_override.items():
netalertx-test-mount-db_mounted  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-db_mounted  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-db_mounted  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-db_mounted  Stopping
 Container netalertx-test-mount-db_mounted  Stopped

File: docker-compose.mount-test.db_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error warning but continues running
- NETALERTX_DB shows as not mounted (❌ in Mount column) but path gets created
- Warning message displayed about configuration issues
- Container continues because database directory can be created in writable filesystem

Testing: docker-compose.mount-test.db_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-db_no-mount  Creating
 Container netalertx-test-mount-db_no-mount  Created
Attaching to netalertx-test-mount-db_no-mount
netalertx-test-mount-db_no-mount  | [1;31m
netalertx-test-mount-db_no-mount  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-db_no-mount  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-db_no-mount  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-db_no-mount  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-db_no-mount  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-db_no-mount  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-db_no-mount  | [0m   Network intruder and presence detector. 
netalertx-test-mount-db_no-mount  |    https://netalertx.com
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  | Startup pre-checks
netalertx-test-mount-db_no-mount  | --> storage permission.sh 
netalertx-test-mount-db_no-mount  | --> data migration.sh 
netalertx-test-mount-db_no-mount  | --> mounts.py 
netalertx-test-mount-db_no-mount  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-db_no-mount  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-db_no-mount  |  /data                    | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-db_no-mount  |  /data/db                 | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-db_no-mount  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-db_no-mount  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_no-mount  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_no-mount  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_no-mount  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     * /data not mounted, risk of dataloss
netalertx-test-mount-db_no-mount  |     * /data/db not mounted, risk of dataloss
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-db_no-mount  |     configuration can be quite complex.
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     Review the documentation for a correct setup:
netalertx-test-mount-db_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-db_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | [0m
netalertx-test-mount-db_no-mount  | --> first run config.sh 
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-db_no-mount  |     this instance in production.
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | --> first run db.sh 
netalertx-test-mount-db_no-mount  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-db_no-mount  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | --> mandatory folders.sh 
netalertx-test-mount-db_no-mount  |     * Creating Plugins log.
netalertx-test-mount-db_no-mount  |     * Creating System services run log.
netalertx-test-mount-db_no-mount  |     * Creating System services run tmp.
netalertx-test-mount-db_no-mount  |     * Creating DB locked log.
netalertx-test-mount-db_no-mount  |     * Creating Execution queue log.
netalertx-test-mount-db_no-mount  | --> apply conf override.sh 
netalertx-test-mount-db_no-mount  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | --> writable config.sh 
netalertx-test-mount-db_no-mount  | --> nginx config.sh 
netalertx-test-mount-db_no-mount  | --> user netalertx.sh 
netalertx-test-mount-db_no-mount  | --> host mode network.sh 
netalertx-test-mount-db_no-mount  | --> layer 2 capabilities.sh 
netalertx-test-mount-db_no-mount  | --> excessive capabilities.sh 
netalertx-test-mount-db_no-mount  | --> appliance integrity.sh 
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-db_no-mount  | 
netalertx-test-mount-db_no-mount  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-db_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-db_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_no-mount  | --> ports available.sh 
netalertx-test-mount-db_no-mount  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-db_no-mount  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-db_no-mount  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-db_no-mount  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-db_no-mount  | [0mTraceback (most recent call last):
netalertx-test-mount-db_no-mount  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-db_no-mount  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-db_no-mount  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-db_no-mount  |     sys.exit(main())
netalertx-test-mount-db_no-mount  |              ^^^^^^
netalertx-test-mount-db_no-mount  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-db_no-mount  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-db_no-mount  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-db_no-mount  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-db_no-mount  |     for setting_name, value in settings_override.items():
netalertx-test-mount-db_no-mount  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-db_no-mount  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-db_no-mount  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-db_no-mount  Stopping
 Container netalertx-test-mount-db_no-mount  Stopped

File: docker-compose.mount-test.db_ramdisk.yml
----------------------------------------
Expected outcome: Container shows dataloss risk warning for database on RAM disk
- NETALERTX_DB shows as mounted on tmpfs (RAM disk)
- Dataloss risk warning since database should be persistent
- Database will be lost on container restart

Testing: docker-compose.mount-test.db_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-db_ramdisk  Creating
 Container netalertx-test-mount-db_ramdisk  Created
Attaching to netalertx-test-mount-db_ramdisk
netalertx-test-mount-db_ramdisk  | [1;31m
netalertx-test-mount-db_ramdisk  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-db_ramdisk  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-db_ramdisk  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-db_ramdisk  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-db_ramdisk  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-db_ramdisk  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-db_ramdisk  | [0m   Network intruder and presence detector. 
netalertx-test-mount-db_ramdisk  |    https://netalertx.com
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  | Startup pre-checks
netalertx-test-mount-db_ramdisk  | --> storage permission.sh 
netalertx-test-mount-db_ramdisk  | --> data migration.sh 
netalertx-test-mount-db_ramdisk  | --> mounts.py 
netalertx-test-mount-db_ramdisk  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-db_ramdisk  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-db_ramdisk  |  /data                    | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-db_ramdisk  |  /data/db                 | ✅| ✅|   ✅  |    ❌   |      ➖     |    ❌     
netalertx-test-mount-db_ramdisk  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-db_ramdisk  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_ramdisk  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_ramdisk  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_ramdisk  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     * /data not mounted, risk of dataloss
netalertx-test-mount-db_ramdisk  |     * /data/db risk of dataloss
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-db_ramdisk  |     configuration can be quite complex.
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     Review the documentation for a correct setup:
netalertx-test-mount-db_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-db_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | [0m
netalertx-test-mount-db_ramdisk  | --> first run config.sh 
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-db_ramdisk  |     this instance in production.
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | --> first run db.sh 
netalertx-test-mount-db_ramdisk  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-db_ramdisk  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | --> mandatory folders.sh 
netalertx-test-mount-db_ramdisk  |     * Creating Plugins log.
netalertx-test-mount-db_ramdisk  |     * Creating System services run log.
netalertx-test-mount-db_ramdisk  |     * Creating System services run tmp.
netalertx-test-mount-db_ramdisk  |     * Creating DB locked log.
netalertx-test-mount-db_ramdisk  |     * Creating Execution queue log.
netalertx-test-mount-db_ramdisk  | --> apply conf override.sh 
netalertx-test-mount-db_ramdisk  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | --> writable config.sh 
netalertx-test-mount-db_ramdisk  | --> nginx config.sh 
netalertx-test-mount-db_ramdisk  | --> user netalertx.sh 
netalertx-test-mount-db_ramdisk  | --> host mode network.sh 
netalertx-test-mount-db_ramdisk  | --> layer 2 capabilities.sh 
netalertx-test-mount-db_ramdisk  | --> excessive capabilities.sh 
netalertx-test-mount-db_ramdisk  | --> appliance integrity.sh 
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-db_ramdisk  | 
netalertx-test-mount-db_ramdisk  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-db_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-db_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_ramdisk  | --> ports available.sh 
netalertx-test-mount-db_ramdisk  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-db_ramdisk  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-db_ramdisk  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-db_ramdisk  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-db_ramdisk  | [0mTraceback (most recent call last):
netalertx-test-mount-db_ramdisk  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-db_ramdisk  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-db_ramdisk  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-db_ramdisk  |     sys.exit(main())
netalertx-test-mount-db_ramdisk  |              ^^^^^^
netalertx-test-mount-db_ramdisk  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-db_ramdisk  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-db_ramdisk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-db_ramdisk  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-db_ramdisk  |     for setting_name, value in settings_override.items():
netalertx-test-mount-db_ramdisk  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-db_ramdisk  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-db_ramdisk  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-db_ramdisk  Stopping
 Container netalertx-test-mount-db_ramdisk  Stopped

File: docker-compose.mount-test.db_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable database partition
- NETALERTX_DB shows as mounted but unwritable (❌ in Writeable column)
- 30-writable-config.sh detects permission error and exits with code 1
- Container startup fails because database files cannot be written to

Testing: docker-compose.mount-test.db_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_db"  Creating
 Volume "mount-tests_test_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-db_unwritable  Creating
 Container netalertx-test-mount-db_unwritable  Created
Attaching to netalertx-test-mount-db_unwritable
netalertx-test-mount-db_unwritable  | [1;31m
netalertx-test-mount-db_unwritable  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-db_unwritable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-db_unwritable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-db_unwritable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-db_unwritable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-db_unwritable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-db_unwritable  | [0m   Network intruder and presence detector. 
netalertx-test-mount-db_unwritable  |    https://netalertx.com
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  | Startup pre-checks
netalertx-test-mount-db_unwritable  | --> storage permission.sh 
netalertx-test-mount-db_unwritable  | --> data migration.sh 
netalertx-test-mount-db_unwritable  | --> mounts.py 
netalertx-test-mount-db_unwritable  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-db_unwritable  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-db_unwritable  |  /data                    | ✅| ✅|   ❌  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-db_unwritable  |  /data/db                 | ✅| ❌|   ✅  |    ➖   |      ➖     |    ❌     
netalertx-test-mount-db_unwritable  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-db_unwritable  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_unwritable  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_unwritable  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_unwritable  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_unwritable  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  |     * /data not mounted, risk of dataloss
netalertx-test-mount-db_unwritable  |     * /data/db error writing, risk of dataloss
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-db_unwritable  |     configuration can be quite complex.
netalertx-test-mount-db_unwritable  | 
netalertx-test-mount-db_unwritable  |     Review the documentation for a correct setup:
netalertx-test-mount-db_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-db_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-db_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_unwritable  | [0m
netalertx-test-mount-db_unwritable  | \033[1;31m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_unwritable  | ❌ NetAlertX startup aborted: critical failure in mounts.py.
netalertx-test-mount-db_unwritable  | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/troubleshooting.md
netalertx-test-mount-db_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-db_unwritable  | \033[0m

[Knetalertx-test-mount-db_unwritable exited with code 1
File: docker-compose.mount-test.log_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper log mount
- NETALERTX_LOG shows as mounted and writable
- No mount warnings since logs can be non-persistent
- Container starts normally with logging enabled

Testing: docker-compose.mount-test.log_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Volume "mount-tests_test_netalertx_log"  Creating
 Volume "mount-tests_test_netalertx_log"  Created
 Container netalertx-test-mount-log_mounted  Creating
 Container netalertx-test-mount-log_mounted  Created
Attaching to netalertx-test-mount-log_mounted
netalertx-test-mount-log_mounted  | [1;31m
netalertx-test-mount-log_mounted  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-log_mounted  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-log_mounted  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-log_mounted  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-log_mounted  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-log_mounted  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-log_mounted  | [0m   Network intruder and presence detector. 
netalertx-test-mount-log_mounted  |    https://netalertx.com
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  | Startup pre-checks
netalertx-test-mount-log_mounted  | --> storage permission.sh 
netalertx-test-mount-log_mounted  | --> data migration.sh 
netalertx-test-mount-log_mounted  | --> mounts.py 
netalertx-test-mount-log_mounted  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-log_mounted  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-log_mounted  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_mounted  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_mounted  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_mounted  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_mounted  |  /tmp/log                 | ✅| ✅|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-log_mounted  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_mounted  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     * /tmp/log performance issue
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-log_mounted  |     configuration can be quite complex.
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     Review the documentation for a correct setup:
netalertx-test-mount-log_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-log_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | [0m
netalertx-test-mount-log_mounted  | --> first run config.sh 
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-log_mounted  |     this instance in production.
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | --> first run db.sh 
netalertx-test-mount-log_mounted  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-log_mounted  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | --> mandatory folders.sh 
netalertx-test-mount-log_mounted  |     * Creating System services run log.
netalertx-test-mount-log_mounted  |     * Creating System services run tmp.
netalertx-test-mount-log_mounted  | --> apply conf override.sh 
netalertx-test-mount-log_mounted  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | --> writable config.sh 
netalertx-test-mount-log_mounted  | --> nginx config.sh 
netalertx-test-mount-log_mounted  | --> user netalertx.sh 
netalertx-test-mount-log_mounted  | --> host mode network.sh 
netalertx-test-mount-log_mounted  | --> layer 2 capabilities.sh 
netalertx-test-mount-log_mounted  | --> excessive capabilities.sh 
netalertx-test-mount-log_mounted  | --> appliance integrity.sh 
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-log_mounted  | 
netalertx-test-mount-log_mounted  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-log_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-log_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_mounted  | --> ports available.sh 
netalertx-test-mount-log_mounted  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-log_mounted  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-log_mounted  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-log_mounted  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-log_mounted  | [0mTraceback (most recent call last):
netalertx-test-mount-log_mounted  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-log_mounted  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-log_mounted  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-log_mounted  |     sys.exit(main())
netalertx-test-mount-log_mounted  |              ^^^^^^
netalertx-test-mount-log_mounted  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-log_mounted  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-log_mounted  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-log_mounted  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-log_mounted  |     for setting_name, value in settings_override.items():
netalertx-test-mount-log_mounted  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-log_mounted  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-log_mounted  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-log_mounted  Stopping
 Container netalertx-test-mount-log_mounted  Stopped

File: docker-compose.mount-test.log_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error warning but continues running
- NETALERTX_LOG shows as not mounted (❌ in Mount column)
- Warning message displayed about configuration issues
- Container continues to run despite the mount error

Testing: docker-compose.mount-test.log_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Container netalertx-test-mount-log_no-mount  Creating
 Container netalertx-test-mount-log_no-mount  Created
Attaching to netalertx-test-mount-log_no-mount
netalertx-test-mount-log_no-mount  | [1;31m
netalertx-test-mount-log_no-mount  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-log_no-mount  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-log_no-mount  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-log_no-mount  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-log_no-mount  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-log_no-mount  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-log_no-mount  | [0m   Network intruder and presence detector. 
netalertx-test-mount-log_no-mount  |    https://netalertx.com
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  | Startup pre-checks
netalertx-test-mount-log_no-mount  | --> storage permission.sh 
netalertx-test-mount-log_no-mount  | --> data migration.sh 
netalertx-test-mount-log_no-mount  | --> mounts.py 
netalertx-test-mount-log_no-mount  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-log_no-mount  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-log_no-mount  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_no-mount  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_no-mount  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_no-mount  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_no-mount  |  /tmp/log                 | ✅| ✅|   ❌  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-log_no-mount  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_no-mount  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     * /tmp/log not mounted, performance issue
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-log_no-mount  |     configuration can be quite complex.
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     Review the documentation for a correct setup:
netalertx-test-mount-log_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-log_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | [0m
netalertx-test-mount-log_no-mount  | --> first run config.sh 
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-log_no-mount  |     this instance in production.
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | --> first run db.sh 
netalertx-test-mount-log_no-mount  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-log_no-mount  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | --> mandatory folders.sh 
netalertx-test-mount-log_no-mount  |     * Creating System services run log.
netalertx-test-mount-log_no-mount  |     * Creating System services run tmp.
netalertx-test-mount-log_no-mount  | --> apply conf override.sh 
netalertx-test-mount-log_no-mount  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | --> writable config.sh 
netalertx-test-mount-log_no-mount  | --> nginx config.sh 
netalertx-test-mount-log_no-mount  | --> user netalertx.sh 
netalertx-test-mount-log_no-mount  | --> host mode network.sh 
netalertx-test-mount-log_no-mount  | --> layer 2 capabilities.sh 
netalertx-test-mount-log_no-mount  | --> excessive capabilities.sh 
netalertx-test-mount-log_no-mount  | --> appliance integrity.sh 
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-log_no-mount  | 
netalertx-test-mount-log_no-mount  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-log_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-log_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_no-mount  | --> ports available.sh 
netalertx-test-mount-log_no-mount  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-log_no-mount  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-log_no-mount  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-log_no-mount  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-log_no-mount  | [0mTraceback (most recent call last):
netalertx-test-mount-log_no-mount  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-log_no-mount  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-log_no-mount  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-log_no-mount  |     sys.exit(main())
netalertx-test-mount-log_no-mount  |              ^^^^^^
netalertx-test-mount-log_no-mount  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-log_no-mount  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-log_no-mount  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-log_no-mount  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-log_no-mount  |     for setting_name, value in settings_override.items():
netalertx-test-mount-log_no-mount  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-log_no-mount  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-log_no-mount  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-log_no-mount  Stopping
 Container netalertx-test-mount-log_no-mount  Stopped

File: docker-compose.mount-test.log_ramdisk.yml
----------------------------------------
Expected outcome: Container shows dataloss risk warning for logs on RAM disk
- NETALERTX_LOG shows as mounted on tmpfs (RAM disk)
- Dataloss risk warning since logs may be lost on restart
- Container starts but logs may not persist

Testing: docker-compose.mount-test.log_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-log_ramdisk  Creating
 Container netalertx-test-mount-log_ramdisk  Created
Attaching to netalertx-test-mount-log_ramdisk
netalertx-test-mount-log_ramdisk  | [1;31m
netalertx-test-mount-log_ramdisk  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-log_ramdisk  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-log_ramdisk  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-log_ramdisk  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-log_ramdisk  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-log_ramdisk  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-log_ramdisk  | [0m   Network intruder and presence detector. 
netalertx-test-mount-log_ramdisk  |    https://netalertx.com
netalertx-test-mount-log_ramdisk  | 
netalertx-test-mount-log_ramdisk  | 
netalertx-test-mount-log_ramdisk  | Startup pre-checks
netalertx-test-mount-log_ramdisk  | --> storage permission.sh 
netalertx-test-mount-log_ramdisk  | --> data migration.sh 
netalertx-test-mount-log_ramdisk  | --> mounts.py 
netalertx-test-mount-log_ramdisk  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-log_ramdisk  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-log_ramdisk  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_ramdisk  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_ramdisk  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_ramdisk  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_ramdisk  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_ramdisk  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_ramdisk  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_ramdisk  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_ramdisk  | --> first run config.sh 
netalertx-test-mount-log_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-log_ramdisk  | 
netalertx-test-mount-log_ramdisk  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-log_ramdisk  |     this instance in production.
netalertx-test-mount-log_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | --> first run db.sh 
netalertx-test-mount-log_ramdisk  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-log_ramdisk  | 
netalertx-test-mount-log_ramdisk  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-log_ramdisk  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-log_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | --> mandatory folders.sh 
netalertx-test-mount-log_ramdisk  |     * Creating NetAlertX log directory.
netalertx-test-mount-log_ramdisk  |     * Creating NetAlertX API cache.
netalertx-test-mount-log_ramdisk  |     * Creating System services runtime directory.
netalertx-test-mount-log_ramdisk  |     * Creating nginx active configuration directory.
netalertx-test-mount-log_ramdisk  |     * Creating Plugins log.
netalertx-test-mount-log_ramdisk  |     * Creating System services run log.
netalertx-test-mount-log_ramdisk  |     * Creating System services run tmp.
netalertx-test-mount-log_ramdisk  |     * Creating DB locked log.
netalertx-test-mount-log_ramdisk  |     * Creating Execution queue log.
netalertx-test-mount-log_ramdisk  | --> apply conf override.sh 
netalertx-test-mount-log_ramdisk  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-log_ramdisk  | 
netalertx-test-mount-log_ramdisk  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-log_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | --> writable config.sh 
netalertx-test-mount-log_ramdisk  | --> nginx config.sh 
netalertx-test-mount-log_ramdisk  | --> user netalertx.sh 
netalertx-test-mount-log_ramdisk  | --> host mode network.sh 
netalertx-test-mount-log_ramdisk  | --> layer 2 capabilities.sh 
netalertx-test-mount-log_ramdisk  | --> excessive capabilities.sh 
netalertx-test-mount-log_ramdisk  | --> appliance integrity.sh 
netalertx-test-mount-log_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-log_ramdisk  | 
netalertx-test-mount-log_ramdisk  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-log_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-log_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_ramdisk  | --> ports available.sh 
netalertx-test-mount-log_ramdisk  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-log_ramdisk  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-log_ramdisk  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-log_ramdisk  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-log_ramdisk  | [0mTraceback (most recent call last):
netalertx-test-mount-log_ramdisk  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-log_ramdisk  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-log_ramdisk  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-log_ramdisk  |     sys.exit(main())
netalertx-test-mount-log_ramdisk  |              ^^^^^^
netalertx-test-mount-log_ramdisk  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-log_ramdisk  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-log_ramdisk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-log_ramdisk  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-log_ramdisk  |     for setting_name, value in settings_override.items():
netalertx-test-mount-log_ramdisk  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-log_ramdisk  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-log_ramdisk  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-log_ramdisk  Stopping
 Container netalertx-test-mount-log_ramdisk  Stopped

File: docker-compose.mount-test.log_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable log partition
- NETALERTX_LOG shows as mounted but unwritable (❌ in Writeable column)
- 25-mandatory-folders.sh cannot create required log files and fails
- Container startup fails because logging infrastructure cannot be initialized

Testing: docker-compose.mount-test.log_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_log"  Creating
 Volume "mount-tests_test_netalertx_log"  Created
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-log_unwritable  Creating
 Container netalertx-test-mount-log_unwritable  Created
Attaching to netalertx-test-mount-log_unwritable
netalertx-test-mount-log_unwritable  | [1;31m
netalertx-test-mount-log_unwritable  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-log_unwritable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-log_unwritable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-log_unwritable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-log_unwritable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-log_unwritable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-log_unwritable  | [0m   Network intruder and presence detector. 
netalertx-test-mount-log_unwritable  |    https://netalertx.com
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  | Startup pre-checks
netalertx-test-mount-log_unwritable  | --> storage permission.sh 
netalertx-test-mount-log_unwritable  | --> data migration.sh 
netalertx-test-mount-log_unwritable  | --> mounts.py 
netalertx-test-mount-log_unwritable  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-log_unwritable  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-log_unwritable  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_unwritable  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-log_unwritable  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_unwritable  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_unwritable  |  /tmp/log                 | ✅| ❌|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-log_unwritable  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_unwritable  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_unwritable  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  |     * /tmp/log error writing, performance issue
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-log_unwritable  |     configuration can be quite complex.
netalertx-test-mount-log_unwritable  | 
netalertx-test-mount-log_unwritable  |     Review the documentation for a correct setup:
netalertx-test-mount-log_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-log_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-log_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_unwritable  | [0m
netalertx-test-mount-log_unwritable  | \033[1;31m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_unwritable  | ❌ NetAlertX startup aborted: critical failure in mounts.py.
netalertx-test-mount-log_unwritable  | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/troubleshooting.md
netalertx-test-mount-log_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-log_unwritable  | \033[0m

[Knetalertx-test-mount-log_unwritable exited with code 1
File: docker-compose.mount-test.run_mounted.yml
----------------------------------------
Expected outcome: Container starts successfully with proper run mount
- NETALERTX_RUN shows as mounted and writable
- No mount warnings since run directory can be non-persistent
- Container starts normally with runtime files enabled

Testing: docker-compose.mount-test.run_mounted.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Volume "mount-tests_test_system_services_run"  Creating
 Volume "mount-tests_test_system_services_run"  Created
 Container netalertx-test-mount-run_mounted  Creating
 Container netalertx-test-mount-run_mounted  Created
Attaching to netalertx-test-mount-run_mounted
netalertx-test-mount-run_mounted  | [1;31m
netalertx-test-mount-run_mounted  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-run_mounted  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-run_mounted  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-run_mounted  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-run_mounted  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-run_mounted  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-run_mounted  | [0m   Network intruder and presence detector. 
netalertx-test-mount-run_mounted  |    https://netalertx.com
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  | Startup pre-checks
netalertx-test-mount-run_mounted  | --> storage permission.sh 
netalertx-test-mount-run_mounted  | --> data migration.sh 
netalertx-test-mount-run_mounted  | --> mounts.py 
netalertx-test-mount-run_mounted  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-run_mounted  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-run_mounted  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_mounted  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_mounted  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-run_mounted  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_mounted  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_mounted  |  /tmp/run                 | ✅| ✅|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-run_mounted  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     * /tmp/run/tmp performance issue
netalertx-test-mount-run_mounted  |     * /tmp/run performance issue
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-run_mounted  |     configuration can be quite complex.
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     Review the documentation for a correct setup:
netalertx-test-mount-run_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-run_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | [0m
netalertx-test-mount-run_mounted  | --> first run config.sh 
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-run_mounted  |     this instance in production.
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | --> first run db.sh 
netalertx-test-mount-run_mounted  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-run_mounted  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | --> mandatory folders.sh 
netalertx-test-mount-run_mounted  |     * Creating Plugins log.
netalertx-test-mount-run_mounted  |     * Creating DB locked log.
netalertx-test-mount-run_mounted  |     * Creating Execution queue log.
netalertx-test-mount-run_mounted  | --> apply conf override.sh 
netalertx-test-mount-run_mounted  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | --> writable config.sh 
netalertx-test-mount-run_mounted  | --> nginx config.sh 
netalertx-test-mount-run_mounted  | --> user netalertx.sh 
netalertx-test-mount-run_mounted  | --> host mode network.sh 
netalertx-test-mount-run_mounted  | --> layer 2 capabilities.sh 
netalertx-test-mount-run_mounted  | --> excessive capabilities.sh 
netalertx-test-mount-run_mounted  | --> appliance integrity.sh 
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-run_mounted  | 
netalertx-test-mount-run_mounted  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-run_mounted  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-run_mounted  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_mounted  | --> ports available.sh 
netalertx-test-mount-run_mounted  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-run_mounted  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-run_mounted  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-run_mounted  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-run_mounted  | [0mTraceback (most recent call last):
netalertx-test-mount-run_mounted  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-run_mounted  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-run_mounted  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-run_mounted  |     sys.exit(main())
netalertx-test-mount-run_mounted  |              ^^^^^^
netalertx-test-mount-run_mounted  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-run_mounted  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-run_mounted  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-run_mounted  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-run_mounted  |     for setting_name, value in settings_override.items():
netalertx-test-mount-run_mounted  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-run_mounted  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-run_mounted  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-run_mounted  Stopping
 Container netalertx-test-mount-run_mounted  Stopped

File: docker-compose.mount-test.run_no-mount.yml
----------------------------------------
Expected outcome: Container shows mount error warning but continues running
- NETALERTX_RUN shows as not mounted (❌ in Mount column)
- Warning message displayed about configuration issues
- Container continues to run despite the mount error

Testing: docker-compose.mount-test.run_no-mount.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-run_no-mount  Creating
 Container netalertx-test-mount-run_no-mount  Created
Attaching to netalertx-test-mount-run_no-mount
netalertx-test-mount-run_no-mount  | [1;31m
netalertx-test-mount-run_no-mount  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-run_no-mount  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-run_no-mount  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-run_no-mount  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-run_no-mount  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-run_no-mount  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-run_no-mount  | [0m   Network intruder and presence detector. 
netalertx-test-mount-run_no-mount  |    https://netalertx.com
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  | Startup pre-checks
netalertx-test-mount-run_no-mount  | --> storage permission.sh 
netalertx-test-mount-run_no-mount  | --> data migration.sh 
netalertx-test-mount-run_no-mount  | --> mounts.py 
netalertx-test-mount-run_no-mount  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-run_no-mount  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-run_no-mount  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_no-mount  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_no-mount  |  /tmp/run/tmp             | ✅| ✅|   ❌  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-run_no-mount  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_no-mount  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_no-mount  |  /tmp/run                 | ✅| ✅|   ❌  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-run_no-mount  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     * /tmp/run/tmp not mounted, performance issue
netalertx-test-mount-run_no-mount  |     * /tmp/run not mounted, performance issue
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-run_no-mount  |     configuration can be quite complex.
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     Review the documentation for a correct setup:
netalertx-test-mount-run_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-run_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | [0m
netalertx-test-mount-run_no-mount  | --> first run config.sh 
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-run_no-mount  |     this instance in production.
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | --> first run db.sh 
netalertx-test-mount-run_no-mount  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-run_no-mount  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | --> mandatory folders.sh 
netalertx-test-mount-run_no-mount  |     * Creating Plugins log.
netalertx-test-mount-run_no-mount  |     * Creating DB locked log.
netalertx-test-mount-run_no-mount  |     * Creating Execution queue log.
netalertx-test-mount-run_no-mount  | --> apply conf override.sh 
netalertx-test-mount-run_no-mount  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | --> writable config.sh 
netalertx-test-mount-run_no-mount  | --> nginx config.sh 
netalertx-test-mount-run_no-mount  | --> user netalertx.sh 
netalertx-test-mount-run_no-mount  | --> host mode network.sh 
netalertx-test-mount-run_no-mount  | --> layer 2 capabilities.sh 
netalertx-test-mount-run_no-mount  | --> excessive capabilities.sh 
netalertx-test-mount-run_no-mount  | --> appliance integrity.sh 
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-run_no-mount  | 
netalertx-test-mount-run_no-mount  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-run_no-mount  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-run_no-mount  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_no-mount  | --> ports available.sh 
netalertx-test-mount-run_no-mount  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-run_no-mount  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-run_no-mount  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-run_no-mount  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-run_no-mount  | [0mTraceback (most recent call last):
netalertx-test-mount-run_no-mount  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-run_no-mount  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-run_no-mount  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-run_no-mount  |     sys.exit(main())
netalertx-test-mount-run_no-mount  |              ^^^^^^
netalertx-test-mount-run_no-mount  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-run_no-mount  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-run_no-mount  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-run_no-mount  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-run_no-mount  |     for setting_name, value in settings_override.items():
netalertx-test-mount-run_no-mount  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-run_no-mount  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-run_no-mount  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-run_no-mount  Stopping
 Container netalertx-test-mount-run_no-mount  Stopped

File: docker-compose.mount-test.run_ramdisk.yml
----------------------------------------
Expected outcome: Container shows dataloss risk warning for run on RAM disk
- NETALERTX_RUN shows as mounted on tmpfs (RAM disk)
- Dataloss risk warning since runtime files may be lost on restart
- Container starts but runtime state may not persist

Testing: docker-compose.mount-test.run_ramdisk.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_netalertx_data"  Creating
 Volume "mount-tests_test_netalertx_data"  Created
 Container netalertx-test-mount-run_ramdisk  Creating
 Container netalertx-test-mount-run_ramdisk  Created
Attaching to netalertx-test-mount-run_ramdisk
netalertx-test-mount-run_ramdisk  | [1;31m
netalertx-test-mount-run_ramdisk  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-run_ramdisk  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-run_ramdisk  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-run_ramdisk  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-run_ramdisk  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-run_ramdisk  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-run_ramdisk  | [0m   Network intruder and presence detector. 
netalertx-test-mount-run_ramdisk  |    https://netalertx.com
netalertx-test-mount-run_ramdisk  | 
netalertx-test-mount-run_ramdisk  | 
netalertx-test-mount-run_ramdisk  | Startup pre-checks
netalertx-test-mount-run_ramdisk  | --> storage permission.sh 
netalertx-test-mount-run_ramdisk  | --> data migration.sh 
netalertx-test-mount-run_ramdisk  | --> mounts.py 
netalertx-test-mount-run_ramdisk  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-run_ramdisk  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-run_ramdisk  |  /data                    | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_ramdisk  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_ramdisk  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_ramdisk  |  /tmp/run/tmp             | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_ramdisk  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_ramdisk  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_ramdisk  |  /tmp/run                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_ramdisk  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_ramdisk  | --> first run config.sh 
netalertx-test-mount-run_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | 🆕  First run detected. Default configuration written to /data/config/app.conf.
netalertx-test-mount-run_ramdisk  | 
netalertx-test-mount-run_ramdisk  |     Review your settings in the UI or edit the file directly before trusting
netalertx-test-mount-run_ramdisk  |     this instance in production.
netalertx-test-mount-run_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | --> first run db.sh 
netalertx-test-mount-run_ramdisk  | [0m[1;36m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | 🆕  First run detected — building initial database at: /data/db/app.db
netalertx-test-mount-run_ramdisk  | 
netalertx-test-mount-run_ramdisk  |     Do not interrupt this step. When complete, consider backing up the fresh
netalertx-test-mount-run_ramdisk  |     DB before onboarding sensitive or critical networks.
netalertx-test-mount-run_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | --> mandatory folders.sh 
netalertx-test-mount-run_ramdisk  |     * Creating NetAlertX log directory.
netalertx-test-mount-run_ramdisk  |     * Creating NetAlertX API cache.
netalertx-test-mount-run_ramdisk  |     * Creating System services runtime directory.
netalertx-test-mount-run_ramdisk  |     * Creating nginx active configuration directory.
netalertx-test-mount-run_ramdisk  |     * Creating Plugins log.
netalertx-test-mount-run_ramdisk  |     * Creating System services run log.
netalertx-test-mount-run_ramdisk  |     * Creating System services run tmp.
netalertx-test-mount-run_ramdisk  |     * Creating DB locked log.
netalertx-test-mount-run_ramdisk  |     * Creating Execution queue log.
netalertx-test-mount-run_ramdisk  | --> apply conf override.sh 
netalertx-test-mount-run_ramdisk  | [0m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | 📝  APP_CONF_OVERRIDE detected. Configuration written to /data/config/app_conf_override.json.
netalertx-test-mount-run_ramdisk  | 
netalertx-test-mount-run_ramdisk  |     Make sure the JSON content is correct before starting the application.
netalertx-test-mount-run_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | --> writable config.sh 
netalertx-test-mount-run_ramdisk  | --> nginx config.sh 
netalertx-test-mount-run_ramdisk  | --> user netalertx.sh 
netalertx-test-mount-run_ramdisk  | --> host mode network.sh 
netalertx-test-mount-run_ramdisk  | --> layer 2 capabilities.sh 
netalertx-test-mount-run_ramdisk  | --> excessive capabilities.sh 
netalertx-test-mount-run_ramdisk  | --> appliance integrity.sh 
netalertx-test-mount-run_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | ⚠️  Warning: Container is running as read-write, not in read-only mode.
netalertx-test-mount-run_ramdisk  | 
netalertx-test-mount-run_ramdisk  |     Please mount the root filesystem as --read-only or use read_only: true
netalertx-test-mount-run_ramdisk  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/read-only-filesystem.md
netalertx-test-mount-run_ramdisk  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_ramdisk  | --> ports available.sh 
netalertx-test-mount-run_ramdisk  | Starting supercronic --quiet "/services/config/cron/crontab" >>"/tmp/log/cron.log" 2>&1 &
netalertx-test-mount-run_ramdisk  | Starting /usr/sbin/php-fpm83 -y "/services/config/php/php-fpm.conf" -F >>"/tmp/log/app.php_errors.log" 2>/dev/stderr &
netalertx-test-mount-run_ramdisk  | Starting python3  -m server > /tmp/log/stdout.log 2> >(tee /tmp/log/stderr.log >&2)
netalertx-test-mount-run_ramdisk  | Starting /usr/sbin/nginx -p "/tmp/run/" -c "/tmp/nginx/active-config/nginx.conf" -g "error_log /dev/stderr; error_log /tmp/log/nginx-error.log; daemon off;" &
netalertx-test-mount-run_ramdisk  | [0mTraceback (most recent call last):
netalertx-test-mount-run_ramdisk  |   File "<frozen runpy>", line 198, in _run_module_as_main
netalertx-test-mount-run_ramdisk  |   File "<frozen runpy>", line 88, in _run_code
netalertx-test-mount-run_ramdisk  |   File "/app/server/__main__.py", line 260, in <module>
netalertx-test-mount-run_ramdisk  |     sys.exit(main())
netalertx-test-mount-run_ramdisk  |              ^^^^^^
netalertx-test-mount-run_ramdisk  |   File "/app/server/__main__.py", line 104, in main
netalertx-test-mount-run_ramdisk  |     pm, all_plugins, imported = importConfigs(pm, db, all_plugins)
netalertx-test-mount-run_ramdisk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-run_ramdisk  |   File "/app/server/initialise.py", line 586, in importConfigs
netalertx-test-mount-run_ramdisk  |     for setting_name, value in settings_override.items():
netalertx-test-mount-run_ramdisk  |                                ^^^^^^^^^^^^^^^^^^^^^^^
netalertx-test-mount-run_ramdisk  | AttributeError: 'int' object has no attribute 'items'
netalertx-test-mount-run_ramdisk  | Successfully updated IEEE OUI database (112333 entries)
Gracefully stopping... (press Ctrl+C again to force)
 Container netalertx-test-mount-run_ramdisk  Stopping
 Container netalertx-test-mount-run_ramdisk  Stopped

File: docker-compose.mount-test.run_unwritable.yml
----------------------------------------
Expected outcome: Container fails to start due to unwritable run partition
- NETALERTX_RUN shows as mounted but unwritable (❌ in Writeable column)
- 25-mandatory-folders.sh cannot create required runtime files and fails
- Container startup fails because runtime infrastructure cannot be initialized

Testing: docker-compose.mount-test.run_unwritable.yml
Directory: /workspaces/NetAlertX/test/docker_tests/configurations/mount-tests

Running docker-compose up...
 Volume "mount-tests_test_system_services_run"  Creating
 Volume "mount-tests_test_system_services_run"  Created
 Volume "mount-tests_netalertx_db"  Creating
 Volume "mount-tests_netalertx_db"  Created
 Volume "mount-tests_netalertx_config"  Creating
 Volume "mount-tests_netalertx_config"  Created
 Container netalertx-test-mount-run_unwritable  Creating
 Container netalertx-test-mount-run_unwritable  Created
Attaching to netalertx-test-mount-run_unwritable
netalertx-test-mount-run_unwritable  | [1;31m
netalertx-test-mount-run_unwritable  |  _   _      _    ___  _           _  __   __
netalertx-test-mount-run_unwritable  | | \ | |    | |  / _ \| |         | | \ \ / /
netalertx-test-mount-run_unwritable  | |  \| | ___| |_/ /_\ \ | ___ _ __| |_ \ V / 
netalertx-test-mount-run_unwritable  | | .   |/ _ \ __|  _  | |/ _ \  __| __|/   \ 
netalertx-test-mount-run_unwritable  | | |\  |  __/ |_| | | | |  __/ |  | |_/ /^\ \ 
netalertx-test-mount-run_unwritable  | \_| \_/\___|\__\_| |_/_|\___|_|   \__\/   \/
netalertx-test-mount-run_unwritable  | [0m   Network intruder and presence detector. 
netalertx-test-mount-run_unwritable  |    https://netalertx.com
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  | Startup pre-checks
netalertx-test-mount-run_unwritable  | --> storage permission.sh 
netalertx-test-mount-run_unwritable  | --> data migration.sh 
netalertx-test-mount-run_unwritable  | --> mounts.py 
netalertx-test-mount-run_unwritable  |  Path                     | R | W | Mount | RAMDisk | Performance | DataLoss 
netalertx-test-mount-run_unwritable  | --------------------------+---+---+-------+---------+-------------+----------
netalertx-test-mount-run_unwritable  |  /data/db                 | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_unwritable  |  /data/config             | ✅| ✅|   ✅  |    ➖   |      ➖     |    ✅     
netalertx-test-mount-run_unwritable  |  /tmp/run/tmp             | ✅| ❌|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-run_unwritable  |  /tmp/api                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_unwritable  |  /tmp/log                 | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_unwritable  |  /tmp/run                 | ✅| ❌|   ✅  |    ❌   |      ❌     |    ✅     
netalertx-test-mount-run_unwritable  |  /tmp/nginx/active-config | ✅| ✅|   ✅  |    ✅   |      ✅     |    ✅     
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  | [1;33m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_unwritable  | ⚠️  ATTENTION: Configuration issues detected (marked with ❌).
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  |     * /tmp/run/tmp error writing, performance issue
netalertx-test-mount-run_unwritable  |     * /tmp/run error writing, performance issue
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  |     We recommend starting with the default docker-compose.yml as the
netalertx-test-mount-run_unwritable  |     configuration can be quite complex.
netalertx-test-mount-run_unwritable  | 
netalertx-test-mount-run_unwritable  |     Review the documentation for a correct setup:
netalertx-test-mount-run_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/DOCKER_COMPOSE.md
netalertx-test-mount-run_unwritable  |     https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/mount-configuration-issues.md
netalertx-test-mount-run_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_unwritable  | [0m
netalertx-test-mount-run_unwritable  | \033[1;31m══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_unwritable  | ❌ NetAlertX startup aborted: critical failure in mounts.py.
netalertx-test-mount-run_unwritable  | https://github.com/jokob-sk/NetAlertX/blob/main/docs/docker-troubleshooting/troubleshooting.md
netalertx-test-mount-run_unwritable  | ══════════════════════════════════════════════════════════════════════════════
netalertx-test-mount-run_unwritable  | \033[0m

[Knetalertx-test-mount-run_unwritable exited with code 1
All tests completed - Sun Dec 21 23:41:22 UTC 2025
