From db3447faa9c6c65e225fed2c0fadf773385f54bd Mon Sep 17 00:00:00 2001 From: rasbj Date: Mon, 26 Jun 2023 02:22:47 +0000 Subject: [PATCH 1/4] Updated .gitignore to ignore docker-compose.yml from tracking --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a7ae3e7..64f4e76 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ .idea/ client/.next data/ +docker-compose.yml config.js .DS_Store dist/ -letsencrypt/ \ No newline at end of file +letsencrypt/ From eef46848969c4a241d710a35bb7e2aac284588c6 Mon Sep 17 00:00:00 2001 From: rasbj Date: Mon, 26 Jun 2023 02:36:23 +0000 Subject: [PATCH 2/4] Updated .gitignore to ignore docker-compose.yml and traefik.yml from tracking --- docker-compose.yml | 52 ---------------------------------------------- traefik.yml | 43 -------------------------------------- 2 files changed, 95 deletions(-) delete mode 100644 docker-compose.yml delete mode 100644 traefik.yml diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0a7cdb6..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,52 +0,0 @@ -version: "3.9" -services: - traefik: - image: "traefik:v2.5" - container_name: "sq_traefik" - command: - - "--api.insecure=true" - - "--providers.file=true" - - "--providers.file.filename=/config/traefik.yml" - - "--entrypoints.webinsecure.address=:80" - - "--entrypoints.web.address=:443" - - "--entryPoints.web.proxyProtocol.insecure" - - "--entryPoints.web.forwardedHeaders.insecure" - - "--certificatesresolvers.tlsresolver.acme.email=email@example.com" - - "--certificatesresolvers.tlsresolver.acme.storage=/letsencrypt/acme.json" - - "--certificatesresolvers.tlsresolver.acme.httpchallenge=true" - - "--certificatesresolvers.tlsresolver.acme.httpchallenge.entrypoint=webinsecure" - ports: - - "80:80" - - "443:443" - - "8080:8080" - volumes: - - "/var/run/docker.sock:/var/run/docker.sock:ro" - - ./letsencrypt:/letsencrypt - - ./traefik.yml:/config/traefik.yml - database: - container_name: sq_mongodb - image: mongo:6.0 - ports: - - "127.0.0.1:27017:27017" - volumes: - - ./data:/data/db - api: - container_name: sq_api - image: ghcr.io/tdjsnelling/sqtracker-api:latest - ports: - - "127.0.0.1:3001:3001" - volumes: - - ./config.js:/sqtracker/config.js - depends_on: - - database - client: - container_name: sq_client - image: ghcr.io/tdjsnelling/sqtracker-client:latest - ports: - - "127.0.0.1:3000:3000" - volumes: - - ./config.js:/sqtracker/config.js - # - ./favicon.png:/sqtracker/public/favicon.png - # - ./favicon.ico:/sqtracker/public/favicon.ico - depends_on: - - api diff --git a/traefik.yml b/traefik.yml deleted file mode 100644 index b3d345c..0000000 --- a/traefik.yml +++ /dev/null @@ -1,43 +0,0 @@ -http: - routers: - api: - service: api - entryPoints: - - web - rule: "Host(`example.com`) && PathPrefix(`/api`, `/sq`)" - middlewares: - - api-prefix - - apiHostHeaderSet - tls: - certResolver: tlsresolver - client: - service: client - entryPoints: - - web - rule: "Host(`example.com`) && PathPrefix(`/`)" - middlewares: - - clientHostHeaderSet - tls: - certResolver: tlsresolver - services: - api: - loadBalancer: - servers: - - url: http://sq_api:3001 - client: - loadBalancer: - servers: - - url: http://sq_client:3000 - middlewares: - api-prefix: - stripPrefix: - prefixes: - - /api - clientHostHeaderSet: - headers: - customRequestHeaders: - Host: "sq_client" - apiHostHeaderSet: - headers: - customRequestHeaders: - Host: "sq_api" From 00f2d79d98f202c6a0ae07323cad5fb2dfe281d5 Mon Sep 17 00:00:00 2001 From: rasbj Date: Mon, 26 Jun 2023 02:44:39 +0000 Subject: [PATCH 3/4] Adding example files for docker-compose and traefik --- .gitignore | 1 + docker-compose.example.yml | 55 ++++++++++++++++++++++++++++++++++++++ traefik.example.yml | 43 +++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 docker-compose.example.yml create mode 100644 traefik.example.yml diff --git a/.gitignore b/.gitignore index 64f4e76..6526594 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ config.js .DS_Store dist/ letsencrypt/ +traefik.yml diff --git a/docker-compose.example.yml b/docker-compose.example.yml new file mode 100644 index 0000000..a0f2a95 --- /dev/null +++ b/docker-compose.example.yml @@ -0,0 +1,55 @@ +version: "3.9" +services: + traefik: + image: "traefik:v2.5" + container_name: "sq_traefik" + command: + - "--api.insecure=true" + - "--providers.file=true" + - "--providers.file.filename=/config/traefik.yml" + - "--entrypoints.webinsecure.address=:80" + - "--entrypoints.web.address=:443" + - "--entryPoints.web.proxyProtocol.insecure" + - "--entryPoints.web.forwardedHeaders.insecure" + - "--certificatesresolvers.tlsresolver.acme.email=admin@example.com" + - "--certificatesresolvers.tlsresolver.acme.storage=/letsencrypt/acme.json" + - "--certificatesresolvers.tlsresolver.acme.httpchallenge=true" + - "--certificatesresolvers.tlsresolver.acme.httpchallenge.entrypoint=webinsecure" + - "--accesslog=true" + - "--accesslog.filePath=/var/log/traefik/access.log" + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - "/var/log/traefik/:/var/log/traefik/" + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - ./letsencrypt:/letsencrypt + - ./traefik.yml:/config/traefik.yml + database: + container_name: sq_mongodb + image: mongo:6.0 + ports: + - "127.0.0.1:27017:27017" + volumes: + - ./data:/data/db + api: + container_name: sq_api + image: ghcr.io/tdjsnelling/sqtracker-api:latest + ports: + - "127.0.0.1:3001:3001" + volumes: + - ./config.js:/sqtracker/config.js + depends_on: + - database + client: + container_name: sq_client + image: ghcr.io/tdjsnelling/sqtracker-client:latest + ports: + - "127.0.0.1:3000:3000" + volumes: + - ./config.js:/sqtracker/config.js + #- ./favicon.png:/sqtracker/client/public/favicon.png + #- ./favicon.ico:/sqtracker/client/public/favicon.ico + depends_on: + - api diff --git a/traefik.example.yml b/traefik.example.yml new file mode 100644 index 0000000..b3d345c --- /dev/null +++ b/traefik.example.yml @@ -0,0 +1,43 @@ +http: + routers: + api: + service: api + entryPoints: + - web + rule: "Host(`example.com`) && PathPrefix(`/api`, `/sq`)" + middlewares: + - api-prefix + - apiHostHeaderSet + tls: + certResolver: tlsresolver + client: + service: client + entryPoints: + - web + rule: "Host(`example.com`) && PathPrefix(`/`)" + middlewares: + - clientHostHeaderSet + tls: + certResolver: tlsresolver + services: + api: + loadBalancer: + servers: + - url: http://sq_api:3001 + client: + loadBalancer: + servers: + - url: http://sq_client:3000 + middlewares: + api-prefix: + stripPrefix: + prefixes: + - /api + clientHostHeaderSet: + headers: + customRequestHeaders: + Host: "sq_client" + apiHostHeaderSet: + headers: + customRequestHeaders: + Host: "sq_api" From 17da5997ef038fa6cfcd24caf4adeccf9427c8d5 Mon Sep 17 00:00:00 2001 From: rasbj Date: Mon, 26 Jun 2023 03:53:09 +0000 Subject: [PATCH 4/4] Fixing issue with rate limiter --- api/Dockerfile | 4 ++-- api/src/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/Dockerfile b/api/Dockerfile index 3d12460..df94a6e 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,9 +1,9 @@ FROM node:16-alpine ENV NODE_ENV=production ENV SENTRY_DSN="https://9b9761216607428180ea3b32bd1c8e58@o140996.ingest.sentry.io/4504645996576768" -LABEL org.opencontainers.image.source=https://github.com/tdjsnelling/sqtracker +LABEL org.opencontainers.image.source=https://github.com/Rasbj/sqtracker WORKDIR /sqtracker/app COPY . . RUN yarn install EXPOSE 3001 -CMD yarn start \ No newline at end of file +CMD yarn start diff --git a/api/src/index.js b/api/src/index.js index 4c27291..7c25f97 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -119,8 +119,8 @@ validateConfig(config).then(() => { // prevent avoiding a client spoofing this to avoid the limit, we also verify // a secret only available to the server const limiter = ratelimit({ - windowMs: 1000 * 60, - max: 30, + windowMs: 1000 * 30, + max: 150, keyGenerator: (req) => { if ( req.headers["x-forwarded-for"] &&