{"id":15700620,"url":"https://github.com/o-az/eyepfs","last_synced_at":"2025-05-07T05:21:26.453Z","repository":{"id":189047715,"uuid":"679846410","full_name":"o-az/eyepfs","owner":"o-az","description":"Hosted IPFS Gateway \u0026 HTTP Proxy","archived":false,"fork":false,"pushed_at":"2023-09-13T01:15:13.000Z","size":67,"stargazers_count":8,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T06:41:25.675Z","etag":null,"topics":["api","gateway","gateway-services","ipfs","proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/o-az.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-17T18:48:06.000Z","updated_at":"2025-03-30T00:51:14.000Z","dependencies_parsed_at":"2023-08-18T03:36:46.532Z","dependency_job_id":"7bbe9dea-5dcf-4524-b6df-d6a70852183d","html_url":"https://github.com/o-az/eyepfs","commit_stats":null,"previous_names":["o-az/eyepfs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o-az%2Feyepfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o-az%2Feyepfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o-az%2Feyepfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o-az%2Feyepfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/o-az","download_url":"https://codeload.github.com/o-az/eyepfs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252819046,"owners_count":21808964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","gateway","gateway-services","ipfs","proxy"],"created_at":"2024-10-03T19:51:11.289Z","updated_at":"2025-05-07T05:21:26.435Z","avatar_url":"https://github.com/o-az.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hosted IPFS Gateway \u0026 HTTP Proxy\n\n## Purpose\n\nOvercome public IPFS gateway limitations, such as [429 Too Many Requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429), by hosting your own IPFS Gateway and HTTP Proxy.\n\n![429 Example](https://github-production-user-asset-6210df.s3.amazonaws.com/23618431/261382276-f08af99b-fad0-4076-afbf-91d41b428147.png)\n\n## Usage\n\n```sh\ngit clone https://github.com/o-az/eyepfs.git\n```\n\n#### Build **`Dockerfile`**\n\n```sh\ndocker buildx build . \\\n  --progress 'plain' \\\n  --file 'Dockerfile' \\\n  --platform 'linux/amd64' \\\n  --tag 'ipfs_gateway_proxy'\n\n# or `make docker-build`\n```\n\n#### Run the image you just built\n\n```sh\ndocker run \\\n  --rm \\\n  -it \\\n  --name 'ipfs_gateway_proxy' \\\n  --env IPFS_GATEWAY_HOST='http://127.0.0.1:8080' \\\n  --env ALLOW_ORIGINS='*' \\\n  --publish '3031:3031' \\\n  --platform 'linux/amd64' \\\n  'ipfs_gateway_proxy'\n\n# or `make docker-run`\n```\n\n#### Run a quick test\n\n\u003csup\u003e _note: btw it may need a few seconds if it's your first time, no more than 6. So if request fail, just retry_\u003c/sup\u003e\n\nOpen this in browser: \u003chttp://127.0.0.1:3031/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi\u003e\n\nor run this:\n\n```sh\ncurl --location --request GET \\\n  --url 'http://127.0.0.1:3031/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi' \\\n  --output '/tmp/ipfs_proxy_image.jpeg' \u0026\u0026 \\\n  stat '/tmp/ipfs_proxy_image.jpeg'\n```\n\nRestricting access to your gateway is as simple as setting `ALLOW_ORIGINS` to a comma separated list of allowed origins. Example:\n\n```sh\ndocker run \\\n  --rm \\\n  -it \\\n  --name 'ipfs_gateway_proxy' \\\n  --env IPFS_GATEWAY_HOST='http://127.0.0.1:8080' \\\n  --env ALLOW_ORIGINS='http://example.com,http://example.org' \\\n  --publish '3031:3031' \\\n  'ipfs_gateway_proxy'\n```\n\n## Deployment\n\nanywhere that can run a **`Dockerfile`** 🐳\n\n[**`Railway.app`**](https://railway.app/)\n\n```sh\nRAILWAY_DOCKERFILE_PATH=Dockerfile railway up --service 'api' --detach --environment 'production'\n```\n\n[**`fly.io`**](https://fly.io/)\n\n```sh\nfly deploy --app='ipfs_gateway' --dockerfile Dockerfile --remote-only --detach --build-arg PORT=3031 --env IPFS_PROFILE='server' --env IPFS_GATEWAY_HOST='http://127.0.0.1:8080' --env ALLOW_ORIGINS='*'\n```\n\n## Upcoming Features\n\n- [x] 🔨 (`CORS`) configuration,\n- [x] (`Kubo`) disable all methods but `GET` and `HEAD`, and `OPTIONS` for CORS,\n- [x] (`Kubo`) set `Swarm#ConnMgr#Type` to `\"none\"` (disable all swarm connections),\n- [ ] (`CI`) workflow publish image to Docker Hub \u0026 GitHub Container Registry,\n- [ ] (`CI`) Generate a simple performance report on push,\n- [ ] Got any ideas? [Let's chat](https://github.com/o-az/eyepfs/issues/new)\n\nIf an item has 🔨 it means it's configurable through env variables\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo-az%2Feyepfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fo-az%2Feyepfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo-az%2Feyepfs/lists"}