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

如何修改systemd服务中IPFS守护进程的仓库存储路径

问题原因

你在/etc/bash.bashrc中配置的IPFS_PATH环境变量仅对交互式登录的Shell会话生效,systemd启动系统服务时不会加载任何Shell配置文件(包括bashrc、profile等),因此服务进程读不到你设置的仓库路径,默认回退到执行用户家目录下的~/.ipfs路径,最终报仓库不存在的错误。

解决方法

两种配置方式任选其一即可:

方式1:在服务文件中显式指定环境变量(最规范)

直接修改/etc/systemd/system/ipfs.service,在[Service]段添加Environment行指定IPFS仓库路径,修改后的完整配置如下:

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
# 显式指定IPFS仓库路径
Environment="IPFS_PATH=/opt/ipfsNode/.ipfs"
ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
User=foo
# 可选配置:进程异常退出后自动重启
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

注意:提前确认foo用户对/opt/ipfsNode/.ipfs目录及其所有子文件有完整读写权限,否则会触发权限报错,可执行sudo chown -R foo:foo /opt/ipfsNode/.ipfs修正权限。

方式2:启动命令直接指定仓库路径

也可以不依赖环境变量,直接在ipfs daemon启动参数中加--repo参数指定仓库路径,仅需修改ExecStart行即可:

ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub --repo=/opt/ipfsNode/.ipfs
生效操作

修改完服务文件后,依次执行以下命令重载配置并启动服务:

# 重载systemd配置
sudo systemctl daemon-reload
# 重启ipfs服务
sudo systemctl restart ipfs
# 查看服务状态确认启动正常
sudo systemctl status ipfs

启动正常后可以执行ipfs swarm peers验证节点连接状态,确认服务运行符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:21:40