From 3c8126615cd2970b10a006ff267517d098be0fd7 Mon Sep 17 00:00:00 2001 From: wanghe Date: Mon, 5 Aug 2024 14:14:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20Verdaccio=20(#1867?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/verdaccio/5.32.1/data.yml | 10 + apps/verdaccio/5.32.1/data/config/config.yaml | 203 ++++++++++++++++++ apps/verdaccio/5.32.1/data/plugins/.gitkeep | 0 apps/verdaccio/5.32.1/data/storage/.gitkeep | 0 apps/verdaccio/5.32.1/docker-compose.yml | 20 ++ apps/verdaccio/5.32.1/scripts/init.sh | 3 + apps/verdaccio/README.md | 3 + apps/verdaccio/data.yml | 19 ++ apps/verdaccio/logo.png | Bin 0 -> 6802 bytes 9 files changed, 258 insertions(+) create mode 100644 apps/verdaccio/5.32.1/data.yml create mode 100644 apps/verdaccio/5.32.1/data/config/config.yaml create mode 100644 apps/verdaccio/5.32.1/data/plugins/.gitkeep create mode 100644 apps/verdaccio/5.32.1/data/storage/.gitkeep create mode 100644 apps/verdaccio/5.32.1/docker-compose.yml create mode 100644 apps/verdaccio/5.32.1/scripts/init.sh create mode 100644 apps/verdaccio/README.md create mode 100644 apps/verdaccio/data.yml create mode 100644 apps/verdaccio/logo.png diff --git a/apps/verdaccio/5.32.1/data.yml b/apps/verdaccio/5.32.1/data.yml new file mode 100644 index 00000000..d7e65136 --- /dev/null +++ b/apps/verdaccio/5.32.1/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "40087" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/verdaccio/5.32.1/data/config/config.yaml b/apps/verdaccio/5.32.1/data/config/config.yaml new file mode 100644 index 00000000..8a82cff7 --- /dev/null +++ b/apps/verdaccio/5.32.1/data/config/config.yaml @@ -0,0 +1,203 @@ +# +# This is the default configuration file. It allows all users to do anything, +# please read carefully the documentation and best practices to +# improve security. +# +# Do not configure host and port under `listen` in this file +# as it will be ignored when using docker. +# see https://verdaccio.org/docs/en/docker#docker-and-custom-port-configuration +# +# Look here for more config file examples: +# https://github.com/verdaccio/verdaccio/tree/5.x/conf +# +# Read about the best practices +# https://verdaccio.org/docs/best + +# path to a directory with all packages +storage: /verdaccio/storage/data +# path to a directory with plugins to include +plugins: /verdaccio/plugins + +# https://verdaccio.org/docs/webui +web: + title: Verdaccio + # comment out to disable gravatar support + # gravatar: false + # by default packages are ordercer ascendant (asc|desc) + # sort_packages: asc + # convert your UI to the dark side + # darkMode: true + # html_cache: true + # by default all features are displayed + # login: true + # showInfo: true + # showSettings: true + # In combination with darkMode you can force specific theme + # showThemeSwitch: true + # showFooter: true + # showSearch: true + # showRaw: true + # showDownloadTarball: true + # HTML tags injected after manifest + # scriptsBodyAfter: + # - '' + # HTML tags injected before ends + # metaScripts: + # - '' + # - '' + # - '' + # HTML tags injected first child at + # bodyBefore: + # - '
html before webpack scripts
' + # Public path for template manifest scripts (only manifest) + # publicPath: http://somedomain.org/ + +# https://verdaccio.org/docs/configuration#authentication +auth: + htpasswd: + file: /verdaccio/storage/htpasswd + # Maximum amount of users allowed to register, defaults to "+infinity". + # You can set this to -1 to disable registration. + # max_users: 1000 + # Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt". + # algorithm: bcrypt # by default is crypt, but is recommended use bcrypt for new installations + # Rounds number for "bcrypt", will be ignored for other algorithms. + # rounds: 10 + +# https://verdaccio.org/docs/configuration#uplinks +# a list of other known repositories we can talk to +uplinks: + npmjs: + url: https://registry.npmjs.org/ + +# Learn how to protect your packages +# https://verdaccio.org/docs/protect-your-dependencies/ +# https://verdaccio.org/docs/configuration#packages +packages: + '@*/*': + # scoped packages + access: $all + publish: $authenticated + unpublish: $authenticated + proxy: npmjs + + '**': + # allow all users (including non-authenticated users) to read and + # publish all packages + # + # you can specify usernames/groupnames (depending on your auth plugin) + # and three keywords: "$all", "$anonymous", "$authenticated" + access: $all + + # allow all known users to publish/publish packages + # (anyone can register by default, remember?) + publish: $authenticated + unpublish: $authenticated + + # if package is not available locally, proxy requests to 'npmjs' registry + proxy: npmjs + +# To improve your security configuration and avoid dependency confusion +# consider removing the proxy property for private packages +# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages + +# https://verdaccio.org/docs/configuration#server +# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections. +# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout. +# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough. +server: + keepAliveTimeout: 60 + # Allow `req.ip` to resolve properly when Verdaccio is behind a proxy or load-balancer + # See: https://expressjs.com/en/guide/behind-proxies.html + # trustProxy: '127.0.0.1' + +# https://verdaccio.org/docs/configuration#offline-publish +# publish: +# allow_offline: false + +# https://verdaccio.org/docs/configuration#url-prefix +# url_prefix: /verdaccio/ +# VERDACCIO_PUBLIC_URL='https://somedomain.org'; +# url_prefix: '/my_prefix' +# // url -> https://somedomain.org/my_prefix/ +# VERDACCIO_PUBLIC_URL='https://somedomain.org'; +# url_prefix: '/' +# // url -> https://somedomain.org/ +# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix'; +# url_prefix: '/second_prefix' +# // url -> https://somedomain.org/second_prefix/' + +# https://verdaccio.org/docs/configuration#security +# security: +# api: +# legacy: true +# # recomended set to true for older installations +# migrateToSecureLegacySignature: true +# jwt: +# sign: +# expiresIn: 29d +# verify: +# someProp: [value] +# web: +# sign: +# expiresIn: 1h # 1 hour by default +# verify: +# someProp: [value] + +# https://verdaccio.org/docs/configuration#user-rate-limit +# userRateLimit: +# windowMs: 50000 +# max: 1000 + +# https://verdaccio.org/docs/configuration#max-body-size +# max_body_size: 10mb + +# https://verdaccio.org/docs/configuration#listen-port +# listen: +# - localhost:4873 # default value +# - http://localhost:4873 # same thing +# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY) +# - https://example.org:4873 # if you want to use https +# - "[::1]:4873" # ipv6 +# - unix:/tmp/verdaccio.sock # unix socket + +# The HTTPS configuration is useful if you do not consider use a HTTP Proxy +# https://verdaccio.org/docs/configuration#https +# https: +# key: ./path/verdaccio-key.pem +# cert: ./path/verdaccio-cert.pem +# ca: ./path/verdaccio-csr.pem + +# https://verdaccio.org/docs/configuration#proxy +# http_proxy: http://something.local/ +# https_proxy: https://something.local/ + +# https://verdaccio.org/docs/configuration#notifications +# notify: +# method: POST +# headers: [{ "Content-Type": "application/json" }] +# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken +# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' + +middlewares: + audit: + enabled: true + +# https://verdaccio.org/docs/logger +# log settings +log: { type: stdout, format: pretty, level: http } +#experiments: +# # support for npm token command +# token: false +# # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string +# tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}' +# # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file +# tarball_url_redirect(packageName, filename) { +# const signedUrl = // generate a signed url +# return signedUrl; +# } + +# translate your registry, api i18n not available yet +# i18n: +# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md +# web: en-US \ No newline at end of file diff --git a/apps/verdaccio/5.32.1/data/plugins/.gitkeep b/apps/verdaccio/5.32.1/data/plugins/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/verdaccio/5.32.1/data/storage/.gitkeep b/apps/verdaccio/5.32.1/data/storage/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/verdaccio/5.32.1/docker-compose.yml b/apps/verdaccio/5.32.1/docker-compose.yml new file mode 100644 index 00000000..464739c7 --- /dev/null +++ b/apps/verdaccio/5.32.1/docker-compose.yml @@ -0,0 +1,20 @@ +services: + verdaccio: + image: verdaccio/verdaccio:5.32.1 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + environment: + - VERDACCIO_PORT=${PANEL_APP_PORT_HTTP} + ports: + - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP} + volumes: + - ./data/storage:/verdaccio/storage + - ./data/config:/verdaccio/conf + - ./data/plugins:/verdaccio/plugins + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/verdaccio/5.32.1/scripts/init.sh b/apps/verdaccio/5.32.1/scripts/init.sh new file mode 100644 index 00000000..44a563b2 --- /dev/null +++ b/apps/verdaccio/5.32.1/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chown -R 10001:65533 data \ No newline at end of file diff --git a/apps/verdaccio/README.md b/apps/verdaccio/README.md new file mode 100644 index 00000000..66846fcc --- /dev/null +++ b/apps/verdaccio/README.md @@ -0,0 +1,3 @@ +# Verdaccio + +**Verdaccio** 是一个简单的、**无需配置的本地私有 npm 注册表**。无需整个数据库即可开始使用!Verdaccio 开箱即用,带有 **自己的小型数据库**,并能够代理其他注册表(例如 npmjs.org),一路缓存下载的模块。对于那些希望扩展存储功能的用户,Verdaccio **支持各种社区制作的插件,可挂接 Amazon 的 s3、Google Cloud Storage 等服务**或创建您自己的插件。 diff --git a/apps/verdaccio/data.yml b/apps/verdaccio/data.yml new file mode 100644 index 00000000..132df4bc --- /dev/null +++ b/apps/verdaccio/data.yml @@ -0,0 +1,19 @@ +name: Verdaccio +tags: + - DevOps +title: 本地私有 NPM 注册中心 +description: 本地私有 NPM 注册中心 +additionalProperties: + key: verdaccio + name: Verdaccio + tags: + - DevOps + shortDescZh: 本地私有 NPM 注册中心 + shortDescEn: local private NPM registry + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://verdaccio.org/ + github: https://github.com/verdaccio/verdaccio + document: https://verdaccio.org/docs/what-is-verdaccio \ No newline at end of file diff --git a/apps/verdaccio/logo.png b/apps/verdaccio/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1be3a3c2c926f966b14e0293c04126f341ea8656 GIT binary patch literal 6802 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 AiU0rr literal 0 KcmV+b0RR6000031