134 lines
1.7 KiB
Markdown
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)
|
|
```
|