home · contact · privacy
WIP.
[config] / all_new_2018 / letsencrypt.sh
1 #!/bin/sh
2 set -e
3
4 # Ensure we have a server name as argument.
5 if [ ! $# -eq 2 ]; then
6     echo "Need server and action as argument."
7     false
8 fi
9 server="$1"
10 action="$2"
11
12 # So we only get asked once for decrypting our key.
13 eval $(ssh-agent)
14 ssh-add ~/.ssh/id_rsa
15
16 if [ "${action}" = "set" ]; then
17     # Install certificate.
18     ssh -t plom@${server} "su -c 'apt -y install certbot && certbot certonly --standalone -d ${server}$'"
19 elif [ "${action}" = "get" ]; then
20     # Get /etc/letsencrypt/ as tar file.
21     ssh -t plom@${server} 'su -c "cd /etc/ && tar cf letsencrypt.tar letsencrypt && chown plom:plom letsencrypt.tar && mv letsencrypt.tar /home/plom/"'
22     scp plom@${server}:~/letsencrypt.tar .
23 elif [ "${action}" = "put" ]; then
24     # Expand letsencrypt.tar to /etc/letsencrypt/ on server.
25     scp letsencrypt.tar plom@${server}:~/
26     ssh -t plom@${server} 'su -c "rmdir /etc/letsencrypt && mv letsencrypt.tar /etc/ && cd /etc/ && tar xf letsencrypt.tar && rm letsencrypt.tar"'
27 else
28     echo "Action must be 'set', 'get', or 'put'."
29     false
30 fi
31