Files
fdroidserver-ipfs/README.md
T
mrambossekandClaude Opus 4.7 a6168221d1
Build fdroidserver-ipfs image / build (push) Successful in 22s
initial: fdroidserver-ipfs image
Downstream of registry.gitlab.com/fdroid/docker-executable-fdroidserver:master,
patched for publishing F-Droid repos over IPFS:

  - install Debian ipfs-cid so fdroidserver populates ipfsCIDv1 on every
    package file (APKs, icons, screenshots), which fdroidclient with an
    IPFS-gateway mirror routes via CID natively
  - rehash.py wrapper that adds ipfsCIDv1 to entry["index"], renames the
    index to a content-addressed filename, and re-signs entry.jar after
    `fdroid update` — closes the cache-busting gap on the index file itself
  - entrypoint.sh chains rehash automatically after any `fdroid update`,
    so existing fdroid-via-docker wrappers need no changes

See SPEC.md for the rationale and Change 2's algorithm; README.md for
end-user usage.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 22:48:39 +02:00

39 lines
1.3 KiB
Markdown

# fdroidserver-ipfs
Downstream of `registry.gitlab.com/fdroid/docker-executable-fdroidserver:master`,
patched for publishing F-Droid repos over IPFS. See [SPEC.md](SPEC.md) for the why.
## Usage
Drop-in replacement for the upstream image. Run `fdroid update` exactly as
before — the image's entrypoint chains `fdroidserver-ipfs-rehash` after any
successful `update`, so you never have to remember the second step:
```bash
docker run --rm -v "$PWD:/repo" your-image-tag update
# ↑ runs `fdroid update`, then automatically renames index, adds ipfsCIDv1,
# re-signs entry.jar (and regenerates entry.json.asc if GPG was in the loop).
```
Every other subcommand (`build`, `publish`, `gpgsign`, …) passes straight
through to `fdroid` unchanged.
### Running the rehash standalone
If you want to invoke the rehash directly (e.g. on an already-published repo):
```bash
docker run --rm -v "$PWD:/repo" \
--entrypoint fdroidserver-ipfs-rehash \
your-image-tag
```
`fdroidserver-ipfs-rehash` discovers `repo/` (and `archive/` if configured)
from `config.yml`. If GPG signing was already part of your pipeline (i.e.
`entry.json.asc` exists), it invokes `fdroid gpgsign` itself to regenerate
the invalidated signatures. Pass repodirs explicitly to override discovery:
```bash
fdroidserver-ipfs-rehash repo archive
```