8
8
# More at https://ownyourbits.com/2017/03/17/lets-encrypt-installer-for-apache/
9
9
10
10
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
15
15
16
16
is_active ()
17
17
{
@@ -22,7 +22,13 @@ install()
22
22
{
23
23
cd /etc || return 1
24
24
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
26
32
mkdir -p /etc/letsencrypt/live
27
33
28
34
[[ " $DOCKERBUILD " == 1 ]] && {
40
46
return 0
41
47
}
42
48
43
- # tested with certbot 0.10.2
49
+ # tested with certbot 0.30.0
44
50
configure ()
45
51
{
46
52
local DOMAIN_LOWERCASE=" ${DOMAIN,,} "
47
53
48
54
[[ " $DOMAIN " == " " ]] && { echo " empty domain" ; return 1; }
49
55
50
56
# 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
54
60
55
61
# 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 && {
57
63
58
64
# Set up auto-renewal
59
65
cat > /etc/cron.weekly/letsencrypt-ncp << EOF
60
66
#!/bin/bash
61
67
62
68
# 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"
67
73
'
68
74
69
75
# 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"
73
79
74
80
# cleanup
75
- rm -rf $NCDIR /.well-known
81
+ rm -rf $ncdir /.well-known
76
82
EOF
77
- chmod +x /etc/cron.weekly/letsencrypt-ncp
83
+ chmod 755 /etc/cron.weekly/letsencrypt-ncp
78
84
79
85
# 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
82
88
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
85
91
86
92
# 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 " /
89
95
90
96
# delayed in bg so it does not kill the connection, and we get AJAX response
91
97
bash -c " sleep 2 && service apache2 reload" & > /dev/null &
92
- rm -rf $NCDIR /.well-known
98
+ rm -rf $ncdir /.well-known
93
99
94
100
# Update configuration
95
101
[[ " $DOCKERBUILD " == 1 ]] && update-rc.d letsencrypt enable
96
102
97
103
return 0
98
104
}
99
- rm -rf $NCDIR /.well-known
105
+ rm -rf $ncdir /.well-known
100
106
return 1
101
107
}
102
108
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
+
103
122
# License
104
123
#
105
124
# This script is free software; you can redistribute it and/or modify it
0 commit comments