From 77f2b04ccef8511731c7ec55fe89fc4de56b00fb Mon Sep 17 00:00:00 2001 From: "@RubenKelevra" Date: Sat, 13 Jun 2020 07:54:40 +0200 Subject: [PATCH] misc/README.md: import readme from ipfs/website repo Authors: @lgierth @CameronNemo @jessicaschilling URL: https://github.com/ipfs/website/blob/master/static/docs/examples/init/README.md License: MIT --- misc/README.md | 249 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 misc/README.md diff --git a/misc/README.md b/misc/README.md new file mode 100644 index 000000000..8462532f6 --- /dev/null +++ b/misc/README.md @@ -0,0 +1,249 @@ +## init system integration + +go-ipfs can be started by your operating system's native init system. + +- [systemd](#systemd) +- [LSB init script](#initd) +- [Upstart/startup job](#upstart) +- [launchd](#launchd) + +### systemd + +For `systemd`, the best approach is to run the daemon in a user session. Here is a sample service file: + +```systemd +[Unit] +Description=IPFS daemon + +[Service] +# Environment="IPFS_PATH=/data/ipfs" # optional path to ipfs init directory if not default ($HOME/.ipfs) +ExecStart=/usr/bin/ipfs daemon +Restart=on-failure + +[Install] +WantedBy=default.target +``` + +To run this in your user session, save it as `~/.config/systemd/user/ipfs.service` (creating directories as necessary). Once you run `ipfs init` to create your IPFS settings, you can control the daemon using the following commands: + +* `systemctl --user start ipfs` - start the daemon +* `systemctl --user stop ipfs` - stop the daemon +* `systemctl --user status ipfs` - get status of the daemon +* `systemctl --user enable ipfs` - enable starting the daemon at boot +* `systemctl --user disable ipfs` - disable starting the daemon at boot + +*Note:* If you want this `--user` service to run at system boot, you must [`enable-linger`](http://www.freedesktop.org/software/systemd/man/loginctl.html) on the account that runs the service: + +``` +# loginctl enable-linger [user] +``` +Read more about `--user` services here: [wiki.archlinux.org:Systemd ](https://wiki.archlinux.org/index.php/Systemd/User#Automatic_start-up_of_systemd_user_instances) + +### initd + +- Here is a full-featured sample service file: https://github.com/dylanPowers/ipfs-linux-service/blob/master/init.d/ipfs +- Use `service` or your distribution's equivalent to control the service. + +## upstart + +- And below is a very basic sample upstart job. **Note the username jbenet**. + +``` +cat /etc/init/ipfs.conf +``` +``` +description "ipfs: interplanetary filesystem" + +start on (local-filesystems and net-device-up IFACE!=lo) +stop on runlevel [!2345] + +limit nofile 524288 1048576 +limit nproc 524288 1048576 +setuid jbenet +chdir /home/jbenet +respawn +exec ipfs daemon +``` + +Another version is available here: + +```sh +ipfs cat /ipfs/QmbYCwVeA23vz6mzAiVQhJNa2JSiRH4ebef1v2e5EkDEZS/ipfs.conf >/etc/init/ipfs.conf +``` + +For both, edit to replace occurrences of `jbenet` with whatever user you want it to run as: + +```sh +sed -i s/jbenet// /etc/init/ipfs.conf +``` + +Once you run `ipfs init` to create your IPFS settings, you can control the daemon using the `init.d` commands: + +```sh +sudo service ipfs start +sudo service ipfs stop +sudo service ipfs restart +... +``` + +## launchd + +Similar to `systemd`, on macOS you can run `go-ipfs` via a user LaunchAgent. + +- Create `~/Library/LaunchAgents/io.ipfs.go-ipfs.plist`: + +```xml + + + + + KeepAlive + + Label + io.ipfs.go-ipfs + ProcessType + Background + ProgramArguments + + /bin/sh + -c + ~/go/bin/ipfs daemon + + RunAtLoad + + + +``` +The reason for running `ipfs` under a shell is to avoid needing to hard-code the user's home directory in the job. + +- To start the job, run `launchctl load ~/Library/LaunchAgents/io.ipfs.go-ipfs.plist` + +Notes: + +- To check that the job is running, run `launchctl list | grep ipfs`. +- IPFS should now start whenever you log in (and exit when you log out). +- [LaunchControl](http://www.soma-zone.com/LaunchControl/) is a GUI tool which simplifies management of LaunchAgents.## init system integration + +go-ipfs can be started by your operating system's native init system. + +- [systemd](#systemd) +- [LSB init script](#initd) +- [Upstart/startup job](#upstart) +- [launchd](#launchd) + +### systemd + +For `systemd`, the best approach is to run the daemon in a user session. Here is a sample service file: + +```systemd +[Unit] +Description=IPFS daemon + +[Service] +# Environment="IPFS_PATH=/data/ipfs" # optional path to ipfs init directory if not default ($HOME/.ipfs) +ExecStart=/usr/bin/ipfs daemon +Restart=on-failure + +[Install] +WantedBy=default.target +``` + +To run this in your user session, save it as `~/.config/systemd/user/ipfs.service` (creating directories as necessary). Once you run `ipfs init` to create your IPFS settings, you can control the daemon using the following commands: + +* `systemctl --user start ipfs` - start the daemon +* `systemctl --user stop ipfs` - stop the daemon +* `systemctl --user status ipfs` - get status of the daemon +* `systemctl --user enable ipfs` - enable starting the daemon at boot +* `systemctl --user disable ipfs` - disable starting the daemon at boot + +*Note:* If you want this `--user` service to run at system boot, you must [`enable-linger`](http://www.freedesktop.org/software/systemd/man/loginctl.html) on the account that runs the service: + +``` +# loginctl enable-linger [user] +``` +Read more about `--user` services here: [wiki.archlinux.org:Systemd ](https://wiki.archlinux.org/index.php/Systemd/User#Automatic_start-up_of_systemd_user_instances) + +### initd + +- Here is a full-featured sample service file: https://github.com/dylanPowers/ipfs-linux-service/blob/master/init.d/ipfs +- Use `service` or your distribution's equivalent to control the service. + +## upstart + +- And below is a very basic sample upstart job. **Note the username jbenet**. + +``` +cat /etc/init/ipfs.conf +``` +``` +description "ipfs: interplanetary filesystem" + +start on (local-filesystems and net-device-up IFACE!=lo) +stop on runlevel [!2345] + +limit nofile 524288 1048576 +limit nproc 524288 1048576 +setuid jbenet +chdir /home/jbenet +respawn +exec ipfs daemon +``` + +Another version is available here: + +```sh +ipfs cat /ipfs/QmbYCwVeA23vz6mzAiVQhJNa2JSiRH4ebef1v2e5EkDEZS/ipfs.conf >/etc/init/ipfs.conf +``` + +For both, edit to replace occurrences of `jbenet` with whatever user you want it to run as: + +```sh +sed -i s/jbenet// /etc/init/ipfs.conf +``` + +Once you run `ipfs init` to create your IPFS settings, you can control the daemon using the `init.d` commands: + +```sh +sudo service ipfs start +sudo service ipfs stop +sudo service ipfs restart +... +``` + +## launchd + +Similar to `systemd`, on macOS you can run `go-ipfs` via a user LaunchAgent. + +- Create `~/Library/LaunchAgents/io.ipfs.go-ipfs.plist`: + +```xml + + + + + KeepAlive + + Label + io.ipfs.go-ipfs + ProcessType + Background + ProgramArguments + + /bin/sh + -c + ~/go/bin/ipfs daemon + + RunAtLoad + + + +``` +The reason for running `ipfs` under a shell is to avoid needing to hard-code the user's home directory in the job. + +- To start the job, run `launchctl load ~/Library/LaunchAgents/io.ipfs.go-ipfs.plist` + +Notes: + +- To check that the job is running, run `launchctl list | grep ipfs`. +- IPFS should now start whenever you log in (and exit when you log out). +- [LaunchControl](http://www.soma-zone.com/LaunchControl/) is a GUI tool which simplifies management of LaunchAgents.