02_install_nginx.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/bash
  2. CERT_DOMAIN="$1"
  3. # install the prerequisites
  4. apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
  5. # import gpg key
  6. curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
  7. | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
  8. # verify gpg key
  9. mkdir -m 700 ~/.gnupg
  10. gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
  11. echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
  12. http://nginx.org/packages/debian `lsb_release -cs` nginx" \
  13. | tee /etc/apt/sources.list.d/nginx.list
  14. # install nginx
  15. apt update
  16. apt install -y nginx
  17. # start nginx
  18. systemctl start nginx
  19. systemctl enable nginx
  20. # generate self signed cert
  21. mkdir -p /etc/nginx/certs/self
  22. openssl genrsa -out /etc/nginx/certs/self/privkey.pem 2048
  23. openssl req -new -x509 -days 3650 -key /etc/nginx/certs/self/privkey.pem \
  24. -out /etc/nginx/certs/self/cert.pem \
  25. -subj "/C=CN/O=Self Hosted/OU=SRE/CN=$DOMAIN/CN=*.$DOMAIN"
  26. # default vhost
  27. rm -f /etc/nginx/conf.d/default.conf
  28. cat > /etc/nginx/conf.d/00-default.conf << EOF
  29. server {
  30. listen 80 default_server;
  31. listen [::]:80 default_server;
  32. server_name _;
  33. return 418;
  34. }
  35. server {
  36. listen 443 ssl default_server;
  37. listen [::]:443 ssl default_server;
  38. server_name _;
  39. ssl_certificate /etc/nginx/certs/self/cert.pem;
  40. ssl_certificate_key /etc/nginx/certs/self/privkey.pem;
  41. return 418;
  42. }
  43. EOF
  44. nginx -t
  45. systemctl force-reload nginx