You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku上为Django应用运行IPFS daemon?

在Heroku上的Django应用中运行IPFS Daemon的可行方案

我之前刚好折腾过类似的需求,给你几个实际能用的思路,帮你解决和IPFS交互的问题:

方案一:使用Heroku多Buildpack + Procfile启动独立IPFS进程

这是最规范的方式,把IPFS daemon作为一个单独的dyno进程运行:

  1. 先给你的Heroku应用添加IPFS专用的Buildpack:
    heroku buildpacks:add https://github.com/heroku/heroku-buildpack-ipfs.git
    
  2. 确保你的Python Buildpack已经存在(如果之前没加过,执行这个):
    heroku buildpacks:add heroku/python
    
  3. 在项目根目录创建/修改Procfile,同时定义web(Django)和ipfs进程:
    web: gunicorn your_project_name.wsgi
    ipfs: ipfs daemon --enable-pubsub-experiment --routing=dhtclient --api=/ip4/127.0.0.1/tcp/5001
    
  4. 部署后,启动ipfs dyno:
    heroku ps:scale ipfs=1
    
    这样Django应用就能通过本地5001端口访问IPFS API了。

⚠️ 注意:Heroku的dyno文件系统是临时的,重启后IPFS节点的本地存储会被清空,所以如果需要持久化pin的文件,得配合远程pin服务或者第三方存储。

方案二:在Django启动时附带启动IPFS Daemon

如果不想单独开dyno,可以尝试在Django应用启动时后台启动daemon,适合资源占用不大的场景:
在你的Django应用的apps.py里修改启动逻辑:

import subprocess
import os
from django.apps import AppConfig

class YourAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'your_app_name'

    def ready(self):
        # 避免开发模式下重复启动
        if os.environ.get('RUN_MAIN') == 'true' and not os.environ.get('IPFS_DAEMON_STARTED'):
            os.environ['IPFS_DAEMON_STARTED'] = '1'
            # 启动IPFS daemon
            subprocess.Popen([
                'ipfs', 'daemon',
                '--enable-pubsub-experiment',
                '--routing=dhtclient',
                '--api=/ip4/127.0.0.1/tcp/5001'
            ])

然后在settings.py里指定这个AppConfig:

INSTALLED_APPS = [
    # ...其他应用
    'your_app_name.apps.YourAppConfig',
]

⚠️ 风险提示:这种方式下daemon和Django共享同一个dyno资源,容易因为内存/CPU占用过高被Heroku终止进程,而且daemon的日志不好单独排查。

方案三:使用第三方托管IPFS节点(最稳定推荐)

其实Heroku的环境并不适合长期运行IPFS daemon(临时存储+资源限制),更省心的方式是直接连接到第三方托管的IPFS节点:
修改你的Python IPFS API连接代码,指定远程节点地址:

import ipfshttpclient

# 替换成公共节点或者你自己托管的节点地址
client = ipfshttpclient.connect('/ip4/xxx.xxx.xxx.xxx/tcp/5001')

公共节点可以找一些免费的,或者用付费的托管服务(比如Pinata、Infura的IPFS服务),这种方式完全避开了Heroku上运行daemon的各种坑,稳定性更高。


内容的提问来源于stack exchange,提问作者fccoelho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:59:03