- Add docker-entrypoint.sh that runs as root to fix mounted volume permissions
- Creates required subdirectories (logs, users, packages) before app starts
- Copies default config.js if missing
- Drops to node user via su-exec before running the app
- Update Dockerfile to use entrypoint and install su-exec
- Update docker-compose.yml with UID/GID mapping and separate volume mounts
- Wrap filesystem operations in try-catch to handle permission errors gracefully
This commit configures Hard Lounge as a dedicated webchat client for
SuperNETs IRC, requiring only a nickname to connect.
- Set `public: true` to enable public mode (no user accounts required)
- Set `lockNetwork: true` to lock connections to irc.supernets.org only
Users will automatically connect to irc.supernets.org:6697 (TLS) and
join #superbowl upon entering a nickname.
- Added simplified connect form for public + lockNetwork mode
- Form now shows only the nickname field when both settings are enabled
- Hidden fields: server, port, TLS, username, realname, channels,
leave message, authentication options
- Added CSS styling for proper spacing on simplified form
- Pinned to Node 20 Alpine (from lts-alpine) for compatibility
- Added py3-setuptools to fix distutils module error with Python 3.12
- Fixed file ownership with --chown=node:node on COPY commands
- Moved USER node directive after COPY to fix permission issues
- Pre-create /var/opt/hardlounge directory with correct ownership