Add init scripts and docs for Upstart and OpenRC
This commit is contained in:
parent
8b4616bab3
commit
234bfbf6a5
10
contrib/init/README.md
Normal file
10
contrib/init/README.md
Normal file
@ -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.
|
65
contrib/init/bitcoind.conf
Normal file
65
contrib/init/bitcoind.conf
Normal file
@ -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\"" \
|
||||||
|
"admin@foo.com"
|
||||||
|
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
|
||||||
|
|
86
contrib/init/bitcoind.openrc
Normal file
86
contrib/init/bitcoind.openrc
Normal file
@ -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\"" \
|
||||||
|
"admin@foo.com"
|
||||||
|
eerror ""
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
27
contrib/init/bitcoind.openrcconf
Normal file
27
contrib/init/bitcoind.openrcconf
Normal file
@ -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"
|
||||||
|
|
@ -3,15 +3,20 @@ Description=Bitcoin's distributed currency daemon
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User=bitcoind
|
User=bitcoin
|
||||||
Group=bitcoind
|
Group=bitcoin
|
||||||
|
|
||||||
Type=forking
|
Type=forking
|
||||||
PIDFile=/var/lib/bitcoind/bitcoind.pid
|
PIDFile=/var/lib/bitcoind/bitcoind.pid
|
||||||
ExecStart=/usr/bin/bitcoind -daemon -pid=/var/lib/bitcoind/bitcoind.pid -conf=/etc/bitcoind.conf -datadir=/var/lib/bitcoind
|
ExecStart=/usr/bin/bitcoind -daemon -pid=/var/lib/bitcoind/bitcoind.pid \
|
||||||
|
-conf=/etc/bitcoin/bitcoin.conf -datadir=/var/lib/bitcoind -disablewallet
|
||||||
|
|
||||||
Restart=always
|
Restart=always
|
||||||
PrivateTmp=true
|
PrivateTmp=true
|
||||||
|
TimeoutStopSec=60s
|
||||||
|
TimeoutStartSec=2s
|
||||||
|
StartLimitInterval=120s
|
||||||
|
StartLimitBurst=5
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
@ -68,7 +68,7 @@ The Bitcoin repo's [root README](https://github.com/bitcoin/bitcoin/blob/master/
|
|||||||
- [Assets Attribution](assets-attribution.md)
|
- [Assets Attribution](assets-attribution.md)
|
||||||
- [Files](files.md)
|
- [Files](files.md)
|
||||||
- [Tor Support](tor.md)
|
- [Tor Support](tor.md)
|
||||||
- [Systemd](systemd.md)
|
- [Init Scripts (systemd/upstart/openrc)](init.md)
|
||||||
|
|
||||||
License
|
License
|
||||||
---------------------
|
---------------------
|
||||||
|
92
doc/init.md
Normal file
92
doc/init.md
Normal file
@ -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.
|
||||||
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
SYSTEMD SUPPORT IN BITCOIN
|
|
||||||
==========================
|
|
||||||
|
|
||||||
Packagers can find a .service file in this repo in order to integrate bitcoin's
|
|
||||||
daemon into systemd based distributions.
|
|
||||||
|
|
||||||
bitcoind.service file is located in contrib/systemd/ folder.
|
|
||||||
|
|
||||||
1. Users
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
This .service file assumes bitcoind user and group exist in the system, so packager
|
|
||||||
should make sure they are created on installation.
|
|
||||||
|
|
||||||
2. Files
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
The .service file assumes several paths that might need to be adjusted according
|
|
||||||
to packager's needs.
|
|
||||||
|
|
||||||
Daemon's config file is assumed to be located at /etc/bitcoind.conf (you can
|
|
||||||
use contrib/debian/examples/bitcoin.conf as an example). Once installed, users
|
|
||||||
must edit the file in order to update at least these two
|
|
||||||
values: rpcuser and rpcpassword . Failing to do so will make the daemon fail
|
|
||||||
to boot. However, the message written to /var/lib/bitcoind/debug.log file is
|
|
||||||
very helpful and no default values should be set:
|
|
||||||
|
|
||||||
YYYY-MM-DD HH:MM:DD Error: To use the "-server" option, you must set a rpcpassword in the configuration file:
|
|
||||||
/etc/bitcoind.conf
|
|
||||||
It is recommended you use the following random password:
|
|
||||||
rpcuser=bitcoinrpc
|
|
||||||
rpcpassword=HdYZ5HGtAF7mx8aTw6uCATtD2maMAK4E12Ysp4YNZQcX
|
|
||||||
(you do not need to remember this password)
|
|
||||||
The username and password MUST NOT be the same.
|
|
||||||
If the file does not exist, create it with owner-readable-only file permissions.
|
|
||||||
It is also recommended to set alertnotify so you are notified of problems;
|
|
||||||
for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com
|
|
||||||
|
|
||||||
Daemon's data and pid files will be stored in /var/lib/bitcoind directory, so it
|
|
||||||
should be created on installation and make bitcoind user/group it's owner.
|
|
||||||
|
|
||||||
3. Installing .service file
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
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.
|
|
Loading…
Reference in New Issue
Block a user