Reactive Resume running behind Nginx Proxy Manager

For the purpose of this post, I have discovered that the Reactive-Resume docker does not function optimally when run behind an Nginx Proxy. You should have an understanding and working Nginx Proxy Manger, Docker, etc as I’m not going into those separate services. However, I have managed to identify additional settings that enable the proper functioning of Reactive-Resume over HTTPS via Nginx. The following is the docker-compose.yml file that I found to be effective:

version: "3.8"

services:
  postgres:
    image: postgres:alpine
    restart: always
    ports:
      - 5432:5432
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      start_period: 15s
      interval: 30s
      timeout: 30s
      retries: 3
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_HOST=localhost

  server:
    image: amruthpillai/reactive-resume:server-latest
    # build:
    #   context: .
    #   dockerfile: ./server/Dockerfile
    restart: always
    ports:
      - 3100:3100
    depends_on:
      - postgres
    environment:
      - PUBLIC_URL=https://subdomain.yourdomain.com
      - PUBLIC_SERVER_URL=https://subdomain.yourdomain.com
      - PUBLIC_GOOGLE_CLIENT_ID=
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - SECRET_KEY=make-a-secret-key
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_SSL_CERT=
      - JWT_SECRET=make-a-secret-key
      - JWT_EXPIRY_TIME=604800
      - GOOGLE_CLIENT_SECRET=
      - GOOGLE_API_KEY=
      - MAIL_FROM_NAME=
      - MAIL_FROM_EMAIL=
      - MAIL_HOST=
      - MAIL_PORT=
      - MAIL_USERNAME=
      - MAIL_PASSWORD=
      - STORAGE_BUCKET=
      - STORAGE_REGION=
      - STORAGE_ENDPOINT=
      - STORAGE_URL_PREFIX=
      - STORAGE_ACCESS_KEY=
      - STORAGE_SECRET_KEY=
      - PDF_DELETION_TIME=

  client:
    image: amruthpillai/reactive-resume:client-latest
    # build:
    #   context: .
    #   dockerfile: ./client/Dockerfile
    restart: always
    ports:
      - 3000:3000
    depends_on:
      - server
    environment:
      - PUBLIC_URL=https://subdomain.yourdomain.com
      - PUBLIC_SERVER_URL=https://subdomain.yourdomain.com
      - PUBLIC_GOOGLE_CLIENT_ID=

volumes:
  pgdata:

*Note: You should understand the docker-compose file and edit it to your needs. This should not be copied and pasted for production use.

When you configure Nginx Proxy Manager with default settings, you may observe some broken components on the site. This is likely because the client and server are utilizing different ports, and during the initial Nginx setup, only port 3000 was specified (as mentioned in this post). To ensure smooth functioning, I identified the server-side calls and added Custom Locations. To resolve the issue, please add the following Custom Locations within the Edit Proxy Host section:

Define LocationSchemeForward Hostname / IPForward Port
/assetshttpip-of-reactive-resume-docker3100
/authhttpip-of-reactive-resume-docker3100
/confighttpip-of-reactive-resume-docker3100
/fontshttpip-of-reactive-resume-docker3100
/healthhttpip-of-reactive-resume-docker3100
/printerhttpip-of-reactive-resume-docker3100
/resumehttpip-of-reactive-resume-docker3100
/usershttpip-of-reactive-resume-docker3100

After saving this configuration, you should be able to access your locally hosted Reactive-Resume docker seamlessly from your Nginx proxy server, without encountering any issues.

Verified by MonsterInsights