{"id":16202056,"url":"https://github.com/sitoi/private-network-ipfs","last_synced_at":"2025-06-20T17:34:31.507Z","repository":{"id":107790899,"uuid":"179207699","full_name":"Sitoi/private-network-ipfs","owner":"Sitoi","description":"利用 Docker 搭建 IPFS 私有网络","archived":false,"fork":false,"pushed_at":"2019-08-13T17:05:44.000Z","size":16,"stargazers_count":13,"open_issues_count":0,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T16:11:02.720Z","etag":null,"topics":["docker","docker-ipfs","ipfs"],"latest_commit_sha":null,"homepage":"https://sitoi.github.io/private-network-ipfs","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sitoi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-04-03T04:00:58.000Z","updated_at":"2024-12-17T07:49:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"f947d851-52a0-4d98-b993-5d066b445b78","html_url":"https://github.com/Sitoi/private-network-ipfs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sitoi%2Fprivate-network-ipfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sitoi%2Fprivate-network-ipfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sitoi%2Fprivate-network-ipfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sitoi%2Fprivate-network-ipfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sitoi","download_url":"https://codeload.github.com/Sitoi/private-network-ipfs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243971180,"owners_count":20376784,"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":["docker","docker-ipfs","ipfs"],"created_at":"2024-10-10T09:45:23.068Z","updated_at":"2025-03-19T05:31:09.645Z","avatar_url":"https://github.com/Sitoi.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 搭建 IPFS 私有网络\n\n## 环境\n\n两台 Linux 设备，分别配置他们的 ip 地址为 192.168.1.244 和 192.168.1.246\n\n## 步骤\n\n- 修改挂载目录\n- 通过 docker 创建 IPFS 容器\n- 确保配置 IPFS API 以允许跨源（CORS）请求\n- 生成并分发一个共享 key\n- 移除默认的 boostrap 节点\n- 添加节点创建网络\n- 重启服务\n- 查看邻居\n\n### 修改挂载目录\n\n\u003e 该步骤可跳过，默认挂载目录为 项目目录下的 `data` 和 `staging` 文件夹\n\n```yaml\nversion: \"3\"\n\nservices:\n\n  ipfs_host:\n    container_name: ipfs_host\n    image: docker.io/ipfs/go-ipfs:latest\n    restart: always\n    volumes:\n      - ./staging:/export                 # (可不修改)修改 挂载目录 ./staging\n      - ./data:/data/ipfs                 # (可不修改)修改 挂载目录 ./data\n    ports:\n      - 4001:4001\n      - 0.0.0.0:8080:8080\n      - 0.0.0.0:5001:5001\n```\n\n### 通过 docker 创建 IPFS 容器\n\n\u003e 192.168.1.244 和 192.168.1.246 节点 创建 IPFS 容器\n\n运行 make 命令\n\n```bash\nmake up\n```\n\n登陆网页：http://192.168.1.244:5001/webui\n\n登陆网页：http://192.168.1.246:5001/webui\n\n创建容器到正常访问页面所要等待时间大约 `3-5` 分钟\n\n\n### 确保配置 IPFS API 以允许跨源（CORS）请求\n\n\u003e 192.168.1.244 和 192.168.1.246 节点 配置跨源（CORS）请求\n\n运行以下命令：\n\n```bash\ndocker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '[\"*\"]' \ndocker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '[\"PUT\", \"GET\", \"POST\"]'\n```\n\n### 生成并分发一个共享 key\n\n\u003e 192.168.1.244 和 192.168.1.246 节点 配置跨源（CORS）请求\n\n\u003e 注：每个节点的 key 文件`内容保持一致`\n\n- 生成key\n\n```bash\ngo get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen\n./ipfs-swarm-key-gen \u003e swarm.key\n```\n\n- 分发 key 到每个节点\n\n目标路径： 挂载目录的 `data` 文件夹内\n\n```bash\ncp swarm.key data/\n```\n\n### 移除默认的 boostrap 节点\n\n\u003e 192.168.1.244 和 192.168.1.246 节点 配置跨源（CORS）请求\n\n```bash\ndocker exec ipfs_host ipfs bootstrap rm --all\n```\n\n### 添加节点创建网络\n\n- 获取 192.168.1.244 节点 信息\n\n```bash\ndocker exec ipfs_host ipfs id\n```\n\n```json\n{\n\t\"ID\": \"QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7\",\n\t\"PublicKey\": \"CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGwu8A5Xw4okQmkpufHLIjIO5ZhQGnCGzqD/OgcGE5MNfPe6pSurRQTI9AgQWtODJOGWqj7GBe1PgZXHIVkIhVjPIQftpcJJ/D6STJIzH9gGApc7SA8iIh2i9TaTontnvLuDswRj2hce2vWXQhh3DZ8ttv9rrPYfMcuM0tWs7klMQgt3C67prxgTd0esXm5DevtgJeHazimJcjNMBsAc9niKBgV0KFwxZPGouBBFibzF9jTWOC0qk52c33a4LcvKohLWnJbJGJ8mQj1oI9Srmo2SV37UbAVECxRvCDa0HhJkUUzkzpyCFUncZ03Mz0D6VTTCEoFKMBcahHM7ZuCKezAgMBAAE=\",\n\t\"Addresses\": [\n\t\t\"/ip4/127.0.0.1/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7\",\n\t\t\"/ip4/172.19.0.2/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7\",\n\t\t\"/ip6/::1/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7\"\n\t],\n\t\"AgentVersion\": \"go-ipfs/0.4.19/52776a7\",\n\t\"ProtocolVersion\": \"ipfs/0.1.0\"\n}\n```\n\n- 192.168.1.246 节点添加 192.168.1.244 \n\n```bash\ndocker exec ipfs_host ipfs bootstrap add /ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7\n```\n\n### 重启服务\n\n\u003e 192.168.1.244 和 192.168.1.246 节点 服务重启\n\n```bash\ndocker restart ipfs_host\n```\n\n### 查看邻居\n\n\u003e 192.168.1.244 查看邻居\n\n```bash\ndocker exec ipfs_host ipfs swarm peers\n```\n\n```bash\n/ip4/192.168.1.246/tcp/4001/ipfs/QmVUF31gtrV9H3V1ndDCEGfKLahBNi8E9PT4AHj6m2zpjj\n```\n\n\u003e 192.168.1.246 查看邻居\n\n```bash\ndocker exec ipfs_host ipfs swarm peers\n```\n\n```bash\n/ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7\n```\n\n## 测试\n\n- 在 192.168.1.244 节点 添加文件\n\n```bash\ndocker exec ipfs_host ipfs add /data/ipfs/version\n```\n\n```text\n 2 B / 2 B  100.00%added QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw version\n```\n\n- 在 192.168.1.246 节点 用哈希值读取该文件\n\n```bash\ndocker exec ipfs_host ipfs cat QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw\n```\n\n```text\n7\n```\n\n搭建的私有网络可以正常使用。\n\n\n## 附录\n\n\u003e 查看运行日志\n\n```bash\ndocker logs -f ipfs_host\n```\n\n\u003e 停止容器\n\n```bash\ndocker stop ipfs_host\n```\n\n\u003e 删除容器\n\n```bash\ndocker rm ipfs_host\n```\n\n\u003e 重启容器\n\n```bash\ndocker restart ipfs_host\n```\n\n\u003e 运行 IPFS 命令 \n\n```bash\ndocker exec ipfs_host \u003cipfs cmd\u003e\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsitoi%2Fprivate-network-ipfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsitoi%2Fprivate-network-ipfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsitoi%2Fprivate-network-ipfs/lists"}