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

134 lines
1.7 KiB
Markdown

# 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
```sh
cp .env.example .env
docker compose up -d --build
docker compose logs -f
```
Repo:
```text
http://HOST:8478/
```
## Upload z buildu
Mozesz zawsze wysylac ten sam plik:
```sh
scp latest.pkg user@repo-host:/opt/opnsense-pkg-repo/repo/latest.pkg
```
Daemon czyta z paczki:
```text
+COMPACT_MANIFEST
```
i pola:
```text
name
version
```
Przyklad:
```text
latest.pkg
```
z manifestem:
```json
{"name":"myapp","version":"1.4.7"}
```
zostanie automatycznie przemianowany na:
```text
myapp-1.4.7.pkg
```
Nie musisz znac wersji po stronie CI.
## Retencja
Domyslnie daemon zachowuje 10 najnowszych plikow dla kazdej nazwy pakietu:
```env
RETENTION=10
```
Np.:
```text
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:
```env
RETENTION=0
```
## Pozostale ENV
```env
PORT=8080
POLL_INTERVAL=2
STABLE_SECONDS=2
LATEST_NAMES=latest.pkg
```
Mozesz miec kilka nazw uploadowych:
```env
LATEST_NAMES=latest.pkg,myapp-latest.pkg
```
## OPNsense
`/usr/local/etc/pkg/repos/myrepo.conf`:
```ucl
MyRepo: {
url: "http://HOST:8478",
enabled: yes,
signature_type: "none"
}
```
Potem:
```sh
pkg update -f
pkg search myapp
pkg install -r MyRepo myapp
```
## Logi
```sh
docker compose logs -f
```
Przy nowym buildzie zobaczysz np.:
```text
[ingest] latest.pkg -> myapp-1.4.7.pkg
[retention] usunieto myapp-1.3.2.pkg (myapp, limit=10)
[repo] przebudowano katalog: 10 pakiet(ow)
```