No description
Find a file
Johan Smits 25bf1639c4
Merge tag 'v1.11.1' into development
Release 1.11.1

* Update rack 2.2.19 CVE-2025-61772, CVE-2025-61771, CVE-2025-61770
2025-10-09 20:31:51 +02:00
.gitignore Add ignore file 2019-12-21 14:26:57 +01:00
CHANGELOG.md Release 1.11.1 2025-10-09 20:31:38 +02:00
CODE_OF_CONDUCT.md Add code of conduct 2019-02-10 21:46:22 +01:00
config.ru Initial checkin of service 2019-02-10 21:26:32 +01:00
Dockerfile Update base image to use trixie 2025-09-28 19:33:30 +02:00
Gemfile Update puma to 7.0.4 2025-09-28 19:33:38 +02:00
Gemfile.lock Update rack 2.2.19 CVE-2025-61772, CVE-2025-61771, CVE-2025-61770 2025-10-09 20:30:26 +02:00
LICENSE Add lisence 2019-02-10 21:46:00 +01:00
README.md Use same version as the one published in the example code 2023-03-15 18:36:28 +01:00

Docker Pulls Github Stars Github Stars

Gem in a BOX

This docker service is image to provide a easy private gem server. Uploads and deletes are protected by a authorization token. It allows unauthorized downloads.

Environment variables

HTTP_AUTHORIZATION

  • secret token

Kubernetes example

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:

  name: gemdata-rook-ceph-block
spec:
  storageClassName: rook-ceph-block
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---

apiVersion: v1
kind: Service
metadata:
  name: geminabox
  labels:
    app: geminabox
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: geminabox

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: geminabox
spec:
  # Stop old container before starting new one
  # The storage block used does allow only one access
  strategy:
    type: Recreate
    rollingUpdate: null
  selector:
    matchLabels:
      app: geminabox
  replicas: 1
  template:
    metadata:
      labels:
        app: geminabox
    spec:
      containers:
      - name: geminabox
        image: oursource/geminabox:v1.7.0
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: AUTH_TOKEN
          value: some-secret-key # REPLACE THIS value!!
        - name: RUBYGEMS_STORAGE
          value: /data
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /data
          name: gemdata-rook-ceph-block
      volumes:
      - name: gemdata-rook-ceph-block
        persistentVolumeClaim:
          claimName: gemdata-rook-ceph-block

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: geminabox-ingress
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/whitelist-source-range: 172.31.0.0/16
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
  rules:
  - host: geminabox.example.com
    http:
      paths:
      - backend:
          serviceName: geminabox
          servicePort: 80
  tls:
  - hosts:
    - geminabox.example.com
    secretName: geminabox