Skip to content

Commit 1f0e49e

Browse files
committed
changed provisioning scripts to use remote.sh
1 parent 6c148f5 commit 1f0e49e

8 files changed

+74
-57
lines changed

letsencrypt-nginx.sh

+7-46
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,12 @@
11
#!/bin/bash
22

33
# Check that nginx, letsencrypt, and openssl are installed and up to date.
4-
stty -echo; ssh $USER@$REMOTE "sudo -S sh -c \"\
5-
apt -y --force-yes update &&\
6-
apt -y --force-yes upgrade &&\
7-
apt -y --force-yes install nginx letsencrypt openssl\
8-
\""
9-
10-
# Copy over all the nginx scripts.
11-
ssh $USER@$REMOTE "mkdir -p $HOME/nginx"
12-
rsync -au /etc/nginx/snippets/ $REMOTE:$HOME/nginx/snippets &&\
13-
rsync -au /etc/nginx/sites-available/ $REMOTE:$HOME/nginx/sites-available &&\
14-
stty -echo; ssh $USER@$REMOTE "\
15-
sudo -S sh -c \"\
16-
ln -sf $HOME/nginx/snippets/ssl-params.conf /etc/nginx/snippets/ &&\
17-
ln -sf $HOME/nginx/snippets/gzip.conf /etc/nginx/snippets/ &&\
18-
ln -sf $HOME/nginx/sites-available/letsencrypt /etc/nginx/sites-available/ &&\
19-
ln -sf $HOME/nginx/sites-available/example.com /etc/nginx/sites-available/\""
20-
4+
rsync -au /etc/nginx/snippets/ $REMOTE:/etc/nginx/
5+
rsync -au /etc/nginx/sites-available/ $REMOTE:/etc/nginx/
6+
./remote.sh $REMOTE -f provision_nginx.sh
217
# Copy over letsencrypt certificates if they've already been created.
8+
# Else run letsencrypt.
9+
./remote.sh $REMOTE -f provision_nginx_letsencrypt.sh -e "DOMAIN=$DOMAIN EMAIL=$EMAIL"
10+
./remote.sh $REMOTE -f provision_nginx_site.sh -e "DOMAIN=$DOMAIN APP=$DOMAIN"
11+
./remote.sh $REMOTE -f provision_nginx_ufw.sh
2212

23-
# Deploy location .well-known script.
24-
# Remove default server if applicable.
25-
# Check nginx configuration and restart the server.
26-
# Run letsencrypt with email address and accept license.
27-
stty -echo; ssh $USER@$REMOTE "\
28-
sudo -S sh -c \"ln -sf /etc/nginx/sites-available/letsencrypt /etc/nginx/sites-enabled/ &&\
29-
rm -f /etc/nginx/sites-enabled/default &&\
30-
nginx -t && systemctl restart nginx &&\
31-
letsencrypt certonly -a webroot --webroot-path=/var/www/html/ -d $REMOTE --agree-tos --agree-dev-preview --email $EMAIL\""
32-
33-
# Let's copy the certificates to the local machine to install across multiple servers.
34-
35-
# Create dhparam if it doesn't alrady exist.
36-
stty -echo; ssh $USER@$REMOTE "[ -f /etc/ssl/certs/dhparam.pem ] ||\
37-
sudo -S openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048"
38-
39-
# Create a configuration snippet for the website name.
40-
# Copy the websites configuration over.
41-
stty -echo; ssh $USER@$REMOTE "[ -f /etc/nginx/snippets/ssl-$REMOTE.conf ] ||\
42-
sudo -S sh -c \"sed 's/example.com/$REMOTE/;s/appservers/$APP/' /etc/nginx/sites-available/example.com > /etc/nginx/sites-available/$REMOTE &&\
43-
ln -sf /etc/nginx/sites-available/$REMOTE /etc/nginx/sites-enabled &&\
44-
echo '
45-
ssl on;
46-
ssl_certificate /etc/letsencrypt/live/$REMOTE/fullchain.pem;
47-
ssl_certificate_key /etc/letsencrypt/live/$REMOTE/privkey.pem;
48-
' > /etc/nginx/snippets/ssl-$REMOTE.conf\""
49-
50-
# Restart the nginx server.
51-
stty -echo; ssh $USER@$REMOTE "sudo -S sh -c \"nginx -t && systemctl restart nginx\""

provision.sh

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
#!/bin/bash
2-
31
# Install Node, Git, and an Editor (VIM).
42
# Install NPM (nosudo) and required global packages.
53
# Install Node Version 4.4 (or required)
6-
stty -echo; ssh $USER@$REMOTE "sudo -S sh -c \"\
7-
apt -y --force-yes update &&\
8-
apt -y --force-yes upgrade &&\
9-
apt -y --force-yes install vim npm nodejs nodejs-legacy git &&\
10-
npm install -g pm2 n &&\
11-
n 4.* && n 6.* && n 0.10 && n 0.12\""
4+
apt -y --force-yes update
5+
apt -y --force-yes upgrade
6+
apt -y --force-yes install vim git
127

138
# Setup public key only login?
149
# Setup firewall?

provision_nginx.sh

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
3+
# Check that nginx, letsencrypt, and openssl are installed and up to date.
4+
apt -y --force-yes update
5+
apt -y --force-yes upgrade
6+
apt -y --force-yes install nginx letsencrypt openssl

provision_nginx_letsencrypt.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
3+
# Remove default server if applicable.
4+
rm -f /etc/nginx/sites-enabled/default
5+
# Deploy location .well-known script.
6+
ln -sf /etc/nginx/sites-available/letsencrypt /etc/nginx/sites-enabled/
7+
# Check nginx configuration and restart the server.
8+
nginx -t && systemctl restart nginx
9+
# Run letsencrypt with email address and accept license.
10+
echo " letsencrypt certonly -a webroot --webroot-path=/var/www/html/ -d $DOMAIN -d www.$DOMAIN --agree-tos --email $EMAIL "
11+
letsencrypt certonly -a webroot --webroot-path=/var/www/html/ -d $DOMAIN -d www.$DOMAIN --agree-tos --email $EMAIL
12+
13+
# Create dhparam if it doesn't alrady exist.
14+
if ! [ -f /etc/ssl/certs/dhparam.pem ]; then
15+
sudo -S openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
16+
fi
17+
18+
# Create a configuration snippet for the website name.
19+
if ! [ -f /etc/nginx/snippets/ssl-$DOMAIN.conf ]; then
20+
SSL_SNIPPET = "
21+
ssl on;
22+
ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
23+
ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
24+
"
25+
echo $SSL_SNIPPET > /etc/nginx/snippets/ssl-$DOMAIN.conf
26+
# Restart the nginx server.
27+
nginx -t && systemctl restart nginx
28+
fi
29+

provision_nginx_site.sh

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
#if ! [ -f /etc/nginx/sites-enabled/$DOMAIN ]; then
4+
# Replace example.com with
5+
sed "s/example.com/$DOMAIN/;s/appservers/$APP/" /etc/nginx/sites-available/example.com > /etc/nginx/sites-available/$DOMAIN
6+
rm -f /etc/nginx/sites-enabled/$DOMAIN
7+
ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled
8+
nginx -t && systemctl restart nginx
9+
#fi
10+

provision_nginx_ufw.sh

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
ufw allow "OpenSSH"
2+
ufw allow "Nginx Full"
3+
ufw allow 22
4+
ufw allow 80
5+
ufw allow 443
6+
ufw enable

provision_nvm.sh

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
#!/bin/bash
22
# Install NVM
3-
NVM_VERSION=0.33.1
4-
NODE_VERSION=6.10.2
5-
NVM_DIR=/usr/local/nvm
3+
export NVM_VERSION=0.33.1
4+
export NODE_VERSION=6.10
5+
export NVM_DIR="/usr/local/nvm"
66
touch $HOME/.profile
77
curl -o- https://raw.githubusercontent.com/creationix/nvm/v$NVM_VERSION/install.sh | bash
8+
#NVM_DIR="$HOME/.nvm"
9+
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
10+
nvm install $NODE_VERSION
811
npm install pm2

provision_user.sh

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Create user with home directory, groups, and Bash shell.
2+
id -u $1 &>/dev/null || useradd $1 -G sudo,dip,lxd -d /home/$1 -s /bin/bash
3+
usermod -aG node austin
4+
5+
# Give the user the same keys as root.
6+
cp -R $HOME/.ssh /home/$1/
7+
chown -R $1 /home/$1

0 commit comments

Comments
 (0)