diff options
Diffstat (limited to 'doc/init.md')
-rw-r--r-- | doc/init.md | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/doc/init.md b/doc/init.md new file mode 100644 index 0000000000..99aa0a0def --- /dev/null +++ b/doc/init.md @@ -0,0 +1,145 @@ +Sample init scripts and service configuration for bitcoind +========================================================== + +Sample scripts and configuration files for systemd, Upstart and OpenRC +can be found in the contrib/init folder. + + contrib/init/bitcoind.service: systemd service unit configuration + contrib/init/bitcoind.openrc: OpenRC compatible SysV style init script + contrib/init/bitcoind.openrcconf: OpenRC conf.d file + contrib/init/bitcoind.conf: Upstart service configuration file + contrib/init/bitcoind.init: CentOS compatible SysV style init script + +Service User +--------------------------------- + +All three Linux startup configurations assume the existence of a "bitcoin" user +and group. They must be created before attempting to use these scripts. +The macOS configuration assumes bitcoind will be set up for the current user. + +Configuration +--------------------------------- + +Running bitcoind as a daemon does not require any manual configuration. You may +set the `rpcauth` setting in the `bitcoin.conf` configuration file to override +the default behaviour of using a special cookie for authentication. + +This password does not have to be remembered or typed as it is mostly used +as a fixed token that bitcoind and client programs read from the configuration +file, however it is recommended that a strong and secure password be used +as this password is security critical to securing the wallet should the +wallet be enabled. + +If bitcoind is run with the "-server" flag (set by default), and no rpcpassword is set, +it will use a special cookie file for authentication. The cookie is generated with random +content when the daemon starts, and deleted when it exits. Read access to this file +controls who can access it through RPC. + +By default the cookie is stored in the data directory, but it's location can be overridden +with the option '-rpccookiefile'. + +This allows for running bitcoind without having to do any manual configuration. + +`conf`, `pid`, and `wallet` accept relative paths which are interpreted as +relative to the data directory. `wallet` *only* supports relative paths. + +For an example configuration file that describes the configuration settings, +see `share/examples/bitcoin.conf`. + +Paths +--------------------------------- + +### Linux + +All three configurations assume several paths that might need to be adjusted. + +Binary: `/usr/bin/bitcoind` +Configuration file: `/etc/bitcoin/bitcoin.conf` +Data directory: `/var/lib/bitcoind` +PID file: `/var/run/bitcoind/bitcoind.pid` (OpenRC and Upstart) or `/run/bitcoind/bitcoind.pid` (systemd) +Lock file: `/var/lock/subsys/bitcoind` (CentOS) + +The PID directory (if applicable) and data directory should both be owned by the +bitcoin user and group. It is advised for security reasons to make the +configuration file and data directory only readable by the bitcoin user and +group. Access to bitcoin-cli and other bitcoind rpc clients can then be +controlled by group membership. + +NOTE: When using the systemd .service file, the creation of the aforementioned +directories and the setting of their permissions is automatically handled by +systemd. Directories are given a permission of 710, giving the bitcoin group +access to files under it _if_ the files themselves give permission to the +bitcoin group to do so (e.g. when `-sysperms` is specified). This does not allow +for the listing of files under the directory. + +NOTE: It is not currently possible to override `datadir` in +`/etc/bitcoin/bitcoin.conf` with the current systemd, OpenRC, and Upstart init +files out-of-the-box. This is because the command line options specified in the +init files take precedence over the configurations in +`/etc/bitcoin/bitcoin.conf`. However, some init systems have their own +configuration mechanisms that would allow for overriding the command line +options specified in the init files (e.g. setting `BITCOIND_DATADIR` for +OpenRC). + +### macOS + +Binary: `/usr/local/bin/bitcoind` +Configuration file: `~/Library/Application Support/Bitcoin/bitcoin.conf` +Data directory: `~/Library/Application Support/Bitcoin` +Lock file: `~/Library/Application Support/Bitcoin/.lock` + +Installing Service Configuration +----------------------------------- + +### systemd + +Installing this .service file consists of just copying it to +/usr/lib/systemd/system directory, followed by the command +`systemctl daemon-reload` in order to update running systemd configuration. + +To test, run `systemctl start bitcoind` and to enable for system startup run +`systemctl enable bitcoind` + +NOTE: When installing for systemd in Debian/Ubuntu the .service file needs to be copied to the /lib/systemd/system directory instead. + +### OpenRC + +Rename bitcoind.openrc to bitcoind and drop it in /etc/init.d. Double +check ownership and permissions and make it executable. Test it with +`/etc/init.d/bitcoind start` and configure it to run on startup with +`rc-update add bitcoind` + +### Upstart (for Debian/Ubuntu based distributions) + +Upstart is the default init system for Debian/Ubuntu versions older than 15.04. If you are using version 15.04 or newer and haven't manually configured upstart you should follow the systemd instructions instead. + +Drop bitcoind.conf in /etc/init. Test by running `service bitcoind start` +it will automatically start on reboot. + +NOTE: This script is incompatible with CentOS 5 and Amazon Linux 2014 as they +use old versions of Upstart and do not supply the start-stop-daemon utility. + +### CentOS + +Copy bitcoind.init to /etc/init.d/bitcoind. Test by running `service bitcoind start`. + +Using this script, you can adjust the path and flags to the bitcoind program by +setting the BITCOIND and FLAGS environment variables in the file +/etc/sysconfig/bitcoind. You can also use the DAEMONOPTS environment variable here. + +### macOS + +Copy org.bitcoin.bitcoind.plist into ~/Library/LaunchAgents. Load the launch agent by +running `launchctl load ~/Library/LaunchAgents/org.bitcoin.bitcoind.plist`. + +This Launch Agent will cause bitcoind to start whenever the user logs in. + +NOTE: This approach is intended for those wanting to run bitcoind as the current user. +You will need to modify org.bitcoin.bitcoind.plist if you intend to use it as a +Launch Daemon with a dedicated bitcoin user. + +Auto-respawn +----------------------------------- + +Auto respawning is currently only configured for Upstart and systemd. +Reasonable defaults have been chosen but YMMV. |