- Guard /etc/resolv.conf write and crond behind root check in entrypoint;
non-root containers now stay alive via 'tail -f /dev/null' instead of
failing when crond exits with EPERM
- Set PM2_HOME to ${QL_DIR}/data/.pm2 (inside the data volume) so PM2
does not fall back to /root/.pm2, which is inaccessible to non-root users
- Pre-create /ql/.tmp and /ql/shell/preload during image build and make
them world-writable so non-root processes can write runtime files
- Wrap directory creation in initFile.ts with try/catch + recursive:true
so a permission error on ~/.ssh (HOME=/root for non-root user) is logged
as a warning instead of crashing the server init