Files
rustproxy-opnsense-repo/docs/FIRST_RUN.md
T
2026-09-29 13:37:57 +02:00

2.9 KiB

First run

1. Push this packaging repository

Create a repository for the generated OPNsense plugin/build files and push this tree there. RustProxy itself must not be copied into this repository; it will be fetched dynamically from:

https://git.linuxiarz.pl/gru/RustProxy

After pushing, set that new repository address as PACKAGING_REPO_URL in the Debian configuration.

2. Prepare the FreeBSD release builder

Use FreeBSD 15.1 amd64.

sudo sh builder/freebsd/bootstrap.sh builder
sudo -u builder sh builder/freebsd/create-repo-key.sh

The bootstrap creates a non-root builder account and gives it /usr/local/rustproxy-build.

3. Prepare Debian

From a checkout of this packaging repository:

sudo bash builder/debian/install.sh
sudo editor /etc/rustproxy-opnsense-builder.env

At minimum configure:

PACKAGING_REPO_URL=<URL of this new packaging repository>
PACKAGING_REPO_REF=main

APP_REPO_URL=https://git.linuxiarz.pl/gru/RustProxy
APP_REPO_REF=HEAD

FREEBSD_HOST=<FreeBSD builder>
FREEBSD_USER=builder
FREEBSD_REMOTE_DIR=/usr/local/rustproxy-build/project

APP_REPO_REF=HEAD means "build the current default branch". If you want controlled releases, change it to a specific branch or tag.

Run the first cycle manually:

sudo /usr/local/sbin/rustproxy-opnsense-hourly

Cron runs at minute 17 of every hour. Each run fetches the RustProxy upstream. A new build starts when either the upstream RustProxy commit or this packaging repository commit changed. A failed build does not update last-successful-build, so it is retried on the next run.

4. Build state

Debian stores checkouts separately:

/srv/rustproxy-opnsense/packaging/       # this repository
/srv/rustproxy-opnsense/source/RustProxy # dynamically fetched app
/var/lib/rustproxy-opnsense-builder/     # lock + last successful commit pair

The FreeBSD build machine receives the two trees separately. Its temporary $FREEBSD_REMOTE_DIR/app/ always comes from the upstream checkout, never from the packaging repository.

5. Publish dist/

Set PUBLISH_TARGET. The published layout is similar to:

/rustproxy/
  BUILD-INFO.txt
  SHA256
  rustproxy-repo.pub
  repository/
    26.7/
      amd64/
        os-rustproxy-<Cargo-version>_<revision>.pkg
        meta.conf
        data.pkg
        packagesite.pkg

BUILD-INFO.txt contains the RustProxy source URL, ref and exact commit used to create the package.

6. Install on OPNsense

Copy rustproxy-repo.pub to the firewall and run:

sh deploy/opnsense/install-repo.sh \
  https://packages.example.net/rustproxy/repository/26.7/amd64 \
  /tmp/rustproxy-repo.pub

Then open Services -> RustProxy, enable it and click Apply.

7. Update

Publishing a new package does not automatically upgrade production firewalls. Run:

sh deploy/opnsense/update.sh

AUTO_DEPLOY_HOSTS exists only for explicitly listed test firewalls and is empty by default.