fix: Docker uv pre-install at build time + workspace permissions (#365)
* fix: pre-install uv in Docker image + fix workspace dir permissions (#357) Two fixes for Docker startup reliability: 1. Install uv at build time in the Dockerfile so the container works without internet access at runtime. The init script now skips the download when uv is already on PATH. 2. Use sudo mkdir/chown for the workspace directory, matching the pattern used for /app. Docker auto-creates bind-mount directories as root, leaving them unwritable by the hermeswebui user. Fixes #357 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: Docker uv pre-install as root to /usr/local/bin + tests + CHANGELOG Dockerfile: install uv as root with UV_INSTALL_DIR=/usr/local/bin so it lands in /usr/local/bin (system PATH) rather than /home/hermeswebuitoo/.local/bin which the hermeswebui runtime user can't see. tests/test_issue357.py: 15 structural tests covering Dockerfile uv build-time install (system-wide, as root, before COPY), init script skip-if-present logic, and workspace sudo mkdir/chown. CHANGELOG.md: v0.50.17 entry; 915 tests (up from 900) --------- Co-authored-by: Nathan Esquenazi <nesquena@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,13 @@
|
||||
|
||||
---
|
||||
|
||||
## [v0.50.17] Docker: pre-install uv at build time + fix workspace permissions (fixes #357)
|
||||
|
||||
- **Docker containers no longer need internet access at startup** (`Dockerfile`): `uv` is now installed at image build time via `RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/usr/local/bin sh` (run as root, so `uv` lands in `/usr/local/bin` — accessible to all users). The init script skips the download if `uv` is already on PATH (`command -v uv`), and falls back to downloading with a proper `error_exit` if it isn't. This fixes startup failures in air-gapped, firewalled, or isolated Docker networks where `github.com` is unreachable at runtime.
|
||||
- **Fix applied during review**: the original PR installed `uv` as the `hermeswebuitoo` user (to `~hermeswebuitoo/.local/bin`), which is not on the `hermeswebui` runtime user's `PATH`. Changed to install as `root` with `UV_INSTALL_DIR=/usr/local/bin` so `uv` is in the system PATH for all users.
|
||||
- **Workspace directory now writable by the hermeswebui user** (`docker_init.bash`): The init script now uses `sudo mkdir -p` and `sudo chown hermeswebui:hermeswebui` for `HERMES_WEBUI_DEFAULT_WORKSPACE`. Docker auto-creates bind-mount directories as `root` if they don't exist on the host, making them unwritable by the app user. The `sudo chown` corrects ownership after creation.
|
||||
- 15 new structural tests in `tests/test_issue357.py`; 915 tests total (up from 900)
|
||||
|
||||
## [v0.50.16] Fix CSRF check failing behind reverse proxy on non-standard ports (PR #360)
|
||||
|
||||
- **CSRF no longer rejects POST requests from reverse-proxied deployments on non-standard ports** (`api/routes.py`, fixes #355): When serving behind Nginx Proxy Manager or similar on a port like `:8000`, browsers send `Origin: https://app.example.com:8000` while the proxy forwards `Host: app.example.com` (port stripped). The old string comparison failed this as cross-origin. Two changes fix it:
|
||||
|
||||
Reference in New Issue
Block a user