Quantcast
Channel: Active questions tagged https - Stack Overflow
Viewing all articles
Browse latest Browse all 1854

SSL Configuration and Localhost over HTTPS using Docker, Node, Express, and React

$
0
0

I need your help today as I’m really stuck with an issue. For a school project, I’m trying to get localhost running with HTTPS using an SSL certificate. However, I keep facing various errors – either permission errors at startup, or my page shows a connection error with no logs to guide me. I’ve been struggling with this for 3 days now, and my files are starting to get messy since I’ve tried so many different approaches.

I’m working with Node, Express, and React, and I’ve containerized my project with Docker. During the Docker setup, I decided to migrate my project to Linux.

Here’s a brief overview of my project structure and files:

Bubble-2.0-master/├── docker-compose.yaml├── cert.pem├── key.pem├── .env├── nginx.conf├── default.conf├── Dockerfile├── package.json├── package-lock.json├── src/│├── Dockerfile.react│├── index.js│├── App.js│├── components/││├── Component1.js││├── Component2.js││└── ...│├── pages/││├── Page1.js││├── Page2.js││└── ...│├── styles/││├── style1.css││├── style2.css││└── ...│└── ...├── server/│├── Dockerfile.node│├── server.js│├── routes/││├── route1.js││├── route2.js││└── ...│├── controllers/││├── controller1.js││├── controller2.js││└── ...│├── models/││├── model1.js││├── model2.js││└── ...│└── ...├── docker-entrypoint-initdb.d/│└── init.sql└── nginx└── Dockerfile

I’ve also made sure to configure cert.pem and key.pem properly for localhost when generating the files. I’ve even tried disabling my firewall, but nothing seems to work. So, I’m reaching out for help, whether it’s to reorganize and restructure my files, or to understand why I can’t get HTTPS working for my localhost page.

Currently, I’m facing the following errors when starting my project using docker-compose up. Previously, I didn’t have any errors at startup or in the logs, but the page at localhost:3000 was very slow and eventually showed a connection error.

I’ve attached the relevant files and error messages below. Any advice or help would be greatly appreciated!

Error :Error message

Files :Docker-compose.yaml :

services:  backend:    build:      context: .      dockerfile: server/Dockerfile.node    container_name: backend    ports:      - "3001:3001"    environment:      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}      MYSQL_DATABASE: ${DB_NAME}      MYSQL_USER: ${DB_USER}      MYSQL_PASSWORD: ${DB_PASSWORD}    volumes:      - .:/usr/src/app      - /usr/src/app/node_modules      - ./cert.pem:/usr/src/app/cert.pem      - ./key.pem:/usr/src/app/key.pem    depends_on:      db:        condition: service_healthy    command: nodemon /usr/src/app/server/server.js    dns:      - 8.8.8.8      - 8.8.4.4  frontend:    build:      context: .      dockerfile: src/Dockerfile.react    container_name: frontend    ports:      - "3000:3000"    volumes:      - .:/usr/src/app      - /usr/src/app/node_modules    depends_on:      - backend    command: sh -c "npm run build && chmod -R 777 /usr/src/app && npm start"    dns:      - 8.8.8.8      - 8.8.4.4  nginx:    build:      context: .      dockerfile: nginx/Dockerfile    container_name: nginx    ports:      - "80:80"      - "443:443"    volumes:      - ./nginx.conf:/etc/nginx/nginx.conf:ro      - ./default.conf:/etc/nginx/conf.d/default.conf:rw      - ./cert.pem:/etc/nginx/ssl/cert.pem      - ./key.pem:/etc/nginx/ssl/key.pem    depends_on:      - frontend      - backend    dns:      - 8.8.8.8      - 8.8.4.4  db:    image: mysql:5.7    container_name: db    environment:      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}      MYSQL_DATABASE: ${DB_NAME}      MYSQL_USER: ${DB_USER}      MYSQL_PASSWORD: ${DB_PASSWORD}    ports:      - "3306:3306"    volumes:      - mysqldbvolume:/var/lib/mysql      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d    command: --init-file /docker-entrypoint-initdb.d/init.sql    healthcheck:      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]      interval: 10s      timeout: 5s      retries: 5    dns:      - 8.8.8.8      - 8.8.4.4volumes:  mysqldbvolume:    driver: local

dockerfile.react :

FROM node:20RUN useradd -ms /bin/bash myuserWORKDIR /usr/src/appUSER rootRUN mkdir -p /home/myuser/.npm-globalRUN npm config set prefix '/home/myuser/.npm-global'RUN echo 'export PATH=/home/myuser/.npm-global/bin:$PATH'>> /home/myuser/.profileRUN . /home/myuser/.profileRUN npm config set registry https://registry.npmjs.org/RUN npm config set strict-ssl falseCOPY package*.json ./RUN rm -rf node_modulesRUN npm cache clean --forceRUN npm install npm@latest -gRUN npm installRUN npm rebuildRUN chmod -R +x /usr/src/app/node_modules/.binRUN chmod +x /usr/src/app/node_modules/.bin/*RUN chown -R myuser:myuser /usr/src/app/node_modulesRUN npm install -g concurrentlyRUN chmod -R 755 /usr/src/appRUN npm install --save-dev cross-env react-scriptsCOPY . .RUN mkdir -p /usr/src/app/buildRUN chown -R myuser:myuser /usr/src/app/buildRUN chmod -R 777 /usr/src/appRUN chmod -R 777 /usr/src/app/buildUSER myuserEXPOSE 3000CMD ["npm", "start"]

Dockerfile.node :

FROM node:20RUN useradd -ms /bin/bash myuserWORKDIR /usr/src/appUSER rootRUN mkdir -p /home/myuser/.npm-globalRUN npm config set prefix '/home/myuser/.npm-global'RUN echo 'export PATH=/home/myuser/.npm-global/bin:$PATH'>> /home/myuser/.profileRUN . /home/myuser/.profileRUN npm config set registry https://registry.npmjs.org/RUN npm config set strict-ssl falseCOPY package*.json ./RUN rm -rf node_modulesRUN npm cache clean --forceRUN npm install npm@latest -gRUN npm installRUN npm rebuildRUN chmod -R +x /usr/src/app/node_modules/.binRUN chmod +x /usr/src/app/node_modules/.bin/*RUN chown -R myuser:myuser /usr/src/app/node_modulesRUN npm install -g concurrently nodemonRUN chown -R myuser:myuser /usr/src/appRUN chown -R node:node /usr/src/appRUN npm install --save-dev cross-env react-scriptsCOPY . .RUN chown root:root /usr/src/app/cert.pem /usr/src/app/key.pemUSER myuserEXPOSE 3001CMD ["nodemon", "server/server.js"]

nginx:nginx.conf :

user nginx;worker_processes auto;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events {    worker_connections 1024;}http {    include       mime.types;    default_type  application/octet-stream;    access_log /var/log/nginx/access.log;    ssl_protocols TLSv1.2 TLSv1.3;    ssl_prefer_server_ciphers on;    add_header X-Content-Type-Options nosniff always;    add_header X-Frame-Options DENY always;    add_header X-XSS-Protection "1; mode=block" always;    add_header Referrer-Policy "strict-origin-when-cross-origin" always;    add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;    include /etc/nginx/conf.d/*.conf;}

default.conf :

server {    listen 80;    server_name localhost;    return 301 https://$host$request_uri;}# Serveur HTTPSserver {    listen 443 ssl;    server_name localhost;    ssl_certificate /etc/nginx/ssl/cert.pem;           ssl_certificate_key /etc/nginx/ssl/key.pem;       ssl_protocols TLSv1.2 TLSv1.3;    ssl_prefer_server_ciphers on;    ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";    location / {        proxy_pass http://frontend:3000;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;    }}

I've already tried generating different SSL certificates, disabling the Windows firewalls, messing around with the permissions, changing the order of actions in my Dockerfiles, and switching versions in case of conflicts. I can't find anything. Please be kind, I'm just getting started. thx appreciate !


Viewing all articles
Browse latest Browse all 1854

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>