-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
234bfbf Add init scripts and docs for Upstart and OpenRC (Adam Weiss)
- Loading branch information
Showing
8 changed files
with
289 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Sample configuration files for: | ||
|
||
SystemD: bitcoind.service | ||
Upstart: bitcoind.conf | ||
OpenRC: bitcoind.openrc | ||
bitcoind.openrcconf | ||
|
||
have been made available to assist packagers in creating node packages here. | ||
|
||
See doc/init.md for more information. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
description "Bitcoin Core Daemon" | ||
|
||
start on runlevel [2345] | ||
stop on starting rc RUNLEVEL=[016] | ||
|
||
env BITCOIND_BIN="/usr/bin/bitcoind" | ||
env BITCOIND_USER="bitcoin" | ||
env BITCOIND_GROUP="bitcoin" | ||
env BITCOIND_PIDDIR="/var/run/bitcoind" | ||
# upstart can't handle variables constructed with other variables | ||
env BITCOIND_PIDFILE="/var/run/bitcoind/bitcoind.pid" | ||
env BITCOIND_CONFIGFILE="/etc/bitcoin/bitcoin.conf" | ||
env BITCOIND_DATADIR="/var/lib/bitcoind" | ||
|
||
expect fork | ||
|
||
respawn | ||
respawn limit 5 120 | ||
kill timeout 60 | ||
|
||
pre-start script | ||
# this will catch non-existent config files | ||
# bitcoind will check and exit with this very warning, but it can do so | ||
# long after forking, leaving upstart to think everything started fine. | ||
# since this is a commonly encountered case on install, just check and | ||
# warn here. | ||
if ! grep -qs '^rpcpassword=' "$BITCOIND_CONFIGFILE" ; then | ||
echo "ERROR: You must set a secure rpcpassword to run bitcoind." | ||
echo "The setting must appear in $BITCOIND_CONFIGFILE" | ||
echo | ||
echo "This password is security critical to securing wallets " | ||
echo "and must not be the same as the rpcuser setting." | ||
echo "You can generate a suitable random password using the following" | ||
echo "command from the shell:" | ||
echo | ||
echo "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'" | ||
echo | ||
echo "It is also recommended that you also set alertnotify so you are " | ||
echo "notified of problems:" | ||
echo | ||
echo "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \ | ||
"[email protected]" | ||
echo | ||
exit 1 | ||
fi | ||
|
||
mkdir -p "$BITCOIND_PIDDIR" | ||
chmod 0755 "$BITCOIND_PIDDIR" | ||
chown $BITCOIND_USER:$BITCOIND_GROUP "$BITCOIND_PIDDIR" | ||
chown $BITCOIND_USER:$BITCOIND_GROUP "$BITCOIND_CONFIGFILE" | ||
chmod 0660 "$BITCOIND_CONFIGFILE" | ||
end script | ||
|
||
exec start-stop-daemon \ | ||
--start \ | ||
--pidfile "$BITCOIND_PIDFILE" \ | ||
--chuid $BITCOIND_USER:$BITCOIND_GROUP \ | ||
--exec "$BITCOIND_BIN" \ | ||
-- \ | ||
-pid="$BITCOIND_PIDFILE" \ | ||
-conf="$BITCOIND_CONFIGFILE" \ | ||
-datadir="$BITCOIND_DATADIR" \ | ||
-disablewallet \ | ||
-daemon | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
#!/sbin/runscript | ||
|
||
# backward compatibility for existing gentoo layout | ||
# | ||
if [ -d "/var/lib/bitcoin/.bitcoin" ]; then | ||
BITCOIND_DEFAULT_DATADIR="/var/lib/bitcoin/.bitcoin" | ||
else | ||
BITCOIND_DEFAULT_DATADIR="/var/lib/bitcoind" | ||
fi | ||
|
||
BITCOIND_CONFIGFILE=${BITCOIND_CONFIGFILE:-/etc/bitcoin/bitcoin.conf} | ||
BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/bitcoind} | ||
BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/bitcoind.pid} | ||
BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}} | ||
BITCOIND_USER=${BITCOIND_USER:-bitcoin} | ||
BITCOIND_GROUP=${BITCOIND_GROUP:-bitcoin} | ||
BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/bitcoind} | ||
|
||
name="Bitcoin Core Daemon" | ||
description="Bitcoin crypto-currency p2p network daemon" | ||
|
||
command="/usr/bin/bitcoind" | ||
command_args="-pid=\"${BITCOIND_PIDFILE}\" \ | ||
-conf=\"${BITCOIND_CONFIGFILE}\" \ | ||
-datadir=\"${BITCOIND_DATADIR}\" \ | ||
-daemon \ | ||
${BITCOIND_OPTS}" | ||
|
||
required_files="${BITCOIND_CONFIGFILE}" | ||
start_stop_daemon_args="-u ${BITCOIND_USER} \ | ||
-N ${BITCOIND_NICE:-0} -w 2000" | ||
pidfile="${BITCOIND_PIDFILE}" | ||
retry=60 | ||
|
||
depend() { | ||
need localmount net | ||
} | ||
|
||
# verify | ||
# 1) that the datadir exists and is writable (or create it) | ||
# 2) that a directory for the pid exists and is writable | ||
# 3) ownership and permissions on the config file | ||
start_pre() { | ||
checkpath \ | ||
-d \ | ||
--mode 0750 \ | ||
--owner "${BITCOIND_USER}:${BITCOIND_GROUP}" \ | ||
"${BITCOIND_DATADIR}" | ||
|
||
checkpath \ | ||
-d \ | ||
--mode 0755 \ | ||
--owner "${BITCOIND_USER}:${BITCOIND_GROUP}" \ | ||
"${BITCOIND_PIDDIR}" | ||
|
||
checkpath -f \ | ||
-o ${BITCOIND_USER}:${BITCOIND_GROUP} \ | ||
-m 0660 \ | ||
${BITCOIND_CONFIGFILE} | ||
|
||
checkconfig || return 1 | ||
} | ||
|
||
checkconfig() | ||
{ | ||
if ! grep -qs '^rpcpassword=' "${BITCOIND_CONFIGFILE}" ; then | ||
eerror "" | ||
eerror "ERROR: You must set a secure rpcpassword to run bitcoind." | ||
eerror "The setting must appear in ${BITCOIND_CONFIGFILE}" | ||
eerror "" | ||
eerror "This password is security critical to securing wallets " | ||
eerror "and must not be the same as the rpcuser setting." | ||
eerror "You can generate a suitable random password using the following" | ||
eerror "command from the shell:" | ||
eerror "" | ||
eerror "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'" | ||
eerror "" | ||
eerror "It is also recommended that you also set alertnotify so you are " | ||
eerror "notified of problems:" | ||
eerror "" | ||
eerror "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \ | ||
"[email protected]" | ||
eerror "" | ||
return 1 | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# /etc/conf.d/bitcoind: config file for /etc/init.d/bitcoind | ||
|
||
# Config file location | ||
#BITCOIND_CONFIGFILE="/etc/bitcoin/bitcoin.conf" | ||
|
||
# What directory to write pidfile to? (created and owned by $BITCOIND_USER) | ||
#BITCOIND_PIDDIR="/var/run/bitcoind" | ||
|
||
# What filename to give the pidfile | ||
#BITCOIND_PIDFILE="${BITCOIND_PIDDIR}/bitcoind.pid" | ||
|
||
# Where to write bitcoind data (be mindful that the blockchain is large) | ||
#BITCOIND_DATADIR="/var/lib/bitcoind" | ||
|
||
# User and group to own bitcoind process | ||
#BITCOIND_USER="bitcoin" | ||
#BITCOIND_GROUP="bitcoin" | ||
|
||
# Path to bitcoind executable | ||
#BITCOIND_BIN="/usr/bin/bitcoind" | ||
|
||
# Nice value to run bitcoind under | ||
#BITCOIND_NICE=0 | ||
|
||
# Additional options (avoid -conf and -datadir, use flags above) | ||
BITCOIND_OPTS="-disablewallet" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
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 | ||
|
||
1. Service User | ||
--------------------------------- | ||
|
||
All three startup configurations assume the existence of a "bitcoin" user | ||
and group. They must be created before attempting to use these scripts. | ||
|
||
2. Configuration | ||
--------------------------------- | ||
|
||
At a bare minimum, bitcoind requires that the rpcpassword setting be set | ||
when running as a daemon. If the configuration file does not exist or this | ||
setting is not set, bitcoind will shutdown promptly after startup. | ||
|
||
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 "-daemon" flag, and no rpcpassword is set, it will | ||
print a randomly generated suitable password to stderr. You can also | ||
generate one from the shell yourself like this: | ||
|
||
bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo' | ||
|
||
Once you have a password in hand, set rpcpassword= in /etc/bitcoin/bitcoin.conf | ||
|
||
For an example configuration file that describes the configuration settings, | ||
see contrib/debian/examples/bitcoin.conf. | ||
|
||
3. Paths | ||
--------------------------------- | ||
|
||
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) | ||
/var/lib/bitcoind/bitcoind.pid (systemd) | ||
|
||
The configuration file, PID directory (if applicable) and data directory | ||
should all 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. | ||
|
||
4. Installing Service Configuration | ||
----------------------------------- | ||
|
||
4a) systemd | ||
|
||
Installing this .service file consists on 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" | ||
|
||
4b) 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" | ||
|
||
4c) Upstart (for Debian/Ubuntu based distributions) | ||
|
||
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 uitility. | ||
|
||
5. Auto-respawn | ||
----------------------------------- | ||
|
||
Auto respawning is currently only configured for Upstart and systemd. | ||
Reasonable defaults have been chosen but YMMV. | ||
|
||
|
This file was deleted.
Oops, something went wrong.