-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·61 lines (47 loc) · 2.51 KB
/
setup.sh
File metadata and controls
executable file
·61 lines (47 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
echo "Running setup..."
##### Variables #####
read -p "Enter local username: " user
read -p "Enter local user password: " password
read -p "Enter camera token: " token
read -p "Enter rsyslog destination: " rsyslog_dest
read -p "Enter branch (master): " branch
branch=${branch:-master}
app_folder=/home/$user/app
###################################
sudo chmod u+s /sbin/shutdown # Allow reboot without sudo
sudo apt update && sudo apt upgrade -y
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y libudev-dev libgphoto2-dev libqmi-utils ufw git nodejs
echo "Configuring LTE..."
sudo cp -f configs/lte /etc/network/interfaces.d/
sudo systemctl daemon-reload
sudo service networking reload
sudo service networking restart
echo "Configuring rsyslog..."
echo "*.* @$rsyslog_dest" | sudo tee -a /etc/rsyslog.conf
sudo service rsyslog restart
echo "Configuring firewall..."
sudo ufw limit OpenSSH && sudo ufw enable
echo "Adding user $user..."
sudo adduser --disabled-password --gecos "" $user
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi $user
echo "$user:$password" | sudo chpasswd
sudo -H -u $user bash -c 'ssh-keygen -t rsa -b 4096 -N "" -C "$USER@$HOSTNAME" -f /home/$USER/.ssh/id_rsa'
sudo -H -u $user bash -c 'cat /home/$USER/.ssh/id_rsa.pub'
read -p "Copy key above and add to Github repo deploy keys and authorized_keys on ssh host. Press enter to continue.."
echo "Cloning repo, branch '$branch'..."
sudo -H -u $user app_folder=$app_folder branch=$branch bash -c 'git clone -b $branch --single-branch git@github.com:CodeDistillery/hyperion-device-node.git $app_folder'
echo "Installing project dependencies..."
sudo cp configs/local.json $app_folder/config/ && sudo chown $user:$user $app_folder/config/local.json
sudo sed -i 's,<token>,'$token',g' $app_folder/config/local.json
sudo npm install -g pm2
sudo -H -u $user bash -c 'pm2 install pm2-posix-syslog'
sudo -H -u $user app_folder=$app_folder bash -c 'cd $app_folder && npm install'
echo "Installing periodic code updates..."
sudo cp -f configs/git-pull /etc/cron.d/
sudo sed -i 's,<user>,'$user',g' /etc/cron.d/git-pull
sudo sed -i 's,<branch>,'$branch',g' /etc/cron.d/git-pull
echo "Starting up the project..."
sudo -H -u $user app_folder=$app_folder bash -c 'cd $app_folder && pm2 start ecosystem.config.js && pm2 startup'
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $user --hp /home/$user
sudo -H -u $user app_folder=$app_folder bash -c 'cd $app_folder && pm2 save'