service-worker-gateway icon indicating copy to clipboard operation
service-worker-gateway copied to clipboard

Epic: service-worker-gateway Productionisation

Open lidel opened this issue 1 year ago • 7 comments

For general use

Minimal feature set

  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/19
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/18
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/23
  • [x] https://github.com/ipfs/helia-verified-fetch/issues/9
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/62 (broken relative links on index.html pages)
    • [x] https://github.com/ipfs/helia-verified-fetch/issues/11
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/pull/67
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/83
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/26

Optimizations

  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/73
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/93
  • [x] CI should not [fail when no need to publish to ipfs]
  • [x] #110
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/88
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/72 (pick up after others are tackled first)
  • [ ] #180
  • [x] https://github.com/ipshipyard/waterworks-infra/pull/82

Security and Compliance

  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/30
  • [x] #181
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/33
  • [x] Original URL is passed to @helia/verified-fetch as-is (minimized delta for conformance tests)
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/59
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/116

UX / Configuration

  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/133
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/58
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/80
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/22
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/91
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/32
  • [ ] Documentation for how to self-host
    • Nginx, DNS and TLS setup (expand gist from Russell, replace Fleek with local build + updating DNSLink. via Cloudflare API + token limited to single domain as example)

For inbrowser.link

  • [ ] https://github.com/ipshipyard/waterworks-infra/issues/54
  • [ ] https://github.com/ipshipyard/waterworks-infra/issues/55
  • [x] https://github.com/ipshipyard/waterworks-infra/pull/44
  • [x] https://github.com/ipshipyard/waterworks-infra/pull/42
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/pull/53 (remove need for passing BASE_URL during build)
  • [ ] Subdomain isolation enforced on inbrowser.link (subset of https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/30)
    • [ ] Partially broken, needs https://github.com/ipfs-shipyard/helia-service-worker-gateway/pull/67
  • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/78
  • [ ] Works on localhost gateway and when loaded via ipns:// in Brave
    • [ ] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/28)
  • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/20
    • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/pull/69 (remove dependency on fleek)
    • [x] pin in more places than just our collab cluster
      • #105
      • #107
    • [x] https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/79
    • [ ] Migrate Fleek from Ignite team to ipfs.tech infra team account. (low priority, we will use fleek oly for PR reviews)

Until we get automated testing in place, here's a list of CIDs of websites for testing the Service Worker Gateway

Site CID IPNS subdomain
Wikipedia on IPFS bafybeiaysi4s6lnjev27ln5icwm6tueaw2vdykrtjkwiphwekaywqhcjze n/a
Uniswap Interface bafybeifaiclxh6pc3bdtrrkpbvvqqxq6hz5r6htdzxaga4fikfpu2u56qi n/a
CID tool bafybeiae366charqmeewxags5b2jxtkhfmqyyagvqhrr5l7l7xfpp5ikpa cid-ipfs-tech.ipns
IPFS Docs bafybeiedlhslivmuj2iinnpd24ulx3fyd7cjenddbkeoxbf3snjiz3npda docs-ipfs-tech.ipns

lidel avatar Feb 23 '24 16:02 lidel

I think we should consider how we name this and call it in the docs and materials we will create before we make a splash. I propose we call it "Service Worker IPFS Gateway" or just "Service Worker Gateway" since the fact that it uses Helia is an implementation detail for most users. Moreover, it should be pretty clear that it's powered by Helia since it's the most actively maintained JS IPFS implementation.

I figured it's a good time be bring it up since we're going to be using the inbrowser.link domain for it (which already doesn't have Helia in it).

2color avatar Mar 01 '24 14:03 2color

@2color agree, we can mention Helia on the landing page (https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/58) but this project should be branded as "Service Worker [IPFS] Gateway" or ipfs-swgw.

We already have to move to ipfs/ org, renaming repo could happen at the same time. Let's discuss details in https://github.com/ipfs-shipyard/helia-service-worker-gateway/issues/80

lidel avatar Mar 01 '24 17:03 lidel

I added a list of CID of sites for manual testing to the issue body. Feel free to add any additional ones.

2color avatar Mar 07 '24 10:03 2color

NOTE: subdomains don't automatically refresh the service worker.. so we need some clever logic for checking for service worker assets, and then redirecting to /#/ipfs-sw-config again.

see https://github.com/ipfs-shipyard/helia-service-worker-gateway/pull/96 for some changes that make this more likely to happen

SgtPooki avatar Mar 08 '24 05:03 SgtPooki

Question: should we default to an ipfs favicon when favicon.ico doesn't exist...?

SgtPooki avatar Mar 08 '24 05:03 SgtPooki

We should not modify immutable data. If the DAG that user tries to load does not have favicon, we should not add it.

lidel avatar Mar 11 '24 15:03 lidel

Add the following examples to the list and make sure are working well enough before sharing:

  • Video
  • ENS link
  • IPNS name

2color avatar Mar 26 '24 15:03 2color

@lidel Some additional items we may want to think about adding here:

  • https://github.com/ipfs/helia/issues/665
  • https://github.com/ipfs/helia-verified-fetch/issues/52
  • https://github.com/ipfs/helia-verified-fetch/issues/160
  • https://github.com/ipfs/service-worker-gateway/issues/503
  • https://github.com/ipfs/service-worker-gateway/issues/502

SgtPooki avatar Dec 05 '24 18:12 SgtPooki

I think this is greatly outdated, most of things got resolved, and remaining ones changed priority. We did not maintain list in this issue since March.

Let's close this to reduce noise – if we need new milestone/epic we will fill new issue

lidel avatar Dec 05 '24 22:12 lidel

@SgtPooki thanks for flagging, for issues that exist in other repos:

  • https://github.com/ipfs/helia/issues/665
  • https://github.com/ipfs/helia-verified-fetch/issues/52
  • https://github.com/ipfs/helia-verified-fetch/issues/160

we should have dedicated tickets here that can be closed once a dependency update with fix is applied. Mind creating them? (using same title + link to upstream bug is enough).

lidel avatar Dec 05 '24 22:12 lidel

@lidel done:

  • https://github.com/ipfs/service-worker-gateway/issues/512
  • https://github.com/ipfs/service-worker-gateway/issues/513
  • https://github.com/ipfs/service-worker-gateway/issues/514

SgtPooki avatar Dec 06 '24 16:12 SgtPooki