Admin Guide

Docker Compose

services:
  megarepo:
    image: git.bsnsoft.de:5555/megarepo/app-megarepo:latest
    ports: ["8080:8080"]
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/megarepo?stringtype=unspecified
      SPRING_DATASOURCE_USERNAME: megarepo
      SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD:-megarepo}
      MEGAREPO_SECURITY_JWT_SECRET: ${MEGAREPO_JWT_SECRET:-change-me-in-production}
      MEGAREPO_DATA_DIRECTORY: /opt/megarepo/data
      MEGAREPO_BLOB_STORES_DEFAULT_PATH: /opt/megarepo/data/blobs/default
    volumes: ["megarepo-data:/opt/megarepo/data"]
    depends_on:
      db: { condition: service_healthy }
    restart: unless-stopped
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: megarepo
      POSTGRES_USER: megarepo
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-megarepo}
    volumes: ["postgres-data:/var/lib/postgresql/data"]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U megarepo"]
      interval: 5s
      retries: 5
    restart: unless-stopped
volumes:
  megarepo-data:
  postgres-data:
docker compose up -d

Helm / Kubernetes

helm install megarepo ./helm/megarepo \
  --set postgresql.auth.password=<db-password> \
  --set env.MEGAREPO_SECURITY_JWT_SECRET=<jwt-secret>

Bare Metal

java --enable-preview -jar megarepo-app.jar \
  --spring.datasource.url=jdbc:postgresql://localhost:5432/megarepo?stringtype=unspecified \
  --spring.datasource.username=megarepo \
  --spring.datasource.password=<password> \
  --megarepo.security.jwt.secret=<jwt-secret>

Default
megarepo.security.jwt.secret--
megarepo.security.jwt.access-token-expiry30m
megarepo.security.jwt.refresh-token-expiry7d
megarepo.security.default-admin-passwordadmin123
megarepo.data-directory./data
megarepo.blob-stores.default-path./data/blobs/default
megarepo.proxy.connect-timeout10s
megarepo.proxy.read-timeout30s
spring.servlet.multipart.max-file-size1GB
megarepo.license.path./megarepo.license

FormatEndpoint
Maven / npm / PyPI / Raw/repository/{name}/
Docker/v2/

TOKEN=$(curl -s -X POST http://localhost:8080/api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"admin123"}' | jq -r '.accessToken')

curl -X POST http://localhost:8080/api/v1/security/users \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "userId": "deployer",
    "firstName": "CI",
    "lastName": "Deployer",
    "email": "deployer@example.com",
    "password": "s3curePassw0rd",
    "status": "ACTIVE",
    "roles": ["nx-anonymous"]
  }'

docker compose pull megarepo
docker compose up -d megarepo

Port 8080 was already in use
Unable to obtain connection from database
Migration checksum mismatch
Read timed out ... remote repository
Failed to initialize blob store
OutOfMemoryError " data-de="JAVA_OPTS=\"-Xmx1g\" setzen">