Skip to content

Commit 9d40258

Browse files
authored
Merge pull request #1301 from dennisreimann/kindle-display
Add bonus script: kindle-display
2 parents b6b25cf + 46bb6bc commit 9d40258

File tree

3 files changed

+181
-0
lines changed

3 files changed

+181
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ There are further Services that can be switched on:
3434
* **ThunderHub** (Lightning Node Manager WebUI) [details](https://www.thunderhub.io/)
3535
* **Faraday** (Channel Analysis & Recommendations CLI) [details](https://github.com/lightninglabs/faraday/blob/master/README.md)
3636
* **Balance Of Satoshis** (Commands for working with LND balances) [details](https://github.com/alexbosworth/balanceofsatoshis/blob/master/README.md)
37+
* **Kindle Display** (Bitcoin Status Display made with a jailbroken Kindle) [details](https://github.com/dennisreimann/kindle-display)
3738

3839
You can connect the following Wallet-Apps to your RaspiBlitz:
3940

home.admin/_bootstrap.provision.sh

+9
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,15 @@ else
453453
echo "Provisioning letsencrypt - keep default" >> ${logFile}
454454
fi
455455

456+
# kindle-display
457+
if [ "${kindleDisplay}" = "on" ]; then
458+
echo "Provisioning kindle-display - run config script" >> ${logFile}
459+
sudo sed -i "s/^message=.*/message='Setup kindle-display'/g" ${infoFile}
460+
sudo -u admin /home/admin/config.scripts/bonus.kindle-display.sh on >> ${logFile} 2>&1
461+
else
462+
echo "Provisioning kindle-display - keep default" >> ${logFile}
463+
fi
464+
456465

457466

458467
# replay backup LND conf & tlscerts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
#!/bin/bash
2+
3+
# https://github.com/dennisreimann/kindle-display
4+
5+
USERNAME=kindledisplay
6+
SERVER_PORT=3030
7+
APP_DATA_DIR=/mnt/hdd/app-data/kindle-display
8+
HOME_DIR=/home/$USERNAME
9+
CONFIG_FILE=$APP_DATA_DIR/.env
10+
APP_ROOT_DIR=$HOME_DIR/kindle-display
11+
APP_SERVER_DIR=$APP_ROOT_DIR/server
12+
CRON_FILE=$APP_SERVER_DIR/cron.sh
13+
APP_VERSION=0.2.1
14+
15+
# command info
16+
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
17+
echo "small config script to switch kindle-display on or off"
18+
echo "bonus.kindle-display.sh [on|off]"
19+
exit 1
20+
fi
21+
22+
source /mnt/hdd/raspiblitz.conf
23+
24+
# switch on
25+
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
26+
echo "*** INSTALL KINDLE-DISPLAY ***"
27+
28+
isInstalled=$(sudo ls $HOME_DIR 2>/dev/null | grep -c 'kindle-display')
29+
if [ ${isInstalled} -eq 0 ]; then
30+
# install dependencies
31+
sudo apt install -y firefox-esr pngcrush jo
32+
33+
# install nodeJS
34+
/home/admin/config.scripts/bonus.nodejs.sh on
35+
36+
# add user
37+
sudo adduser --disabled-password --gecos "" $USERNAME
38+
39+
# install kindle-display
40+
cd $HOME_DIR
41+
sudo -u $USERNAME wget https://github.com/dennisreimann/kindle-display/archive/v$APP_VERSION.tar.gz
42+
sudo -u $USERNAME tar -xzf v$APP_VERSION.tar.gz kindle-display-$APP_VERSION/server
43+
sudo -u $USERNAME mv kindle-display{-$APP_VERSION,}
44+
sudo -u $USERNAME rm v$APP_VERSION.tar.gz
45+
cd kindle-display/server
46+
sudo -u $USERNAME npm install
47+
48+
# setup kindle-display config
49+
RPC_USER=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcuser | cut -c 9-)
50+
RPC_PASS=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcpassword | cut -c 13-)
51+
52+
sudo mkdir -p $APP_DATA_DIR
53+
sudo chown $USERNAME:$USERNAME $APP_DATA_DIR
54+
55+
if [[ ! -f "$CONFIG_FILE" ]]; then
56+
configFile=/home/admin/kindle-display.env
57+
touch $configFile
58+
sudo chmod 600 $configFile || exit 1
59+
cat > $configFile <<EOF
60+
# Server port
61+
DISPLAY_SERVER_PORT=$SERVER_PORT
62+
DISPLAY_BITCOIN_RPC_USER="$RPC_USER"
63+
DISPLAY_BITCOIN_RPC_PASS="$RPC_PASS"
64+
# BTCPay Settings for rate fetching – omit these setting to use Bitstamp as a fallback
65+
# Generate API via Store > Access Tokens > Legacy API Keys
66+
# BTCPAY_HOST="https://my.btcpayserver.com"
67+
# BTCPAY_API_TOKEN="myBtcPayLegacyApiKey"
68+
EOF
69+
sudo mv $configFile $CONFIG_FILE
70+
fi
71+
72+
sudo chown $USERNAME:$USERNAME $CONFIG_FILE
73+
74+
# link config to app
75+
sudo -u $USERNAME ln -s $CONFIG_FILE $APP_SERVER_DIR/.env
76+
77+
# generate initial data
78+
sudo -u $USERNAME $APP_SERVER_DIR/data.sh
79+
80+
# open firewall
81+
sudo ufw allow $SERVER_PORT comment 'kindle-display HTTP'
82+
83+
# install service
84+
cat > /home/admin/kindle-display.service <<EOF
85+
# systemd unit for kindle-display
86+
87+
[Unit]
88+
Description=kindle-display
89+
Wants=${network}d.service
90+
After=${network}d.service
91+
92+
[Service]
93+
WorkingDirectory=${APP_SERVER_DIR}
94+
ExecStart=/usr/bin/npm start
95+
User=$USERNAME
96+
97+
# Restart on failure but no more than 2 time every 10 minutes (600 seconds). Otherwise stop
98+
Restart=on-failure
99+
StartLimitIntervalSec=600
100+
StartLimitBurst=2
101+
102+
[Install]
103+
WantedBy=multi-user.target
104+
EOF
105+
sudo mv /home/admin/kindle-display.service /etc/systemd/system/kindle-display.service
106+
sudo systemctl enable kindle-display
107+
sudo systemctl start kindle-display
108+
109+
# generate initial screenshot
110+
sudo -u $USERNAME $CRON_FILE
111+
112+
echo "OK - the KINDLE-DISPLAY script is now installed."
113+
echo ""
114+
echo "Switch to the '$USERNAME' user and adapt the settings in $CONFIG_FILE"
115+
116+
# setting value in raspi blitz config
117+
sudo sed -i "s/^kindleDisplay=.*/kindleDisplay=on/g" /mnt/hdd/raspiblitz.conf
118+
else
119+
echo "KINDLE-DISPLAY already installed."
120+
fi
121+
122+
cron_count=$(sudo -u $USERNAME crontab -l | grep "$CRON_FILE" -c)
123+
if [ "${cron_count}" = "0" ]; then
124+
echo ""
125+
echo "You might want to set up a cronjob to run the script in regular intervals."
126+
echo "As the '$USERNAME' user you can run the 'crontab -e' command."
127+
echo ""
128+
echo "Here is an example for updating every five minutes ..."
129+
echo ""
130+
echo "SHELL=/bin/bash"
131+
echo "PATH=/bin:/usr/bin:/usr/local/bin"
132+
echo "*/5 * * * * /bin/bash $CRON_FILE > /dev/null 2>&1 || true"
133+
fi
134+
135+
exit 0
136+
fi
137+
138+
# switch off
139+
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
140+
echo "*** UNINSTALL KINDLE-DISPLAY ***"
141+
isInstalled=$(sudo ls $HOME_DIR 2>/dev/null | grep -c 'kindle-display')
142+
143+
if [ ${isInstalled} -eq 1 ]; then
144+
echo "*** REMOVING KINDLE-DISPLAY ***"
145+
146+
# setting value in raspi blitz config
147+
sudo sed -i "s/^kindleDisplay=.*/kindleDisplay=off/g" /mnt/hdd/raspiblitz.conf
148+
149+
# uninstall service
150+
sudo systemctl disable kindle-display
151+
sudo rm /etc/systemd/system/kindle-display.service
152+
153+
# close port on firewall
154+
sudo ufw deny $SERVER_PORT
155+
156+
# remove config
157+
sudo rm -rf $APP_DATA_DIR
158+
159+
# delete user and home directory
160+
sudo userdel -rf $USERNAME
161+
162+
echo "OK KINDLE-DISPLAY removed."
163+
else
164+
echo "KINDLE-DISPLAY is not installed."
165+
fi
166+
167+
exit 0
168+
fi
169+
170+
echo "FAIL - Unknown Parameter $1"
171+
exit 1

0 commit comments

Comments
 (0)