Estoy trabajando para crear un servicio que mantenga un demonio IPFS, como parte de una red IPFS privada.
Para intentar mantener IPFS disponible para todos los usuarios fácilmente, elegí inicializar el repositorio de IPFS en una carpeta /opt. Configuré IPFS_PATH de /etc/bash.bashrc
manera que la ubicación predeterminada para todos los usuarios esté en esta carpeta/opt:
18:53:02 [foo@server ~]
$ echo $IPFS_PATH
/opt/ipfsNode/.ipfs
Una vez completado esto, inicialicé con éxito mi repositorio IPFS y pude iniciar el demonio como se esperaba.
$ 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
Para realizar la transición de esto a un servicio, creé esta definición de servicio en /etc/systemd/system/ipfs.service
, usando un ejemplo de unlaboratorio de eleks:
[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
Sin embargo, parece intentar usar un repositorio inicializado en la parte superior de mi directorio de inicio ~/.ipfs
en lugar de ${IPFS_PATH}/.ipfs
cuando se inicia el servicio. ¿Cómo puedo cambiar esto para encontrar el repositorio que ya inicialicé?
● 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'.
Respuesta1
Intente agregar esta línea en [Servicio]
Environment="IPFS_PATH=/path/to/ipfs"