No description
  • Go 96.9%
  • Makefile 1.7%
  • Shell 1.4%
Find a file
derfenix db1db9041c
All checks were successful
CI / test (push) Successful in 1m54s
ci: bump golangci-lint to v2.11.4 for Go 1.26
2026-04-25 20:50:22 +03:00
.forgejo/workflows ci: bump golangci-lint to v2.11.4 for Go 1.26 2026-04-25 20:50:22 +03:00
.github/workflows ci: bump golangci-lint to v2.11.4 for Go 1.26 2026-04-25 20:50:22 +03:00
cmd/archiveopds feat: OPDS-сервер для каталога INPX/ZIP (архив Флибусты) 2026-04-12 16:35:44 +03:00
deploy feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
docs feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
internal feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
.gitignore feat: OPDS-сервер для каталога INPX/ZIP (архив Флибусты) 2026-04-12 16:35:44 +03:00
.golangci.yml feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
.goreleaser.yaml Forgejo CI fixes 2026-04-12 18:03:19 +03:00
go.mod feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
go.sum feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
LICENSE feat: OPDS-сервер для каталога INPX/ZIP (архив Флибусты) 2026-04-12 16:35:44 +03:00
Makefile feat: optimize archive search and zip access 2026-04-25 20:45:33 +03:00
README.md ci: bump golangci-lint to v2.11.4 for Go 1.26 2026-04-25 20:50:22 +03:00
README_EN.md ci: bump golangci-lint to v2.11.4 for Go 1.26 2026-04-25 20:50:22 +03:00

archiveopds

Русский: README.md

OPDS server for a local book library laid out as external ZIP volumes plus an INPX index (as in typical “library” distributions). Clients (e.g. OPDS-capable readers) get navigation, search, and acquisition links for files.

Flibusta

The program is primarily aimed at the layout and file set of the Flibusta library archive (.inpx catalogue, .inp lines, .zip volumes with FB2, etc.). Other collections using the same format may work, but development and checks target this case. This is not an official Flibusta project and is not affiliated with the site.

Build and run

Use the Go version from go.mod.

make              # binary at bin/archiveopds
./bin/archiveopds serve --archive /path/to/library/root --base-url http://127.0.0.1:8080

System install (root): sudo make install, then sudo systemd-sysusers, copy environment.example to /etc/archiveopds/environment, systemctl enable --now archiveopds. Variables: PREFIX, DESTDIR (see make help).

Arch Linux: deploy/archlinux/PKGBUILD downloads the tag source archive from Forgejo ($url/archive/v$pkgver.tar.gz, Gitea-style). Set pkgver in PKGBUILD to match an existing **v$pkgver** tag, then updpkgsums and makepkg -si from deploy/archlinux. Change url if you use another instance.

Flags and environment variables:

./archiveopds config

Memory usage, search behaviour, book delivery limits, and process shutdown are described in docs/runtime.md (Russian).

systemd: deploy/systemd/archiveopds.service reads **/etc/archiveopds/environment** (ARCHIVEOPDS_* prefix, same as archiveopds config); example — deploy/systemd/archiveopds.env.example. Create the archiveopds user with deploy/sysusers.d/archiveopds.conf and **systemd-sysusers**. The unit expects the binary at /usr/local/bin/archiveopds — adjust the path or use systemctl edit if needed.

CI and releases

  • GitHub Actions: [.github/workflows/](.github/workflows/) — on push/PR to main or master, golangci-lint v2.11.4 (see [.golangci.yml](.golangci.yml)), go test, and go build; on push of a v* tag (e.g. v1.0.0), GoReleaser builds artifacts and publishes a GitHub Release (linux/windows/darwin, amd64/arm64, archives + checksums.txt).
  • Local lint: make lint — install the official golangci-lint binary (v2.11.4+ or equivalent), built with the same or newer Go minor as in go.mod; a binary built with an older Go cannot analyze this project.
  • Forgejo / Gitea Actions: workflow copies under [.forgejo/workflows/](.forgejo/workflows/).

On Forgejo, GoReleaser uses origin and the instance API to publish releases; the job uses GITHUB_TOKEN — the built-in Actions-compat token (needs contents: write on the repo).

Local packaging check without publishing:

go run github.com/goreleaser/goreleaser/v2@v2.4.8 release --snapshot --clean

License

Licensed under the GNU General Public License v3.0. Full text: LICENSE.