2.9 KiB
RustProxy 0.27.1 implementation note
Scope
0.27.1 improves first-run administration, makes ACME/Certbot setup independent of one distribution packaging layout, and adds per-user list sorting to the main routing views. SQLite remains schema 8; the saved administrator-preference document gains only defaulted fields.
First administrator
The initial login/setup screen now shows a directly runnable token command for the default data path:
rust-proxy --data-dir ./data admin setup-token
A standard service-installation example is shown below it:
rust-proxy --data-dir /var/lib/rustproxy admin setup-token
This removes the previous DATA_DIR placeholder from the primary command while still documenting the installed-service path.
Managed certificate runtime
RustProxy now prefers a private Python environment at <data-dir>/acme-python. On startup, and again on demand before an ACME job, it validates that environment and initializes it when missing. The managed environment pins Certbot 5.8.0 plus the Cloudflare, OVH and RFC2136 plugins.
Initialization first uses the available python3/python stdlib venv. If a distribution separates venv but provides pip, RustProxy installs virtualenv only into a temporary directory below its own data directory and uses it to create the managed environment; it does not modify distribution-owned site-packages. The managed environment receives its own pip packages.
If managed setup cannot be completed, RustProxy tests a distribution certbot from PATH and uses it as the fallback when runnable. If Python is unavailable, or neither managed nor system Certbot can be used, the Certificates panel shows an unavailable state and a specific diagnostic. Manual PEM import and use of existing certificate files remain independent of the ACME runtime. This makes minimal systems, including appliances that intentionally omit Python/pip, fail visibly instead of silently.
List sorting
The administrator preference document now stores sort column and direction separately for ordinary vhosts, Docker vhosts, 404 hosts and streams. Each page exposes only columns meaningful to that feature and reuses the backend-table column/direction selection pattern. Preferences are account-scoped and reapplied when the administrator session/preferences are loaded.
Compatibility
No SQLite migration is required. Schema 8 remains current. Existing saved configuration continues to load; missing sort preferences receive defaults. Historical distribution Certbot packages remain useful as an offline/runtime fallback, while the application-owned environment is the preferred path.
Verification limitation
This workspace does not provide Cargo/Rust, so compiler/type/Clippy/unit-test gates must still be run on a Rust-enabled release host. Rust-independent source, JavaScript, documentation, packaging and Go-agent checks are tracked in TEST_REPORT.