Newer
Older
#!/bin/bash
# automate letsencrypt certificate generation and authentication
# Copyright (C) 1993-2993 Hugo Mangeart
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
trap "cp /tmp/{mediaserver-msuser.conf,skyreach.conf,msmonitor.conf} /etc/nginx/sites-available/; nginx -t && service nginx reload; exit 255" ERR
source /root/envsetup/global-conf.sh
LE_DIR="/etc/letsencrypt/live/"
# GET LETSENCRYPT
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt-get update
sudo apt-get install python-certbot-nginx
cd /etc/nginx/sites-available/
# BACKUP
cp mediaserver-msuser.conf skyreach.conf msmonitor.conf /tmp/
# PREPARE LETSENCRYPT REQUEST STRING
# ALTER NGINX CONF TO ACCEPT CLEAR HTTP
# (DEACTIVATE errexit BECAUSE USING FAILING COMMANDS)
set +e
DOMAIN_STRING="${MS_SERVER_NAME}" && \
sed -i s/rewrite/#rewrite/ mediaserver-msuser.conf
[ -n "${CM_SERVER_NAME}" ] && \
DOMAIN_STRING="${DOMAIN_STRING},${CM_SERVER_NAME}" && \
sed -i s/rewrite/#rewrite/ skyreach.conf
[ -n "${MONITOR_SERVER_NAME}" ] && \
DOMAIN_STRING="${DOMAIN_STRING},${MONITOR_SERVER_NAME}" && \
sed -i s/rewrite/#rewrite/ msmonitor.conf
set -e
nginx -t && \
service nginx reload
# ASKS FOR CERTS TO LETSENCRYPT
mkdir -p /tmp/letsencrypt
certbot certonly \
--webroot --webroot-path /tmp/letsencrypt \
--domains "${DOMAIN_STRING}" \
--email "${EMAIL_ADMINS}" \
sed -i s/#rewrite/rewrite/ mediaserver-msuser.conf skyreach.conf msmonitor.conf
# (DEACTIVATE errexit BECAUSE USING FAILING COMMANDS)
[ -f ${LE_DIR}/${MS_SERVER_NAME}/fullchain.pem ] && \
sed -i s/#ssl_certificate/ssl_certificate/g mediaserver-msuser.conf
[ -f ${LE_DIR}/${CM_SERVER_NAME}/fullchain.pem ] && \
sed -i s/#ssl_certificate/ssl_certificate/g skyreach.conf
[ -f ${LE_DIR}/${MONITOR_SERVER_NAME}/fullchain.pem ] && \
sed -i s/#ssl_certificate/ssl_certificate/g msmonitor.conf
# RELOAD NGINX IF CONF IS CORRECT
nginx -t && \
service nginx reload
rm /tmp/{mediaserver-msuser.conf,skyreach.conf,msmonitor.conf}