|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
3 | 3 | # 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 |
21 | 7 | # 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 |
22 | 12 |
|
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\"" |
0 commit comments