export DOMAIN=example.com
export WEBPATH=/var/www/$DOMAIN
mkdir -p $WEBPATH/{htdocs,logs,ssl}
chown -R root:www-data $WEBPATH
curl https://get.acme.sh | sh -s email=my@example.com --force --install
cat > /etc/nginx/sites-available/$DOMAIN <<EOF
server {
listen [::]:80 http2;
# listen [::]:443 ssl http2;
server_name rss.xoce.kim;
access_log /var/www/rss/logs/access.log;
error_log /var/www/rss/logs/error.log;
# ssl_certificate /var/www/rss/ssl/fullchain.pem;
# ssl_certificate_key /var/www/rss/ssl/privkey.pem;
# if ($scheme != "https") {
# return 301 https://$host$request_uri;
# }
location / {
root /var/www/rss/htdocs;
}
}
EOF
ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/$DOMAIN
acme.sh --issue -d $DOMAIN -w $WEBPATH/htdocs
acme.sh --install-cert -d $DOMAIN --key-file $WEBPATH/ssl/privkey.pem --fullchain-file $WEBPATH/ssl/fullchain.pem --reloadcmd "systemctl reload nginx"
# now uncomment everything in /etc/nginx/sites-available/$DOMAIN
cat > /etc/systemd/system/acme-renew.service <<EOF
[Unit]
Description=Renew acme certs
[Service]
Type=simple
ExecStart=sh -c "/root/.acme.sh/acme.sh --cron --home /root/.acme.sh"
[Install]
WantedBy=default.target
EOF
cat > /etc/systemd/system/acme-renew-timer.timer <<EOF
[Unit]
Description=Renew acme certs every day
RefuseManualStart=no
RefuseManualStop=no
[Timer]
Persistent=true
OnCalendar=*-*-* 02:20:20
Unit=acme-renew.service
[Install]
WantedBy=timers.target
EOF
systemctl enable --now acme-renew.service acme-renew-timer.timer