88# More at https://ownyourbits.com/2017/03/17/lets-encrypt-installer-for-apache/
99
1010
11- NCDIR =/var/www/nextcloud
12- OCC= " $NCDIR /occ "
13- VHOSTCFG =/etc/apache2/sites-available/nextcloud .conf
14- VHOSTCFG2 =/etc/apache2/sites-available/ncp.conf
11+ ncdir =/var/www/nextcloud
12+ vhostcfg=/etc/apache2/sites-available/nextcloud.conf
13+ vhostcfg2 =/etc/apache2/sites-available/ncp .conf
14+ letsencrypt =/etc/letsencrypt/letsencrypt-auto
1515
1616is_active ()
1717{
@@ -22,7 +22,13 @@ install()
2222{
2323 cd /etc || return 1
2424 apt-get update
25- apt-get install --no-install-recommends -y letsencrypt
25+ apt-get install --no-install-recommends -y python3-minimal
26+ wget -O- --content-disposition https://github.com/letsencrypt/letsencrypt/archive/master/latest.tar.gz \
27+ | tar -xz \
28+ || exit 1
29+ mv certbot-master letsencrypt
30+ export VIRTUALENV_NO_DOWNLOAD=1 # temporal workaround for https://github.com/certbot/certbot/issues/6682
31+ $letsencrypt --help # do not actually run certbot, only install packages
2632 mkdir -p /etc/letsencrypt/live
2733
2834 [[ " $DOCKERBUILD " == 1 ]] && {
4046 return 0
4147}
4248
43- # tested with certbot 0.10.2
49+ # tested with certbot 0.30.0
4450configure ()
4551{
4652 local DOMAIN_LOWERCASE=" ${DOMAIN,,} "
4753
4854 [[ " $DOMAIN " == " " ]] && { echo " empty domain" ; return 1; }
4955
5056 # Configure Apache
51- grep -q ServerName $VHOSTCFG && \
52- sed -i " s|ServerName .*|ServerName $DOMAIN |" $VHOSTCFG || \
53- sed -i " /DocumentRoot/aServerName $DOMAIN " $VHOSTCFG
57+ grep -q ServerName $vhostcfg && \
58+ sed -i " s|ServerName .*|ServerName $DOMAIN |" $vhostcfg || \
59+ sed -i " /DocumentRoot/aServerName $DOMAIN " $vhostcfg
5460
5561 # Do it
56- letsencrypt certonly -n --no-self-upgrade --webroot -w $NCDIR --hsts --agree-tos -m $EMAIL -d $DOMAIN && {
62+ $ letsencrypt certonly -n --no-self-upgrade --webroot -w $ncdir --hsts --agree-tos -m $EMAIL -d $DOMAIN && {
5763
5864 # Set up auto-renewal
5965 cat > /etc/cron.weekly/letsencrypt-ncp << EOF
6066#!/bin/bash
6167
6268# renew and notify
63- /usr/bin/certbot renew --quiet --renew -hook '
64- sudo -u www-data php $OCC notification:generate \
65- $NOTIFYUSER "SSL renewal" \
66- -l "Your SSL certificate(s) \$ RENEWED_DOMAINS has been renewed for another 90 days"
69+ $letsencrypt renew --quiet --deploy -hook '
70+ ncc notification:generate \
71+ $NOTIFYUSER "SSL renewal" \
72+ -l "Your SSL certificate(s) \$ RENEWED_DOMAINS has been renewed for another 90 days"
6773 '
6874
6975# notify if fails
70- [[ \$ ? -ne 0 ]] && sudo -u www-data php $OCC notification:generate \
71- $NOTIFYUSER "SSL renewal error" \
72- -l "SSL certificate renewal failed. See /var/log/letsencrypt/letsencrypt.log"
76+ [[ \$ ? -ne 0 ]] && ncc notification:generate \
77+ $NOTIFYUSER "SSL renewal error" \
78+ -l "SSL certificate renewal failed. See /var/log/letsencrypt/letsencrypt.log"
7379
7480# cleanup
75- rm -rf $NCDIR /.well-known
81+ rm -rf $ncdir /.well-known
7682EOF
77- chmod +x /etc/cron.weekly/letsencrypt-ncp
83+ chmod 755 /etc/cron.weekly/letsencrypt-ncp
7884
7985 # Configure Apache
80- sed -i " s|SSLCertificateFile.*|SSLCertificateFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /fullchain.pem|" $VHOSTCFG
81- sed -i " s|SSLCertificateKeyFile.*|SSLCertificateKeyFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /privkey.pem|" $VHOSTCFG
86+ sed -i " s|SSLCertificateFile.*|SSLCertificateFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /fullchain.pem|" $vhostcfg
87+ sed -i " s|SSLCertificateKeyFile.*|SSLCertificateKeyFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /privkey.pem|" $vhostcfg
8288
83- sed -i " s|SSLCertificateFile.*|SSLCertificateFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /fullchain.pem|" $VHOSTCFG2
84- sed -i " s|SSLCertificateKeyFile.*|SSLCertificateKeyFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /privkey.pem|" $VHOSTCFG2
89+ sed -i " s|SSLCertificateFile.*|SSLCertificateFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /fullchain.pem|" $vhostcfg2
90+ sed -i " s|SSLCertificateKeyFile.*|SSLCertificateKeyFile /etc/letsencrypt/live/$DOMAIN_LOWERCASE /privkey.pem|" $vhostcfg2
8591
8692 # Configure Nextcloud
87- sudo -u www-data php $OCC config:system:set trusted_domains 4 --value=$DOMAIN
88- sudo -u www-data php $OCC config:system:set overwrite.cli.url --value=https://" $DOMAIN " /
93+ ncc config:system:set trusted_domains 4 --value=$DOMAIN
94+ ncc config:system:set overwrite.cli.url --value=https://" $DOMAIN " /
8995
9096 # delayed in bg so it does not kill the connection, and we get AJAX response
9197 bash -c " sleep 2 && service apache2 reload" & > /dev/null &
92- rm -rf $NCDIR /.well-known
98+ rm -rf $ncdir /.well-known
9399
94100 # Update configuration
95101 [[ " $DOCKERBUILD " == 1 ]] && update-rc.d letsencrypt enable
96102
97103 return 0
98104 }
99- rm -rf $NCDIR /.well-known
105+ rm -rf $ncdir /.well-known
100106 return 1
101107}
102108
109+ cleanup ()
110+ {
111+ apt-get purge -y \
112+ augeas-lenses \
113+ libpython-dev \
114+ libpython2.7-dev \
115+ libssl-dev \
116+ python-dev \
117+ python2.7-dev \
118+ python-pip-whl
119+ }
120+
121+
103122# License
104123#
105124# This script is free software; you can redistribute it and/or modify it
0 commit comments