diff --git a/.github/workflows/dockerToHub-dev.yml b/.github/workflows/dockerToHub-dev.yml index 5e90a0a3d..5674c89d2 100644 --- a/.github/workflows/dockerToHub-dev.yml +++ b/.github/workflows/dockerToHub-dev.yml @@ -1,4 +1,4 @@ -name: DEV DEPLOY TO TX +name: DEV DEPLOY on: workflow_dispatch: # push: @@ -16,7 +16,7 @@ jobs: with: ref: 'dev' clean: false - github-server-url: 'https://gh.siji.ci' + #github-server-url: 'https://gh.siji.ci' - name: build and deploy to Docker Hub run: | echo ${{ secrets.ALY_DOCKER_PASSWORD }} | docker login registry.cn-hangzhou.aliyuncs.com -u ${{ secrets.ALY_DOCKER_USERNAME }} --password-stdin @@ -31,7 +31,7 @@ jobs: yes | docker system prune --filter "until=168h" deploy: name: 部署到dev服务器 - runs-on: self + runs-on: ubuntu-latest needs: build steps: - name: Check out the repo @@ -44,22 +44,23 @@ jobs: uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - - name: Sync repository to tx + - name: Sync repository to test server run: | - yes | docker image prune - ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }} root@${{ secrets.TX_SSH_IP }} 'mkdir -p /data/test/ChatGPT-Next-Web' - rsync -az -e 'ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }}' --delete $GITHUB_WORKSPACE/ root@tx.xiaosi.cc:/data/test/ChatGPT-Next-Web + sudo apt-get update && sudo apt-get install -y rsync + ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }} root@${{ secrets.UIYJ_SSH_IP }} 'mkdir -p /data/test/ChatGPT-Next-Web' + rsync -az -e 'ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }}' --delete $GITHUB_WORKSPACE/ root@${{ secrets.UIYJ_SSH_IP }}:/data/test/ChatGPT-Next-Web - name: deploy-to-tx uses: appleboy/ssh-action@master env: SERVER_WORKDIR: ${{ secrets.SERVER_WORKDIR }} #传递工作目录变量 with: - host: ${{ secrets.TX_SSH_IP }} #服务器地址 + host: ${{ secrets.UIYJ_SSH_IP }} #服务器地址 username: root #用户名 port: ${{ secrets.SSH_PORT }} key: ${{ secrets.SSH_PRIVATE_KEY }} #私钥 安全问题一定都以变量的方式传递!!! envs: SERVER_WORKDIR,ALY_DOCKER_PASSWORD,ALY_DOCKER_USERNAME,DOCKER_ENV #使用工作目录变量 script: | + mkdir -p /data/test/ChatGPT-Next-Web cd /data/test/ChatGPT-Next-Web echo "${{ secrets.DOCKER_ENV }}" > .env # 测试分支, @@ -73,36 +74,3 @@ jobs: yes | docker image prune rm -rf /www/server/nginx/proxy_cache_dir/* || true rm -rf /www/server/nginx/proxy_temp_dir/* || true - - - - name: Sync repository to xy-nm - run: | - yes | docker image prune - ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }} root@${{ secrets.NM_SSH_IP }} 'mkdir -p /data/test/ChatGPT-Next-Web' - rsync -az -e 'ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }}' --delete $GITHUB_WORKSPACE/ root@xy-nm.xiaosi.cc:/data/test/ChatGPT-Next-Web - - name: deploy-to-xy-nm - uses: appleboy/ssh-action@master - env: - SERVER_WORKDIR: ${{ secrets.SERVER_WORKDIR }} #传递工作目录变量 - with: - host: ${{ secrets.NM_SSH_IP }} #服务器地址 - username: root #用户名 - port: ${{ secrets.SSH_PORT }} - key: ${{ secrets.SSH_PRIVATE_KEY }} #私钥 安全问题一定都以变量的方式传递!!! - envs: SERVER_WORKDIR,ALY_DOCKER_PASSWORD,ALY_DOCKER_USERNAME,DOCKER_ENV #使用工作目录变量 - script: | - cd /data/test/ChatGPT-Next-Web - echo "${{ secrets.DOCKER_ENV }}" > .env - # 测试分支, - echo "COMPOSE_PROJECT_NAME=test-chatgpt-web" >> .env - sed -i 's@image: registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web@image: registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:test@g' docker-compose.yml - echo ${{ secrets.ALY_DOCKER_PASSWORD }} | docker login registry.cn-hangzhou.aliyuncs.com -u ${{ secrets.ALY_DOCKER_USERNAME }} --password-stdin - sed -i 's|23000:|23001:|g' docker-compose.yml - sed -i 's|container_name:|#container_name:|g' docker-compose.yml - docker network ls | grep -qw chatgpt-ns || docker network create chatgpt-ns - docker-compose pull && docker-compose up -d - yes | docker image prune - rm -rf /www/server/nginx/proxy_cache_dir/* || true - rm -rf /www/server/nginx/proxy_temp_dir/* || true - - diff --git a/.github/workflows/dockerToHub.yml b/.github/workflows/dockerToHub.yml index 01ec1a43a..ae2cf52f8 100644 --- a/.github/workflows/dockerToHub.yml +++ b/.github/workflows/dockerToHub.yml @@ -23,7 +23,7 @@ jobs: - name: Check out the repo uses: actions/checkout@v4 with: - clean: false + clean: true github-server-url: 'https://gh.siji.ci' - name: build and deploy to Docker Hub run: | @@ -36,7 +36,7 @@ jobs: download-repo: name: 下载仓库 needs: build - runs-on: self + runs-on: ubuntu-latest steps: - name: Check out the repo uses: actions/checkout@v4 @@ -46,7 +46,7 @@ jobs: deploy-nm: name: 部署到内蒙服务器 needs: download-repo - runs-on: self + runs-on: ubuntu-latest steps: - name: Set up SSH key uses: webfactory/ssh-agent@v0.9.0 @@ -77,3 +77,38 @@ jobs: rm -rf /www/server/nginx/proxy_temp_dir/* || true sleep 2 #tccli cdn PurgePathCache --cli-unfold-argument --Paths '${{ secrets.WEB_URL }}' --FlushType delete + + deploy-bk-uiyj: + name: 部署到十堰服务器 + needs: download-repo + runs-on: ubuntu-latest + steps: + - name: Set up SSH key + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Sync repository to uiyj + run: | + ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }} root@${{ secrets.UIYJ_SSH_IP }} 'mkdir -p /data/ChatGPT-Next-Web' + rsync -az -e 'ssh -o StrictHostKeyChecking=no -p${{ secrets.SSH_PORT }}' --delete $GITHUB_WORKSPACE/ root@${{ secrets.UIYJ_SSH_IP }}:/data/ChatGPT-Next-Web/ + - name: deploy-to-uiyj + uses: appleboy/ssh-action@master + env: + SERVER_WORKDIR: ${{ secrets.SERVER_WORKDIR }} #传递工作目录变量 + with: + host: ${{ secrets.UIYJ_SSH_IP }} #服务器地址 + username: root #用户名 + port: ${{ secrets.SSH_PORT }} + key: ${{ secrets.SSH_PRIVATE_KEY }} #私钥 安全问题一定都以变量的方式传递!!! + envs: SERVER_WORKDIR,ALY_DOCKER_PASSWORD,ALY_DOCKER_USERNAME,DOCKER_ENV #使用工作目录变量 + script: | + cd $SERVER_WORKDIR #进入到工作目录 + echo "${{ secrets.DOCKER_ENV }}" > .env + echo ${{ secrets.ALY_DOCKER_PASSWORD }} | docker login registry.cn-hangzhou.aliyuncs.com -u ${{ secrets.ALY_DOCKER_USERNAME }} --password-stdin + docker network ls | grep -qw chatgpt-ns || docker network create chatgpt-ns + docker-compose pull && docker-compose up -d + yes | docker image prune + rm -rf /www/server/nginx/proxy_cache_dir/* || true + rm -rf /www/server/nginx/proxy_temp_dir/* || true + sleep 2 + #tccli cdn PurgePathCache --cli-unfold-argument --Paths '${{ secrets.WEB_URL }}' --FlushType delete diff --git a/app/components/emoji.tsx b/app/components/emoji.tsx index 9321b5afd..b3d55a896 100644 --- a/app/components/emoji.tsx +++ b/app/components/emoji.tsx @@ -14,7 +14,8 @@ export function getEmojiUrl(unified: string, style: EmojiStyle) { // Old CDN broken, so I had to switch to this one // Author: https://github.com/H0llyW00dzZ // return `https://fastly.jsdelivr.net/npm/emoji-datasource-apple/img/${style}/64/${unified}.png`; - return `https://cdn.bootcdn.net/ajax/libs/emoji-datasource-apple/15.1.2/img/${style}/64/${unified}.png`; + // return `https://cdn.bootcdn.net/ajax/libs/emoji-datasource-apple/15.1.2/img/${style}/64/${unified}.png`; + return `https://cdn.staticfile.net/emoji-datasource-apple/15.0.1/img/${style}/64/${unified}.png`; } export function AvatarPicker(props: { diff --git a/app/components/reward.tsx b/app/components/reward.tsx index 757e09e46..a182ae9b4 100644 --- a/app/components/reward.tsx +++ b/app/components/reward.tsx @@ -27,7 +27,7 @@ export function RewardPage() { style={{ position: "absolute", top: 0, left: 0, right: 0, bottom: 0 }} > 打赏 - - + + + {children} diff --git a/app/store/prompt.ts b/app/store/prompt.ts index d18fdc32c..00cb36aaf 100644 --- a/app/store/prompt.ts +++ b/app/store/prompt.ts @@ -159,8 +159,9 @@ export const usePromptStore = createPersistStore( onRehydrateStorage(state) { // const PROMPT_URL = "https://cos.xiaosi.cc/next/public/prompts.json"; - const PROMPT_URL = "./prompts.json"; - const GPT_PROMPT_URL = "./prompt_library.json"; + const PROMPT_URL = "https://oss.xiaosi.cc/chat/public/prompts.json"; + const GPT_PROMPT_URL = + "https://oss.xiaosi.cc/chat/public/prompt_library.json"; type PromptList = Array<[string, string]>; diff --git a/app/styles/globals.scss b/app/styles/globals.scss index 1bdaf28cf..266c08a02 100644 --- a/app/styles/globals.scss +++ b/app/styles/globals.scss @@ -381,17 +381,17 @@ pre { // url('//lib.baomitu.com/fonts/noto-sans/noto-sans-regular.svg#NotoSans') format('svg'); /* Legacy iOS */ //} -/* https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.svg */ +/* https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.svg */ @font-face { font-family: 'Noto Sans'; font-style: normal; font-weight: normal; /* regular; */ - src: url('https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.eot'); /* IE9 Compat Modes */ + src: url('https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.eot'); /* IE9 Compat Modes */ src: local('Noto Sans'), local('NotoSans-Normal'), - url('https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.woff2') format('woff2'), /* Super Modern Browsers */ - url('https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.woff') format('woff'), /* Modern Browsers */ - url('https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('https://cos.xiaosi.cc/fonts/noto-sans/noto-sans-regular.svg#NotoSans') format('svg'); /* Legacy iOS */ + url('https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.woff') format('woff'), /* Modern Browsers */ + url('https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('https://oss.xiaosi.cc/fonts/noto-sans/noto-sans-regular.svg#NotoSans') format('svg'); /* Legacy iOS */ } diff --git a/public/site.webmanifest b/public/site.webmanifest index 233c8e384..a71b87453 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -3,12 +3,12 @@ "short_name": "NextChat", "icons": [ { - "src": "https://cos.xiaosi.cc/next/public/android-chrome-192x192.png", + "src": "https://oss.xiaosi.cc/chat/public/android-chrome-192x192.png!webp", "sizes": "192x192", "type": "image/png" }, { - "src": "https://cos.xiaosi.cc/next/public/android-chrome-512x512.png", + "src": "https://oss.xiaosi.cc/chat/public/android-chrome-512x512.png!webp", "sizes": "512x512", "type": "image/png" } @@ -17,4 +17,4 @@ "theme_color": "#ffffff", "background_color": "#ffffff", "display": "standalone" -} \ No newline at end of file +} diff --git a/start.sh b/start.sh index 59f944897..fbc785b90 100755 --- a/start.sh +++ b/start.sh @@ -1,37 +1,30 @@ #!/bin/bash set -e -# 加速 -yarn config set registry 'https://registry.npmmirror.com/' -yarn config set sharp_binary_host "https://npm.taobao.org/mirrors/sharp" -yarn config set sharp_libvips_binary_host "https://npm.taobao.org/mirrors/sharp-libvips" -# 官方 -#yarn config delete registry -#yarn config delete sharp_binary_host -#yarn config delete sharp_libvips_binary_host - -yarn cache clean -yarn install -#if command -v cnpm &> /dev/null -#then -# echo "cnpm 已安装" -#else -# npm i cnpm -#fi +## 加速 +#yarn config set registry 'https://registry.npmmirror.com/' +#yarn config set sharp_binary_host "https://npm.taobao.org/mirrors/sharp" +#yarn config set sharp_libvips_binary_host "https://npm.taobao.org/mirrors/sharp-libvips" +## 官方 +##yarn config delete registry +##yarn config delete sharp_binary_host +##yarn config delete sharp_libvips_binary_host # -#cnpm i -yarn run build - -mkdir -p "./node_modules/tiktoken" -export OUT_DIR="out" - -mkdir -p ${OUT_DIR} - -rsync -az --delete ./.next/standalone/ ${OUT_DIR} -rsync -az --delete ./public/ ${OUT_DIR}/public -rsync -az --delete ./.next/static/ ${OUT_DIR}/.next/static -rsync -az --delete ./.next/server/ ${OUT_DIR}/.next/server -rsync -az --delete ./.next/server/ ${OUT_DIR}/.next/server -rsync -az --delete "./node_modules/tiktoken/" ${OUT_DIR}/node_modules/tiktoken +#yarn cache clean +#yarn install +# +#yarn run build +# +#mkdir -p "./node_modules/tiktoken" +#export OUT_DIR="out" +# +#mkdir -p ${OUT_DIR} +# +#rsync -az --delete ./.next/standalone/ ${OUT_DIR} +#rsync -az --delete ./public/ ${OUT_DIR}/public +#rsync -az --delete ./.next/static/ ${OUT_DIR}/.next/static +#rsync -az --delete ./.next/server/ ${OUT_DIR}/.next/server +#rsync -az --delete ./.next/server/ ${OUT_DIR}/.next/server +#rsync -az --delete "./node_modules/tiktoken/" ${OUT_DIR}/node_modules/tiktoken docker network ls | grep -qw chatgpt-ns || docker network create chatgpt-ns @@ -39,8 +32,8 @@ docker network ls | grep -qw chatgpt-ns || docker network create chatgpt-ns if ! docker buildx inspect mybuilder &> /dev/null; then docker buildx create --use --name=mybuilder fi -#docker build -t registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:temp -f Dockerfile.linux-build . -docker buildx build --platform linux/amd64 -t registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:temp -f Dockerfile.linux-build --load . +#docker buildx build --platform linux/amd64 -t registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:temp -f Dockerfile.linux-build --load . +docker buildx build --platform linux/amd64 -t registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:temp -f Dockerfile --load . docker tag registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:temp registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:latest docker tag registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:temp registry.cn-hangzhou.aliyuncs.com/si-private/chatgpt-next-web:test