Files
RustProxy/debian
2026-10-05 12:22:41 +02:00
..
2026-10-03 00:27:09 +01:00
2026-10-05 12:22:41 +02:00
2026-10-03 00:27:09 +01:00
2026-10-05 12:22:41 +02:00
2026-10-03 00:27:09 +01:00
2026-10-05 12:22:41 +02:00
2026-10-03 00:27:09 +01:00
2026-10-03 00:27:09 +01:00
2026-10-03 00:27:09 +01:00
2026-10-03 00:27:09 +01:00
2026-10-04 09:29:10 +02:00
2026-10-03 00:27:09 +01:00

Debian packaging

This directory builds the rustproxy binary package for RustProxy 0.25.7. The package installs:

  • /usr/bin/rust-proxy
  • /etc/rustproxy/environment (conffile)
  • rustproxy.service
  • logrotate policy for /var/log/rustproxy
  • Grafana dashboard under /usr/share/rustproxy/grafana/

The service runs as the unprivileged rustproxy system user. CAP_NET_BIND_SERVICE is the only ambient/bounding capability, allowing ports 80/443 without root. The administration listener is loopback-only by default. systemd and postinst both ensure /var/lib/rustproxy and /var/log/rustproxy exist with mode 0750.

Build the .deb

Install build prerequisites (including Rust 1.88+), then from the source tree:

./debian/build-package.sh

The script uses the committed Cargo.lock, runs cargo fetch --locked, invokes dpkg-buildpackage -us -uc -b, and copies generated package artifacts to dist/. If dependencies are pre-fetched/vendored, set CARGO_NET_OFFLINE=true for an offline Cargo build.

Repository for rustproxy.linuxiarz.pl

Install repository tooling:

apt install dpkg-dev apt-utils gzip gnupg

Build the repository:

RUSTPROXY_REPO_GPG_KEY='<fingerprint-or-key-id>' ./debian/build-repository.sh

Publish the generated repository/ directory at the web root of https://rustproxy.linuxiarz.pl/. Export the public repository key separately and install it on clients as /usr/share/keyrings/rustproxy.gpg, then use:

deb [signed-by=/usr/share/keyrings/rustproxy.gpg] https://rustproxy.linuxiarz.pl stable main

The repository script emits Packages, maximum-gzip Packages.gz, Release, and, when a GPG key is configured, Release.gpg plus InRelease.

Logs

Structured file logging defaults to /var/log/rustproxy/access.jsonl when enabled in RustProxy. Logrotate runs daily, keeps at most three days, compresses immediately with gzip -9, and uses copytruncate because RustProxy owns the open log file. Systemd journal output remains independent of this JSONL rotation.