A SystemD Unit for IPFS

2 minute read Published:

Writing a SystemD Unit for IPFS

IPFS or Interplanetary File System allows you to distribute Files and thus Websites and Videos over a distributed Net much like the Torrent Network. In order to use it on your machine you have to compile it manually or use a precompiled Version from the website. However the Binarys and the github Repo are lacking a SystemD unit file.

Writing the Files

A socket activated unit needs two files: a Socket file and a Unit file. But first of all: Where should a user generated systemd file live? For user created unit files there are two places to choose from: /etc/systemd/user/ or ~/.config/systemd/user/ however one can always choose /etc/systemd/system/.

So wherever you want to save your file here is what they should look like:

Initiate the Repo

If you are using ipfs for the first time you need to Initiate the Repo via ipfs init - you could also decide to use a service user for ipfs

Writing the service file

/etc/systemd/system/ipfs-daemon.service

[Unit]
Description=IPTS Daemon Service

[Service]
Type=simple
ExecStart=/usr/local/bin/ipfs daemon
User=**The User you initialized the service with**

[Install]
WantedBy=multi-user.target

Testing

As privileged user reload the systemctl daemon via systemctl daemon-reload to load the new service files. Next activate the socket file via systemctl enable ipfs-daemon.service --now and verify that the service is running systemctl status ipfs-dameon.service

Conclusio

Writing a systemD Unit is quite simple. An advanced topic would be socket activation. Thus only starting the service when the specified socket is called.