2026-10-01 21:33:32 +02:00
2026-10-01 21:33:32 +02:00
2026-10-01 21:33:32 +02:00
2026-10-01 21:33:32 +02:00
2026-10-01 21:33:32 +02:00
2026-10-01 21:33:32 +02:00

OPNsense / FreeBSD pkg repo daemon

Lekki daemon na Alpine. Obserwuje /repo, odczytuje manifest z paczek FreeBSD .pkg, automatycznie wersjonuje latest.pkg, pilnuje retencji i wystawia repo przez HTTP.

Start

cp .env.example .env
docker compose up -d --build
docker compose logs -f

Repo:

http://HOST:8478/

Upload z buildu

Mozesz zawsze wysylac ten sam plik:

scp latest.pkg user@repo-host:/opt/opnsense-pkg-repo/repo/latest.pkg

Daemon czyta z paczki:

+COMPACT_MANIFEST

i pola:

name
version

Przyklad:

latest.pkg

z manifestem:

{"name":"myapp","version":"1.4.7"}

zostanie automatycznie przemianowany na:

myapp-1.4.7.pkg

Nie musisz znac wersji po stronie CI.

Retencja

Domyslnie daemon zachowuje 10 najnowszych plikow dla kazdej nazwy pakietu:

RETENTION=10

Np.:

myapp-1.4.10.pkg
...
myapp-1.4.1.pkg

Starsze sa automatycznie usuwane. Kolejnosc retencji jest wedlug czasu pojawienia sie pliku w repo, a nie leksykograficznego sortowania numeru wersji.

Bez retencji:

RETENTION=0

Pozostale ENV

PORT=8080
POLL_INTERVAL=2
STABLE_SECONDS=2
LATEST_NAMES=latest.pkg

Mozesz miec kilka nazw uploadowych:

LATEST_NAMES=latest.pkg,myapp-latest.pkg

OPNsense

/usr/local/etc/pkg/repos/myrepo.conf:

MyRepo: {
  url: "http://HOST:8478",
  enabled: yes,
  signature_type: "none"
}

Potem:

pkg update -f
pkg search myapp
pkg install -r MyRepo myapp

Logi

docker compose logs -f

Przy nowym buildzie zobaczysz np.:

[ingest] latest.pkg -> myapp-1.4.7.pkg
[retention] usunieto myapp-1.3.2.pkg (myapp, limit=10)
[repo] przebudowano katalog: 10 pakiet(ow)
S
Description
No description provided
Readme
33 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 95.7%
Dockerfile 4.3%