[GH-ISSUE #4291] [bug]: Installation error under OpenShift #1562

Closed
opened 2026-03-16 20:50:59 +03:00 by kerem · 12 comments
Owner

Originally created by @cyberjpb1 on GitHub (Aug 23, 2024).
Original GitHub issue: https://github.com/hoppscotch/hoppscotch/issues/4291

Is there an existing issue for this?

  • I have searched the existing issues

Current behavior

When I try to install the container image (hoppscotch/hoppscotch) under OpenShift, I get the following error:

node:fs:596
handleErrorFromBinding(ctx);
^
Error: EACCES: permission denied, open 'build.env'
at Object.openSync (node:fs:596:3)
at Object.writeFileSync (node:fs:2322:35)
at file:///usr/src/app/aio_run.mjs:46:4
at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:336:24)
at async loadESM (node:internal/process/esm_loader:34:7)
at async handleMainPromise (node:internal/modules/run_main:106:12) {
errno: -13,
syscall: 'open',
code: 'EACCES',
path: 'build.env'
}
Node.js v18.19.0

Steps to reproduce

oc new-project hoppscotch
oc new-app hoppscotch/hoppscotch

Environment

Production

Version

Self-hosted

Originally created by @cyberjpb1 on GitHub (Aug 23, 2024). Original GitHub issue: https://github.com/hoppscotch/hoppscotch/issues/4291 ### Is there an existing issue for this? - [X] I have searched the existing issues ### Current behavior When I try to install the container image (hoppscotch/hoppscotch) under OpenShift, I get the following error: node:fs:596 handleErrorFromBinding(ctx); ^ Error: EACCES: permission denied, open 'build.env' at Object.openSync (node:fs:596:3) at Object.writeFileSync (node:fs:2322:35) at file:///usr/src/app/aio_run.mjs:46:4 at ModuleJob.run (node:internal/modules/esm/module_job:195:25) at async ModuleLoader.import (node:internal/modules/esm/loader:336:24) at async loadESM (node:internal/process/esm_loader:34:7) at async handleMainPromise (node:internal/modules/run_main:106:12) { errno: -13, syscall: 'open', code: 'EACCES', path: 'build.env' } Node.js v18.19.0 ### Steps to reproduce oc new-project hoppscotch oc new-app hoppscotch/hoppscotch ### Environment Production ### Version Self-hosted
kerem 2026-03-16 20:50:59 +03:00
Author
Owner

@AndrewBastin commented on GitHub (Aug 24, 2024):

@cyberjpb1 Can you confirm this issue is present with 2024.7.2 ?

<!-- gh-comment-id:2307959578 --> @AndrewBastin commented on GitHub (Aug 24, 2024): @cyberjpb1 Can you confirm this issue is present with 2024.7.2 ?
Author
Owner

@cyberjpb1 commented on GitHub (Aug 24, 2024):

@AndrewBastin Yes, I confirm this issue is present with 2024.7.2 version.
Here is the error message :

node:fs:2368
return binding.writeFileUtf8(
^
Error: EACCES: permission denied, open 'build.env'
at Object.writeFileSync (node:fs:2368:20)
at file:///usr/src/app/aio_run.mjs:46:4
at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5) {
errno: -13,
code: 'EACCES',
syscall: 'open',
path: 'build.env'
}
Node.js v20.17.0

<!-- gh-comment-id:2307976339 --> @cyberjpb1 commented on GitHub (Aug 24, 2024): @AndrewBastin Yes, I confirm this issue is present with 2024.7.2 version. Here is the error message : node:fs:2368 return binding.writeFileUtf8( ^ Error: EACCES: permission denied, open 'build.env' at Object.writeFileSync (node:fs:2368:20) at file:///usr/src/app/aio_run.mjs:46:4 at ModuleJob.run (node:internal/modules/esm/module_job:234:25) at async ModuleLoader.import (node:internal/modules/esm/loader:473:24) at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5) { errno: -13, code: 'EACCES', syscall: 'open', path: 'build.env' } Node.js v20.17.0
Author
Owner

@cyberjpb1 commented on GitHub (Sep 19, 2024):

It seems that in the container image, an attempt is made to write a file to a folder that is not allowed by default because under OpenShift the pod never runs as root.

Do you have any suggestion for a solution?

<!-- gh-comment-id:2361891251 --> @cyberjpb1 commented on GitHub (Sep 19, 2024): It seems that in the container image, an attempt is made to write a file to a folder that is not allowed by default because under OpenShift the pod never runs as root. Do you have any suggestion for a solution?
Author
Owner

@AndrewBastin commented on GitHub (Sep 19, 2024):

@cyberjpb1 along with the issue of the folder, another issue we are dealing with is that we are using port 80 within the container as the port through which users can interact with the container.

We are planning on introducing a new environment variable named ROOTLESS which when set will introduce an alternate port and this should make it more friendly for rootless systems like Podman and OpenShift.

You can expect this to be done on the release which should be out by the end of the month.

<!-- gh-comment-id:2361925234 --> @AndrewBastin commented on GitHub (Sep 19, 2024): @cyberjpb1 along with the issue of the folder, another issue we are dealing with is that we are using port 80 within the container as the port through which users can interact with the container. We are planning on introducing a new environment variable named `ROOTLESS` which when set will introduce an alternate port and this should make it more friendly for rootless systems like Podman and OpenShift. You can expect this to be done on the release which should be out by the end of the month.
Author
Owner

@cyberjpb1 commented on GitHub (Sep 19, 2024):

@AndrewBastin Thanks for the information, it is much appreciated.

<!-- gh-comment-id:2361933672 --> @cyberjpb1 commented on GitHub (Sep 19, 2024): @AndrewBastin Thanks for the information, it is much appreciated.
Author
Owner

@szymek07 commented on GitHub (Nov 20, 2024):

@AndrewBastin there is any update about running on OpenShift?

<!-- gh-comment-id:2488477506 --> @szymek07 commented on GitHub (Nov 20, 2024): @AndrewBastin there is any update about running on OpenShift?
Author
Owner

@cyberjpb1 commented on GitHub (Nov 20, 2024):

@szymek07 I tried the latest version of the image (hopscotch/hoppscotch:2024.10.2) and I still have the same error.

<!-- gh-comment-id:2489264842 --> @cyberjpb1 commented on GitHub (Nov 20, 2024): @szymek07 I tried the latest version of the image (hopscotch/hoppscotch:2024.10.2) and I still have the same error.
Author
Owner

@cyberjpb1 commented on GitHub (Dec 30, 2024):

@liyasthomas You have released several versions since this bug was reported. Will you be providing a fix soon or is this not a priority for you?

node:fs:2367
return binding.writeFileUtf8(
^
Error: EACCES: permission denied, open 'build.env'
at Object.writeFileSync (node:fs:2367:20)
at file:///usr/src/app/aio_run.mjs:46:4
at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:122:5) {
errno: -13,
code: 'EACCES',
syscall: 'open',
path: 'build.env'
}
Node.js v20.18.1

<!-- gh-comment-id:2565904233 --> @cyberjpb1 commented on GitHub (Dec 30, 2024): @liyasthomas You have released several versions since this bug was reported. Will you be providing a fix soon or is this not a priority for you? node:fs:2367 return binding.writeFileUtf8( ^ Error: EACCES: permission denied, open 'build.env' at Object.writeFileSync (node:fs:2367:20) at file:///usr/src/app/aio_run.mjs:46:4 at ModuleJob.run (node:internal/modules/esm/module_job:234:25) at async ModuleLoader.import (node:internal/modules/esm/loader:473:24) at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:122:5) { errno: -13, code: 'EACCES', syscall: 'open', path: 'build.env' } Node.js v20.18.1
Author
Owner

@turguns commented on GitHub (Apr 2, 2025):

Hi @cyberjpb1 @AndrewBastin @szymek07 @abraham @silentmatt
I encountered the same issue when trying to install the Hoppscotch container image on OpenShift. The error is caused by permission restrictions preventing access to build.env.

Solution
I resolved this by granting the anyuid security context constraint (SCC) to the Hoppscotch service account. Here’s the applied configuration:
`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
labels:
app.kubernetes.io/instance: hoppscotch
name: hoppscotch-sa-anyuid
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:openshift:scc:anyuid
subjects:

  • kind: ServiceAccount
    name: hoppscotch-sa
    namespace: hoppscotch`

BTW. for me namespace name is hoppscotch..change it according to your naming

<!-- gh-comment-id:2771539619 --> @turguns commented on GitHub (Apr 2, 2025): Hi @cyberjpb1 @AndrewBastin @szymek07 @abraham @silentmatt I encountered the same issue when trying to install the Hoppscotch container image on OpenShift. The error is caused by permission restrictions preventing access to build.env. **Solution** I resolved this by granting the anyuid security context constraint (SCC) to the Hoppscotch service account. Here’s the applied configuration: `apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: annotations: labels: app.kubernetes.io/instance: hoppscotch name: hoppscotch-sa-anyuid roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:openshift:scc:anyuid subjects: - kind: ServiceAccount name: hoppscotch-sa namespace: hoppscotch` BTW. for me namespace name is hoppscotch..change it according to your naming
Author
Owner

@cyberjpb1 commented on GitHub (Apr 6, 2025):

@turguns Thanks for your solution, it seems to work but I think that just installing from the image is not enough, I seem to be missing some environment variables.
How are you installing? Are you using a Helm Chart?

<!-- gh-comment-id:2781211593 --> @cyberjpb1 commented on GitHub (Apr 6, 2025): @turguns Thanks for your solution, it seems to work but I think that just installing from the image is not enough, I seem to be missing some environment variables. How are you installing? Are you using a Helm Chart?
Author
Owner

@turguns commented on GitHub (Apr 6, 2025):

@cyberjpb1 I'm not using Helm, just plain deployment files. I'm sharing all the files. For the database, we're using CloudNativePG, and the manifest files for the database are coming from there.

---
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: postgres-hoppscotch
  namespace: hoppscotch
spec:
  backup:
    barmanObjectStore:
      data:
        compression: gzip
      destinationPath: 's3://hoppscotch-postgres-backup/'
      endpointURL: 'http://nas01.example.com:9001/'
      s3Credentials:
        accessKeyId:
          key: ACCESS_KEY_ID
          name: s3-backup-credential
        secretAccessKey:
          key: ACCESS_SECRET_KEY
          name: s3-backup-credential
      wal:
        compression: gzip
    retentionPolicy: 5d
  imageName: 'ghcr.io/cloudnative-pg/postgresql:16.1'
  enableSuperuserAccess: true
  monitoring:
    customQueriesConfigMap:
      - key: queries
        name: cnpg-default-monitoring
    disableDefaultQueries: false
    enablePodMonitor: true
  affinity:
    enablePodAntiAffinity: true
    podAntiAffinityType: preferred
    topologyKey: topology.kubernetes.io/zone
  maxSyncReplicas: 1
  minSyncReplicas: 1
  enablePDB: true
  bootstrap:
    initdb:
      database: hoppscotch
      owner: user
      secret:
        name: postgres-hoppscotch
  failoverDelay: 0
  postgresql:
    parameters:
     max_wal_size: 2GB
     max_connections: '2000'
     wal_keep_size: 128MB
  postgresUID: 26
  walStorage:
    resizeInUseVolumes: true
    size: 5Gi
    storageClass: csi-vmware-block
  switchoverDelay: 3600
  storage:
    resizeInUseVolumes: true
    size: 10Gi
    storageClass: csi-vmware-block
  primaryUpdateStrategy: unsupervised
  instances: 3
---
kind: Secret
apiVersion: v1
metadata:
  name: postgres-hoppscotch
  namespace: hoppscotch
data:
  database-connection-string: postgresql://user:password@postgres-hoppscotch-rw:5432/hoppscotch ##Conver value to Base64 format
  dbname: hoppscotch ##Conver value to Base64 format
  host: postgres-hoppscotch-rw ##Conver value to Base64 format
  password: password ##Conver value to Base64 format
  port: 5432 ##Conver value to Base64 format
  username: user##Conver value to Base64 format
type: Opaque 
---
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
  name: hoppscotch-postgres-backup
spec:
  backupOwnerReference: cluster
  cluster:
    name: postgres-hoppscotch
  immediate: true
  method: barmanObjectStore
  schedule: 0 0 0 * * *
  suspend: false
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: hoppscotch
  namespace: hoppscotch
  labels:
    app: hoppscotch
    app.kubernetes.io/component: hoppscotch
    app.kubernetes.io/instance: hoppscotch
spec:
  replicas: 1
  selector:
    matchLabels:
      deployment: hoppscotch
  template:
    metadata:
      creationTimestamp: null
      labels:
        deployment: hoppscotch
    spec:
      restartPolicy: Always
      initContainers:
        - resources: {}
          terminationMessagePath: /dev/termination-log
          name: init-container
          command:
            - /bin/sh
          env:
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: postgres-hoppscotch
                  key: database-connection-string
          imagePullPolicy: IfNotPresent
          terminationMessagePolicy: File
          image: 'hoppscotch/hoppscotch:2025.2.0'
          args:
            - '-c'
            - pnpm dlx prisma migrate deploy
      serviceAccountName: hoppscotch-sa
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30
      securityContext: {}
      containers:
        - resources:
            requests:
              cpu: 100m
              memory: 120Mi
          terminationMessagePath: /dev/termination-log
          name: hoppscotch
          env:
            - name: VITE_ALLOWED_AUTH_PROVIDERS
              value: MICROSOFT
            - name: WHITELISTED_ORIGINS
              value: 'https://admin-hoppscotch.apps.example.com,https://frontend-hoppscotch.apps.example.com,https://backend-hoppscotch.apps.example.com'
            - name: REDIRECT_URL
              value: 'https://frontend-hoppscotch.apps.example.com'
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: postgres-hoppscotch
                  key: database-connection-string
            - name: ACCESS_TOKEN_VALIDITY
              value: '2592000000'
            - name: VITE_BACKEND_GQL_URL
              value: 'https://backend-hoppscotch.apps.example.com/graphql'
            - name: VITE_BACKEND_WS_URL
              value: 'ws://backend-hoppscotch.apps.example.com/graphql'
            - name: VITE_BACKEND_API_URL
              value: 'https://backend-hoppscotch.apps.example.com/v1'
            - name: VITE_BASE_URL
              value: 'https://frontend-hoppscotch.apps.example.com'
            - name: VITE_SHORTCODE_BASE_URL
              value: 'https://frontend-hoppscotch.apps.example.com'
            - name: VITE_ADMIN_URL
              value: 'https://admin-hoppscotch.apps.example.com'
            - name: TOKEN_SALT_COMPLEXITY
              value: '10'
            - name: MAGIC_LINK_TOKEN_VALIDITY
              value: '3'
            - name: REFRESH_TOKEN_VALIDITY
              value: '604800000'
            - name: MICROSOFT_CALLBACK_URL
              value: 'https://backend-hoppscotch.apps.example.com/v1/auth/microsoft/callback'
            - name: MICROSOFT_SCOPE
              value: user.read
          ports:
            - containerPort: 3000
              protocol: TCP
            - containerPort: 3100
              protocol: TCP
            - containerPort: 3170
              protocol: TCP
            - containerPort: 80
              protocol: TCP
          imagePullPolicy: IfNotPresent
          terminationMessagePolicy: File
          envFrom:
            - secretRef:
                name: hoppscotch-config
          image: 'hoppscotch/hoppscotch:2025.2.0'
      serviceAccount: hoppscotch-sa
      dnsPolicy: ClusterFirst
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600
---
kind: ServiceAccount
apiVersion: v1
metadata:
  name: hoppscotch-sa
  namespace: hoppscotch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: hoppscotch-sa-anyuid
subjects:
  - kind: ServiceAccount
    name: hoppscotch-sa
    namespace: hoppscotch
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'system:openshift:scc:anyuid'
---
kind: Service
apiVersion: v1
metadata:
  name: hoppscotch
  namespace: hoppscotch
spec:
  ports:
    - name: 80-tcp
      protocol: TCP
      port: 80
      targetPort: 80
    - name: 3000-tcp
      protocol: TCP
      port: 3000
      targetPort: 3000
    - name: 3100-tcp
      protocol: TCP
      port: 3100
      targetPort: 3100
    - name: 3170-tcp
      protocol: TCP
      port: 3170
      targetPort: 3170
  internalTrafficPolicy: Cluster
  selector:
    deployment: hoppscotch
---
---
kind: Route
apiVersion: route.openshift.io/v1
metadata:
  name: hoppscotch-admin
  namespace: hoppscotch
spec:
  host: admin-hoppscotch.apps.example.com
  path: /
  to:
    kind: Service
    name: hoppscotch
    weight: 100
  port:
    targetPort: 3100-tcp
  tls:
    termination: edge
  wildcardPolicy: None
---
kind: Route
apiVersion: route.openshift.io/v1
metadata:
  name: hoppscotch-backend
  namespace: hoppscotch
spec:
  host: backend-hoppscotch.apps.example.com
  path: /
  to:
    kind: Service
    name: hoppscotch
    weight: 100
  port:
    targetPort: 3170-tcp
  tls:
    termination: edge
  wildcardPolicy: None
---
kind: Route
apiVersion: route.openshift.io/v1
metadata:
  name: hoppscotch-frontend
  namespace: hoppscotch
spec:
  host: frontend-hoppscotch.apps.example.com
  path: /
  to:
    kind: Service
    name: hoppscotch
    weight: 100
  port:
    targetPort: 3000-tcp
  tls:
    termination: edge
  wildcardPolicy: None

<!-- gh-comment-id:2781303371 --> @turguns commented on GitHub (Apr 6, 2025): @cyberjpb1 I'm not using Helm, just plain deployment files. I'm sharing all the files. For the database, we're using CloudNativePG, and the manifest files for the database are coming from there. ``` --- apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: postgres-hoppscotch namespace: hoppscotch spec: backup: barmanObjectStore: data: compression: gzip destinationPath: 's3://hoppscotch-postgres-backup/' endpointURL: 'http://nas01.example.com:9001/' s3Credentials: accessKeyId: key: ACCESS_KEY_ID name: s3-backup-credential secretAccessKey: key: ACCESS_SECRET_KEY name: s3-backup-credential wal: compression: gzip retentionPolicy: 5d imageName: 'ghcr.io/cloudnative-pg/postgresql:16.1' enableSuperuserAccess: true monitoring: customQueriesConfigMap: - key: queries name: cnpg-default-monitoring disableDefaultQueries: false enablePodMonitor: true affinity: enablePodAntiAffinity: true podAntiAffinityType: preferred topologyKey: topology.kubernetes.io/zone maxSyncReplicas: 1 minSyncReplicas: 1 enablePDB: true bootstrap: initdb: database: hoppscotch owner: user secret: name: postgres-hoppscotch failoverDelay: 0 postgresql: parameters: max_wal_size: 2GB max_connections: '2000' wal_keep_size: 128MB postgresUID: 26 walStorage: resizeInUseVolumes: true size: 5Gi storageClass: csi-vmware-block switchoverDelay: 3600 storage: resizeInUseVolumes: true size: 10Gi storageClass: csi-vmware-block primaryUpdateStrategy: unsupervised instances: 3 --- kind: Secret apiVersion: v1 metadata: name: postgres-hoppscotch namespace: hoppscotch data: database-connection-string: postgresql://user:password@postgres-hoppscotch-rw:5432/hoppscotch ##Conver value to Base64 format dbname: hoppscotch ##Conver value to Base64 format host: postgres-hoppscotch-rw ##Conver value to Base64 format password: password ##Conver value to Base64 format port: 5432 ##Conver value to Base64 format username: user##Conver value to Base64 format type: Opaque --- apiVersion: postgresql.cnpg.io/v1 kind: ScheduledBackup metadata: name: hoppscotch-postgres-backup spec: backupOwnerReference: cluster cluster: name: postgres-hoppscotch immediate: true method: barmanObjectStore schedule: 0 0 0 * * * suspend: false --- kind: Deployment apiVersion: apps/v1 metadata: name: hoppscotch namespace: hoppscotch labels: app: hoppscotch app.kubernetes.io/component: hoppscotch app.kubernetes.io/instance: hoppscotch spec: replicas: 1 selector: matchLabels: deployment: hoppscotch template: metadata: creationTimestamp: null labels: deployment: hoppscotch spec: restartPolicy: Always initContainers: - resources: {} terminationMessagePath: /dev/termination-log name: init-container command: - /bin/sh env: - name: DATABASE_URL valueFrom: secretKeyRef: name: postgres-hoppscotch key: database-connection-string imagePullPolicy: IfNotPresent terminationMessagePolicy: File image: 'hoppscotch/hoppscotch:2025.2.0' args: - '-c' - pnpm dlx prisma migrate deploy serviceAccountName: hoppscotch-sa schedulerName: default-scheduler terminationGracePeriodSeconds: 30 securityContext: {} containers: - resources: requests: cpu: 100m memory: 120Mi terminationMessagePath: /dev/termination-log name: hoppscotch env: - name: VITE_ALLOWED_AUTH_PROVIDERS value: MICROSOFT - name: WHITELISTED_ORIGINS value: 'https://admin-hoppscotch.apps.example.com,https://frontend-hoppscotch.apps.example.com,https://backend-hoppscotch.apps.example.com' - name: REDIRECT_URL value: 'https://frontend-hoppscotch.apps.example.com' - name: DATABASE_URL valueFrom: secretKeyRef: name: postgres-hoppscotch key: database-connection-string - name: ACCESS_TOKEN_VALIDITY value: '2592000000' - name: VITE_BACKEND_GQL_URL value: 'https://backend-hoppscotch.apps.example.com/graphql' - name: VITE_BACKEND_WS_URL value: 'ws://backend-hoppscotch.apps.example.com/graphql' - name: VITE_BACKEND_API_URL value: 'https://backend-hoppscotch.apps.example.com/v1' - name: VITE_BASE_URL value: 'https://frontend-hoppscotch.apps.example.com' - name: VITE_SHORTCODE_BASE_URL value: 'https://frontend-hoppscotch.apps.example.com' - name: VITE_ADMIN_URL value: 'https://admin-hoppscotch.apps.example.com' - name: TOKEN_SALT_COMPLEXITY value: '10' - name: MAGIC_LINK_TOKEN_VALIDITY value: '3' - name: REFRESH_TOKEN_VALIDITY value: '604800000' - name: MICROSOFT_CALLBACK_URL value: 'https://backend-hoppscotch.apps.example.com/v1/auth/microsoft/callback' - name: MICROSOFT_SCOPE value: user.read ports: - containerPort: 3000 protocol: TCP - containerPort: 3100 protocol: TCP - containerPort: 3170 protocol: TCP - containerPort: 80 protocol: TCP imagePullPolicy: IfNotPresent terminationMessagePolicy: File envFrom: - secretRef: name: hoppscotch-config image: 'hoppscotch/hoppscotch:2025.2.0' serviceAccount: hoppscotch-sa dnsPolicy: ClusterFirst strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% revisionHistoryLimit: 10 progressDeadlineSeconds: 600 --- kind: ServiceAccount apiVersion: v1 metadata: name: hoppscotch-sa namespace: hoppscotch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: hoppscotch-sa-anyuid subjects: - kind: ServiceAccount name: hoppscotch-sa namespace: hoppscotch roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: 'system:openshift:scc:anyuid' --- kind: Service apiVersion: v1 metadata: name: hoppscotch namespace: hoppscotch spec: ports: - name: 80-tcp protocol: TCP port: 80 targetPort: 80 - name: 3000-tcp protocol: TCP port: 3000 targetPort: 3000 - name: 3100-tcp protocol: TCP port: 3100 targetPort: 3100 - name: 3170-tcp protocol: TCP port: 3170 targetPort: 3170 internalTrafficPolicy: Cluster selector: deployment: hoppscotch --- --- kind: Route apiVersion: route.openshift.io/v1 metadata: name: hoppscotch-admin namespace: hoppscotch spec: host: admin-hoppscotch.apps.example.com path: / to: kind: Service name: hoppscotch weight: 100 port: targetPort: 3100-tcp tls: termination: edge wildcardPolicy: None --- kind: Route apiVersion: route.openshift.io/v1 metadata: name: hoppscotch-backend namespace: hoppscotch spec: host: backend-hoppscotch.apps.example.com path: / to: kind: Service name: hoppscotch weight: 100 port: targetPort: 3170-tcp tls: termination: edge wildcardPolicy: None --- kind: Route apiVersion: route.openshift.io/v1 metadata: name: hoppscotch-frontend namespace: hoppscotch spec: host: frontend-hoppscotch.apps.example.com path: / to: kind: Service name: hoppscotch weight: 100 port: targetPort: 3000-tcp tls: termination: edge wildcardPolicy: None ```
Author
Owner

@cyberjpb1 commented on GitHub (Jul 1, 2025):

@turguns Thank you very much. With the information you provided and by adding the following environment variables, I was able to perform a working installation:
MICROSOFT_CLIENT_ID
MICROSOFT_CLIENT_SECRET
MICROSOFT_TENANT_ID
MICROSOFT_TENANT
DATA_ENCRYPTION_KEY
JWT_SECRET

I must say that I also had to perform a database migration.

<!-- gh-comment-id:3024439944 --> @cyberjpb1 commented on GitHub (Jul 1, 2025): @turguns Thank you very much. With the information you provided and by adding the following environment variables, I was able to perform a working installation: MICROSOFT_CLIENT_ID MICROSOFT_CLIENT_SECRET MICROSOFT_TENANT_ID MICROSOFT_TENANT DATA_ENCRYPTION_KEY JWT_SECRET I must say that I also had to perform a database migration.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hoppscotch#1562
No description provided.