我正在努力建立一個維護 IPFS 守護程序的服務,作為私人 IPFS 網路的一部分。
為了嘗試讓 IPFS 輕鬆可供所有使用者使用,我選擇在 /opt 資料夾中初始化 IPFS 儲存庫。我設定 IPFS_PATH ,/etc/bash.bashrc
使所有使用者的預設位置都在此 /opt 資料夾中:
18:53:02 [foo@server ~]
$ echo $IPFS_PATH
/opt/ipfsNode/.ipfs
完成此操作後,我成功初始化了 IPFS 儲存庫並能夠按預期啟動守護程序。
$ ipfs daemon
Initializing daemon...
go-ipfs version: 0.12.2
Repo version: 12
System version: amd64/linux
Golang version: go1.16.15
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: [redacted]
Swarm listening on /ip4/<ip>/tcp/4001
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/<ip>/tcp/4001
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/<ip>/tcp/5001
WebUI: http://<ip>:5001/webui
Gateway (readonly) server listening on /ip4/<ip>/tcp/8080
Daemon is ready
為了將其轉換為服務,我在 處建立了此服務定義/etc/systemd/system/ipfs.service
,使用了來自埃萊克斯實驗室:
[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
User=foo
[Install]
WantedBy=multi-user.target
但是,它似乎嘗試使用在我的主目錄頂部初始化的儲存庫,~/.ipfs
而不是${IPFS_PATH}/.ipfs
在服務啟動時初始化。如何更改它以找到我已經初始化的存儲庫?
● ipfs.service - IPFS Daemon
Loaded: loaded (/etc/systemd/system/ipfs.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2022-06-01 18:43:03 UTC; 17min ago
Process: 227966 ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub (code=exited, status=1/FAILURE)
Main PID: 227966 (code=exited, status=1/FAILURE)
Jun 01 18:43:03 <server> systemd[1]: Started IPFS Daemon.
Jun 01 18:43:03 <server> ipfs[227966]: Initializing daemon...
Jun 01 18:43:03 <server> ipfs[227966]: go-ipfs version: 0.12.2
Jun 01 18:43:03 <server> ipfs[227966]: Repo version: 12
Jun 01 18:43:03 <server> ipfs[227966]: System version: amd64/linux
Jun 01 18:43:03 <server> ipfs[227966]: Golang version: go1.16.15
Jun 01 18:43:03 <server> ipfs[227966]: Error: no IPFS repo found in /home/foo/.ipfs.
Jun 01 18:43:03 <server> ipfs[227966]: please run: 'ipfs init'
Jun 01 18:43:03 <server> systemd[1]: ipfs.service: Main process exited, code=exited, status=1/FAILURE
Jun 01 18:43:03 <server> systemd[1]: ipfs.service: Failed with result 'exit-code'.
答案1
嘗試在 [Service] 下新增此行
Environment="IPFS_PATH=/path/to/ipfs"