This commit is contained in:
熊潇 2025-04-14 23:58:17 +08:00
commit b92686ce29
55 changed files with 2352 additions and 0 deletions

15
.env.minio.example Normal file
View File

@ -0,0 +1,15 @@
# MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 设置 MinIO 服务器的根账户。
# 该用户拥有在部署中对任何资源执行 S3 和管理 API 操作的无限制权限。
# 省略则使用默认值 'minioadmin:minioadmin'。
# MinIO 建议将设置非默认值作为最佳实践,无论环境如何
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=admin123
# MINIO_VOLUMES 设置 MinIO 服务器要使用的存储卷或路径。
MINIO_VOLUMES="./minio-resources"
# MINIO_OPTS 设置要传递给 MinIO 服务器的任何其他命令行选项。
# 例如,`--console-address :9001` 设置 MinIO 控制台监听端口
MINIO_OPTS="--console-address :9001"

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
node_modules
dist
.minio.sys
minio-resources
.env*
!.env*example

1
.markignore Normal file
View File

@ -0,0 +1 @@
.gitignore

33
index.html Normal file
View File

@ -0,0 +1,33 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/png" href="https://kevisual.xiongxiao.me/root/center/panda.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
<link rel="stylesheet" href="/src/index.css" />
<style>
html,
body {
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
#root {
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

View File

@ -0,0 +1,66 @@
## esm.sh docker
```sh
docker pull ghcr.io/esm-dev/esm.sh
```
```sh
docker pull m.daocloud.io/ghcr.io/esm-dev/esm.sh
```
## 部署配置
`config.json`
```json
{
"port": 8080,
"npmRegistry": "https://registry.npmjs.org/"
}
```
`compose.yml`
```yml
version: '3'
services:
esm:
image: ghcr.io/esm-dev/esm.sh:latest
container_name: esm
ports:
- '12000:8080'
environment:
- LOG_LEVEL=debug
volumes:
- ./config.json:/esmd/config.json
- ./data:/esmd
```
## 介绍
Available environment variables:
COMPRESS使用gzip/brotli压缩HTTP响应默认值为true启用
CUSTOM_LANDING_PAGE_ORIGIN自定义着陆页来源地址默认为空。
CUSTOM_LANDING_PAGE_ASSETS自定义着陆页资源文件以逗号分隔默认为空。
CORS_ALLOW_ORIGINS允许的CORS来源以逗号分隔默认允许所有来源*)。
LOG_LEVEL日志级别可选值["debug", "info", "warn", "error"],默认为"info"。
ACCESS_LOG是否启用访问日志默认false禁用
MINIFY是否压缩构建后的JS/CSS文件默认true启用
NPM_QUERY_CACHE_TTLNPM查询缓存有效期默认10分钟。
NPM_REGISTRY全局NPM镜像源默认为"https://registry.npmjs.org/"。
NPM_TOKEN全局NPM镜像源的访问令牌。
NPM_USER全局NPM镜像源的访问用户名。
NPM_PASSWORD全局NPM镜像源的访问密码。
SOURCEMAP是否为构建的JS/CSS文件生成源码映射默认true启用
STORAGE_TYPE存储类型可选值["fs", "s3"],默认为"fs"(本地文件系统)。
STORAGE_ENDPOINT存储服务端点默认路径为"~/.esmd/storage"。
STORAGE_REGIONS3存储区域仅S3存储需要
STORAGE_ACCESS_KEY_IDS3存储的访问密钥ID。
STORAGE_SECRET_ACCESS_KEYS3存储的私有访问密钥。
You can also create your own Dockerfile based on ghcr.io/esm-dev/esm.sh:
FROM ghcr.io/esm-dev/esm.sh:latest
ADD --chown=esm:esm ./config.json /etc/esmd/config.json
CMD ["esmd", "--config", "/etc/esmd/config.json"]

View File

@ -0,0 +1,13 @@
# mc 的一些常用命令
## mc
```sh
mc alias set 'markminio' 'http://192.168.31.39:9000' 'admin' 'admin123'
mc mirror --watch ./mark markminio/mark --overwrite
mc mirror markminio/mark mark --overwrite
```

View File

@ -0,0 +1,2 @@
## minio-serve

View File

@ -0,0 +1,3 @@
# assistant 助手
使用ai和本地部署解决一切期望尽可能解决的东西。

1
mark/common/alist.md Normal file
View File

@ -0,0 +1 @@
123123

1
mark/common/b.md Normal file
View File

@ -0,0 +1 @@
this is a test4

0
mark/common/calibre.md Normal file
View File

View File

0
mark/common/dify.md Normal file
View File

0
mark/common/fastgpt.md Normal file
View File

0
mark/common/gitea.md Normal file
View File

View File

0
mark/common/jupyter.md Normal file
View File

0
mark/common/localsend.md Normal file
View File

0
mark/common/logseq.md Normal file
View File

0
mark/common/minio.md Normal file
View File

0
mark/common/navidrome.md Normal file
View File

0
mark/common/nginx.md Normal file
View File

0
mark/common/obsidian.md Normal file
View File

0
mark/common/ollama.md Normal file
View File

0
mark/common/pot.md Normal file
View File

View File

0
mark/common/searxng.md Normal file
View File

0
mark/common/snipaster.md Normal file
View File

0
mark/common/umami.md Normal file
View File

View File

0
mark/common/vllm.md Normal file
View File

0
mark/common/webdav.md Normal file
View File

0
mark/common/xiaoya.md Normal file
View File

0
mark/db/minio.md Normal file
View File

0
mark/db/postgres.md Normal file
View File

0
mark/db/redis.md Normal file
View File

15
mark/docker/proxy.md Normal file
View File

@ -0,0 +1,15 @@
## proxy
| 源站 | 替换为 | 备注 |
| ------------------ | --------------------- | ---------------------------------------------- |
| docker.elastic.co | elastic.m.daocloud.io | |
| docker.io | docker.m.daocloud.io | |
| gcr.io | gcr.m.daocloud.io | |
| ghcr.io | ghcr.m.daocloud.io | |
| k8s.gcr.io | k8s-gcr.m.daocloud.io | k8s.gcr.io 已被迁移到 registry.k8s.io |
| registry.k8s.io | k8s.m.daocloud.io | |
| mcr.microsoft.com | mcr.m.daocloud.io | |
| nvcr.io | nvcr.m.daocloud.io | |
| quay.io | quay.m.daocloud.io | |
| registry.ollama.ai | ollama.m.daocloud.io | 实验内测中,[使用方法](#加速-ollama--deepseek) |

View File

@ -0,0 +1 @@
https://github.com/sindresorhus/github-markdown-css

View File

View File

0
mark/mac/iterm.md Normal file
View File

0
mark/mac/raycast.md Normal file
View File

0
mark/npm/registry.md Normal file
View File

View File

@ -0,0 +1,27 @@
安装环境
```sh
conda create -n mineru 'python>=3.10' -y
conda activate mineru
pip install -U "magic-pdf[full]" -i https://mirrors.aliyun.com/pypi/simple
```
下载模型
```sh
pip install modelscope
curl -o download_models.py https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py
python download_models.py
```
配置文件在 `magic-pdf.json`
使用
```sh
magic-pdf -p {some_pdf} -o {some_output_dir} -m auto
magic-pdf -p test.pdf -o test -m auto
```

View File

@ -0,0 +1,4 @@
```sh
conda init --system --all
```

27
package.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "@kevisual/awesome",
"version": "0.0.1",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"minio": "MINIO_CONFIG_ENV_FILE=./.env.minio ./minio server --console-address :9001",
"to:files": " mc mirror markminio/mark mark --overwrite",
"to:minio": " mc mirror --watch mark markminio/mark --overwrite"
},
"keywords": [],
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
"license": "MIT",
"packageManager": "pnpm@10.6.2",
"type": "module",
"dependencies": {
"aws-sdk": "^2.1692.0",
"minio": "^8.0.5"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.3",
"@vitejs/plugin-basic-ssl": "^2.0.0",
"@vitejs/plugin-react": "^4.3.4",
"vite": "^6.2.6"
}
}

1822
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

8
readme.md Normal file
View File

@ -0,0 +1,8 @@
# kevisual assistant
为了加速日常生活,个人搭建资料库,个人部署,本地部署,日常使用的开源库。私有服务器值得搭建的服务。利用一切能助力生活的总结。
**公网的服务器叫服务器,私人搭建的是微服务器,只对个人所拥有的东西进行统计。 内容由ai生成**
用ai提取大模型的数据内容到本地。

View File

@ -0,0 +1,17 @@
{
"name": "client-mark",
"version": "0.0.1",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
"license": "MIT",
"packageManager": "pnpm@10.6.2",
"type": "module",
"devDependencies": {
"@types/node": "^22.14.1"
}
}

29
services/client-mark/pnpm-lock.yaml generated Normal file
View File

@ -0,0 +1,29 @@
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
devDependencies:
'@types/node':
specifier: ^22.14.1
version: 22.14.1
packages:
'@types/node@22.14.1':
resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==}
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
snapshots:
'@types/node@22.14.1':
dependencies:
undici-types: 6.21.0
undici-types@6.21.0: {}

View File

@ -0,0 +1,41 @@
import AWS from 'aws-sdk';
import { Client } from 'minio';
const minioClient = new Client({
endPoint: 'localhost',
port: 9000,
useSSL: false,
accessKey: 'admin',
secretKey: 'admin123',
});
// const s3 = new AWS.S3({
// accessKeyId: 'admin',
// secretAccessKey: 'admin123',
// endpoint: 'http://localhost:9000',
// s3ForcePathStyle: true, // 使用路径样式的 URL
// signatureVersion: 'v4',
// });
// 监听事件
const listen = async () => {
const res = minioClient.listenBucketNotification('mark', 'common', '.md', [
's3:ObjectCreated:*', // 监听所有对象创建事件
// delete
's3:ObjectRemoved:*',
]);
res.on('notification', (event) => {
console.log(event);
});
// const res = await minioClient.getBucketNotification('mark');
// console.log(res);
};
listen();
const getList = async () => {
const res = minioClient.listObjectsV2('mark', 'common', true);
res.on('data', (event) => {
console.log(event);
});
};
// getList();

View File

@ -0,0 +1,33 @@
{
"compilerOptions": {
"module": "nodenext",
"target": "esnext",
"noImplicitAny": false,
"outDir": "./dist",
"sourceMap": false,
"allowJs": true,
"newLine": "LF",
"baseUrl": "./",
"typeRoots": [
"node_modules/@types",
"node_modules/@kevisual/types"
],
"declaration": true,
"noEmit": false,
"allowImportingTsExtensions": true,
"emitDeclarationOnly": true,
"moduleResolution": "NodeNext",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"esModuleInterop": true,
"paths": {
"@/*": [
"src/*"
]
}
},
"include": [
"src/**/*.ts",
],
"exclude": [],
}

45
src/main.tsx Normal file
View File

@ -0,0 +1,45 @@
import AWS from 'aws-sdk';
// 配置 S3 客户端
const s3 = new AWS.S3({
accessKeyId: 'admin',
secretAccessKey: 'admin123',
endpoint: 'http://localhost:9000',
s3ForcePathStyle: true, // 使用路径样式的 URL
signatureVersion: 'v4',
});
const main = async () => {
const res = await s3
.listObjectsV2({
Bucket: 'mark',
Prefix: 'mark/common',
})
.promise();
console.log(res);
};
const getObject = async () => {
const res = await s3
.getObject({
Bucket: 'mark',
Key: 'mark/common/alist.md',
})
.promise();
const content = res.Body?.toString();
console.log(content);
};
// main();
// getObject();
const updateObject = async () => {
const res = await s3
.putObject({
Bucket: 'mark',
Key: 'common/b.md',
Body: 'this is a test4',
})
.promise();
console.log(res);
};
// updateObject();

43
tsconfig.json Normal file
View File

@ -0,0 +1,43 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": [
"ES2020",
"DOM",
"DOM.Iterable"
],
"module": "ESNext",
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
// "jsx": "react",
// "jsxFragmentFactory": "Fragment",
// "jsxFactory": "h",
"jsx": "react-jsx",
"baseUrl": "./",
"typeRoots": [
"node_modules/@types",
"node_modules/@kevisual/types",
],
"paths": {
"@/*": [
"src/*"
]
},
/* Linting */
"strict": true,
"noImplicitAny": false,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noFallthroughCasesInSwitch": true
},
"include": [
"src",
"typings.d.ts"
]
}

96
vite.config.mjs Normal file
View File

@ -0,0 +1,96 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
import pkgs from './package.json' with { type: 'json' };
const version = pkgs.version || '0.0.1';
const isDev = process.env.NODE_ENV === 'development';
const basename = isDev ? '/' : pkgs?.basename || '/';
const checkJsh = () => {
return process.env.SHELL === '/bin/jsh';
};
const isJsh = checkJsh();
const plugins = [react(), ];
if (!isJsh) {
const basicSsl = await import('@vitejs/plugin-basic-ssl');
const tailwindcss = await import('@tailwindcss/vite');
const defaultPlugin = basicSsl.default;
const defaultCssPlugin = tailwindcss.default;
plugins.push(defaultCssPlugin(),defaultPlugin());
}
let target = 'https://kevisual.xiongxiao.me';
if (isDev) {
target = 'https://kevisual.xiongxiao.me';
} else {
target = 'https://kevisual.cn';
}
let proxy = {
'/root/center/': {
target: `https://${target}/root/center/`,
},
'/root/system-lib/': {
target: `https://${target}/root/system-lib/`,
},
'/user/login/': {
target: `https://${target}/user/login/`,
},
'/api': {
target: `https://${target}`,
changeOrigin: true,
ws: true,
rewriteWsOrigin: true,
cookieDomainRewrite: 'localhost',
},
};
/**
* @see https://vitejs.dev/config/
*/
export default defineConfig({
plugins,
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
},
},
base: basename,
define: {
DEV_SERVER: JSON.stringify(process.env.NODE_ENV === 'development'),
APP_VERSION: JSON.stringify(version),
BASE_NAME: JSON.stringify(basename),
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
global: 'window',
},
build: {
target: 'modules',
// lib: {
// entry: './src/libs.ts',
// formats: ['es'],
// fileName: (format) => `render.js`,
// },
},
server: {
port: 7008,
host: '0.0.0.0',
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
ws: true,
rewriteWsOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '/api'),
},
'/api/router': {
target: 'ws://localhost:3000',
changeOrigin: true,
ws: true,
rewriteWsOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '/api'),
},
...proxy,
},
},
});