Using Upstart on Ubuntu for bitcoind

My bitcoind was always crashing after about 12 hours and I would restart it. I had a script that ran after a reboot, but that didn’t help to restart it after a crash. I tried Upstart scripts but they wouldn’t work at reboot, although I could start/stop them at will after configuration.

I found the answer here:
https://bitcointalk.org/index.php?topic=25518.msg8733922#msg8733922

So this is what my /etc/init/bitcoind.conf looks like now.

description "bitcoind"

start on filesystem
stop on runlevel [!2345]
oom score -500
expect fork
respawn
respawn limit 10 60 # 10 times in 60 seconds

script
	user=yourusername
	home=/home/$user
	cmd=/usr/local/bin/bitcoind
	pidfile=$home/bitcoind.pid
	# Don't change anything below here unless you know what you're doing
	[[ -e $pidfile && ! -d "/proc/$(cat $pidfile)" ]] && rm $pidfile
	[[ -e $pidfile && "$(cat /proc/$(cat $pidfile)/cmdline)" != $cmd* ]] && rm $pidfile
	exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile -m --startas $cmd
end script

I have similar scripts for my other coins.

NameCoin compile from source on Ubuntu

I’ve been having trouble with the binary qt on my windows machine. So I backed up the Namecoin wallet and compiled from source.

First, I got the source from the official namecoin-qt github project:

https://github.com/namecoin-qt/namecoin-qt.git

After getting this setup, I found that it did not work with the NOMP pool because of the batch processing.

So after asking some questions in the NOMP project, I was informed that the NOMP project is dead, but UNOMP is the new version. So I set up UNOMP (more on this later), and also that UNOMP has their own version of NameCoin.

Get the source:

cd ~/source
git clone https://github.com/UNOMP/namecoin-core.git

Install all the dependencies:

sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
sudo apt-get install libboost-all-dev

sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev

sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler

Compile:

cd ~/source/namecoin-core
./autogen.sh
./configure --with-incompatible-bdb
make

Getting NOMP to run at reboot on Ubuntu

There are several things you must do to accomplish this without any user intervention. It is up to you to decide if any of these pose as a security risk depending on your situation.

  1. Enable your user to automatically login
  2. Start all your CryptoCoins at login
  3. Unlock all your CryptoCoin Wallets at login
  4. Run NOMP as root

Enable your user to automatically login:

  • System Settings
  • User Accounts
  • Automatic Login

Start all your CryptoCoins at login:

    • Create a script for each coin “run_bitcoin-qt”
/usr/local/bin/bitcoin-qt -server
    • Create a “start_all_coin_wallets” script
echo Starting Crypto Coins...
/usr/local/bin/bitcoin-qt -server &
/usr/local/bin/mazacoin-qt -server &
/usr/local/bin/titcoin-qt -server &
/usr/local/bin/UniversalCurrency-qt -server &
/usr/local/bin/zetacoin-qt -server &
echo Wallets Started.
  • Here is the daemon version. ¬†Seems to be more stable, but you have to compile the daemon’s for each coin.
echo Starting Crypto Coins...
/usr/local/bin/bitcoind -daemon &
/usr/local/bin/mazacoind -daemon &
/usr/local/bin/titcoind -daemon &
/usr/local/bin/UniversalCurrencyd -daemon &
/usr/local/bin/zetacoind -daemon &
echo Wallets Started.
  • Add the “start_all_coin_wallets” script to “Startup Applications”

Unlock all your CryptoCoin Wallets at login:

  • Create a script that passes the “walletpassphrase” command
  • Example:
    /usr/local/bin/bitcoin-cli walletpassphrase "this should be your passphrase in these quotes" 9999999
    
  • Since you don’t know how long it will take to bootup all your wallets, you can set this to run every 5 minutes just to be sure.
    • Do this by adding it to the “Scheduled Tasks”

Run NOMP as root

  • Why? because “node” needs to run as root or your website won’t work.
  • Create a “run_nomp” script, something like this
    echo Starting NOMP...
    cd /home/yourusername/www/nomp
    sudo node init.js
    
  • You will have to add a line to /etc/sudoers
    yourusername ALL=(ALL) NOPASSWD:ALL
  • Add “run_nomp” to “Startup Applications”
    gnome-terminal -e "/home/yourusername/bin/run_nomp"
    

Reboot your server and watch it boot up.