From 8eec361aa716694dd3f9596524d00a3c897de57b Mon Sep 17 00:00:00 2001 From: eroncero Date: Mon, 4 Aug 2025 10:09:08 +0200 Subject: [PATCH] Added letsencrypt support --- .gitignore | 4 +- docker-compose.yaml | 7 +- nginx-srv/Dockerfile | 5 +- nginx-srv/project/entrypoint/entrypoint.sh | 3 +- nginx-srv/sites-available/default | 91 ++++++++++++++++++++++ nginx-srv/www/html/index.nginx-debian.html | 23 ++++++ 6 files changed, 125 insertions(+), 8 deletions(-) create mode 100644 nginx-srv/sites-available/default create mode 100644 nginx-srv/www/html/index.nginx-debian.html diff --git a/.gitignore b/.gitignore index 1730f61..d374ce5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Add volumes to .gitignore -nginx-srv/sites-available -nginx-srv/www +nginx-srv/etc +nginx-srv/var multi-php-fpm/etc multi-php-fpm/run diff --git a/docker-compose.yaml b/docker-compose.yaml index 05d3c9b..74e2bf4 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -11,9 +11,10 @@ services: - "${NGINX_HTTPS_IPV6_HOST}:${NGINX_HTTPS_IPV6_PORT}:${NGINX_CONTAINER_HTTPS_PORT}" restart: unless-stopped volumes: - - ./nginx-srv/sites-available:/etc/nginx/sites-available - - ./nginx-srv/www:/var/www - - ./multi-php-fpm/run/php:/run/php + - ./nginx-srv/etc/nginx/sites-available:/etc/nginx/sites-available + - ./nginx-srv/var/www:/var/www + - ./multi-php-fpm/run/php:/run/php # It will be mounted from the PHP container. + - ./nginx-srv/etc/letsencrypt:/etc/letsencrypt multi-php-fpm: image: eroncero/multi-php-fpm diff --git a/nginx-srv/Dockerfile b/nginx-srv/Dockerfile index ca62812..15146c3 100644 --- a/nginx-srv/Dockerfile +++ b/nginx-srv/Dockerfile @@ -3,11 +3,12 @@ FROM debian:bookworm ARG DEBIAN_FRONTEND=noninteractive ARG DEBCONF_NONINTERACTIVE_SEEN=true -RUN apt-get update; apt-get full-upgrade -y; apt-get autoclean -y; apt-get install nginx openssl vim curl -y +RUN apt-get update; apt-get full-upgrade -y; apt-get autoclean -y; apt-get install nginx certbot python3-certbot-nginx openssl vim curl -y COPY project/entrypoint/entrypoint.sh /entrypoint/entrypoint.sh COPY project/entrypoint/gen-cert.sh /entrypoint/gen-cert.sh #COPY project/entrypoint/install-nginx-mods.sh /entrypoint/install-nginx-mods.sh RUN mkdir /tmp/buildtime && cp /etc/nginx/sites-available/default /tmp/buildtime/default -RUN mkdir /tmp/www && cp -r /var/www/. /tmp/www/ +RUN mkdir /tmp/buildtime/www && cp -r /var/www/. /tmp/buildtime/www/ +RUN mkdir /tmp/buildtime/letsencrypt && cp -r /etc/letsencrypt/. /tmp/buildtime/letsencrypt/ ENTRYPOINT ["/bin/sh", "/entrypoint/entrypoint.sh"] diff --git a/nginx-srv/project/entrypoint/entrypoint.sh b/nginx-srv/project/entrypoint/entrypoint.sh index 13612b3..a941cca 100644 --- a/nginx-srv/project/entrypoint/entrypoint.sh +++ b/nginx-srv/project/entrypoint/entrypoint.sh @@ -9,8 +9,9 @@ done rm /etc/nginx/sites-enabled/*.conf mv /tmp/buildtime/default /etc/nginx/sites-available/default +mv /tmp/buildtime/letsencrypt/* /etc/letsencrypt -mv /tmp/www/* /var/www/ +mv /tmp/buildtime/www/* /var/www/ chown -R www-data:www-data /var/www service nginx start diff --git a/nginx-srv/sites-available/default b/nginx-srv/sites-available/default new file mode 100644 index 0000000..c5af914 --- /dev/null +++ b/nginx-srv/sites-available/default @@ -0,0 +1,91 @@ +## +# You should look at the following URL's in order to grasp a solid understanding +# of Nginx configuration files in order to fully unleash the power of Nginx. +# https://www.nginx.com/resources/wiki/start/ +# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ +# https://wiki.debian.org/Nginx/DirectoryStructure +# +# In most cases, administrators will remove this file from sites-enabled/ and +# leave it as reference inside of sites-available where it will continue to be +# updated by the nginx packaging team. +# +# This file will automatically load configuration files provided by other +# applications, such as Drupal or Wordpress. These applications will be made +# available underneath a path with that package name, such as /drupal8. +# +# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. +## + +# Default server configuration +# +server { + listen 80 default_server; + listen [::]:80 default_server; + + # SSL configuration + # + # listen 443 ssl default_server; + # listen [::]:443 ssl default_server; + # + # Note: You should disable gzip for SSL traffic. + # See: https://bugs.debian.org/773332 + # + # Read up on ssl_ciphers to ensure a secure configuration. + # See: https://bugs.debian.org/765782 + # + # Self signed certs generated by the ssl-cert package + # Don't use them in a production server! + # + # include snippets/snakeoil.conf; + + root /var/www/html; + + # Add index.php to the list if you are using PHP + index index.html index.htm index.nginx-debian.html; + + server_name _; + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ =404; + } + + # pass PHP scripts to FastCGI server + # + #location ~ \.php$ { + # include snippets/fastcgi-php.conf; + # + # # With php-fpm (or other unix sockets): + # fastcgi_pass unix:/run/php/php7.4-fpm.sock; + # # With php-cgi (or other tcp sockets): + # fastcgi_pass 127.0.0.1:9000; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} +} + + +# Virtual Host configuration for example.com +# +# You can move that to a different file under sites-available/ and symlink that +# to sites-enabled/ to enable it. +# +#server { +# listen 80; +# listen [::]:80; +# +# server_name example.com; +# +# root /var/www/example.com; +# index index.html; +# +# location / { +# try_files $uri $uri/ =404; +# } +#} diff --git a/nginx-srv/www/html/index.nginx-debian.html b/nginx-srv/www/html/index.nginx-debian.html new file mode 100644 index 0000000..e8f5622 --- /dev/null +++ b/nginx-srv/www/html/index.nginx-debian.html @@ -0,0 +1,23 @@ + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ +