Getting Started

1

services:
  megarepo:
    image: bsnsoft/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

open http://localhost:8080

2

admin
admin123

3

Maven

maven-central proxy
maven-releases hosted
maven-snapshots hosted
maven-public group

npm

npm-proxy proxy
npm-hosted hosted
npm-public group

PyPI

pypi-proxy proxy
pypi-hosted hosted
pypi-public group

Raw

raw-hosted hosted
raw-public group

Docker

docker-proxy proxy
docker-hosted hosted
docker-public group

4

<settings>
  <mirrors>
    <mirror>
      <id>megarepo</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8080/repository/maven-public/</url>
    </mirror>
  </mirrors>
</settings>

mvn clean install

5

registry=http://localhost:8080/repository/npm-public/

npm install

6

[global]
index-url = http://localhost:8080/repository/pypi-public/simple/
trusted-host = localhost

pip install requests flask numpy

7

<servers>
  <server>
    <id>megarepo-releases</id>
    <username>admin</username>
    <password>your-password</password>
  </server>
</servers>

<distributionManagement>
  <repository>
    <id>megarepo-releases</id>
    <url>http://localhost:8080/repository/maven-releases/</url>
  </repository>
</distributionManagement>
mvn deploy

# Get a token via the API
//localhost:8080/repository/npm-hosted/:_authToken=your-jwt-token
npm publish --registry http://localhost:8080/repository/npm-hosted/

curl -u admin:your-password \
  --upload-file my-app-1.0.tar.gz \
  http://localhost:8080/repository/raw-hosted/releases/my-app-1.0.tar.gz