From 2e823408c3bc9e57100357087fd941cc3e039f4a Mon Sep 17 00:00:00 2001 From: LiuShen <3162475700@qq.com> Date: Mon, 15 Sep 2025 23:58:29 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8E=E6=9B=B4=E6=96=B0anheyu-app-pro?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=8D=95=E5=BA=94=E7=94=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=84=9A=E6=9C=AC=EF=BC=8C=E5=AE=8C=E5=96=84mirror.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- anheyu-blog-pro/1.0.27/data.yml | 133 ++++++++++++++++++++++ anheyu-blog-pro/1.0.27/docker-compose.yml | 29 +++++ anheyu-blog-pro/1.0.27/scripts/init.sh | 29 +++++ anheyu-blog-pro/1.0.27/scripts/upgrade.sh | 29 +++++ anheyu-blog-pro/README.md | 78 +++++++++++++ anheyu-blog-pro/data.yml | 30 +++++ anheyu-blog-pro/logo.png | Bin 0 -> 7541 bytes anheyu-blog/1.0.27/data.yml | 2 +- anheyu-blog/1.0.27/docker-compose.yml | 2 +- 9 files changed, 330 insertions(+), 2 deletions(-) create mode 100644 anheyu-blog-pro/1.0.27/data.yml create mode 100644 anheyu-blog-pro/1.0.27/docker-compose.yml create mode 100644 anheyu-blog-pro/1.0.27/scripts/init.sh create mode 100644 anheyu-blog-pro/1.0.27/scripts/upgrade.sh create mode 100644 anheyu-blog-pro/README.md create mode 100644 anheyu-blog-pro/data.yml create mode 100644 anheyu-blog-pro/logo.png diff --git a/anheyu-blog-pro/1.0.27/data.yml b/anheyu-blog-pro/1.0.27/data.yml new file mode 100644 index 000000000..e14910b2c --- /dev/null +++ b/anheyu-blog-pro/1.0.27/data.yml @@ -0,0 +1,133 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_DB_HOST + required: true + type: service + default: mysql + envKey: PANEL_DB_TYPE + labelEn: Database Service + labelZh: 数据库服务 + label: + en: Database Service + ja: データベースサービス + ms: Perkhidmatan Pangkalan Data + pt-br: Serviço de Banco de Dados + ru: Сервис базы данных + ko: 데이터베이스 서비스 + zh: 数据库服务 + zh-Hant: 數據庫 服務 + required: true + type: apps + values: + - label: MySQL + value: mysql + - label: MariaDB + value: mariadb + - label: PostgreSQL + value: postgres + - default: anheyu + envKey: PANEL_DB_NAME + labelEn: Database Name + labelZh: 数据库名 + label: + en: Database Name + ja: データベース + ms: Pangkalan Data + pt-br: Banco de Dados + ru: База данных + ko: 데이터베이스 + zh: 数据库名 + zh-Hant: 數據庫名 + random: true + required: true + rule: paramCommon + type: text + - default: anheyu + envKey: PANEL_DB_USER + labelEn: Database User + labelZh: 数据库用户 + label: + en: Database User + ja: ユーザー + ms: Pengguna + pt-br: Usuário + ru: Пользователь + ko: 사용자 + zh: 数据库用户 + zh-Hant: 數據庫用戶 + random: true + required: true + rule: paramCommon + type: text + - default: anheyu + envKey: PANEL_DB_USER_PASSWORD + labelEn: Database User Password + labelZh: 数据库用户密码 + label: + en: Database User Password + ja: パスワード + ms: Kata Laluan + pt-br: Senha + ru: Пароль + ko: 비밀번호 + zh: 数据库用户密码 + zh-Hant: 數據庫用戶密碼 + random: true + required: true + type: password + - default: "" + envKey: PANEL_REDIS_HOST + key: redis + labelEn: Redis Service + labelZh: redis 服务 + required: true + type: service + label: + en: Redis Service + ja: Redisサービス + ms: Perkhidmatan Redis + pt-br: Serviço Redis + ru: Сервис Redis + ko: Redis 서비스 + zh: redis 服务 + zh-Hant: redis 服务 + - default: "" + envKey: PANEL_REDIS_ROOT_PASSWORD + labelEn: Redis Service Password + labelZh: 缓存服务服务密码 + required: false + type: password + # 验证密钥 + - default: "" + envKey: PANEL_LICENSE_KEY + labelEn: License Key + labelZh: 授权密钥 + label: + en: License Key + ja: ライセンスキー + ms: Kunci Lesen + pt-br: Chave de Licença + ru: Лицензионный ключ + ko: 라이선스 키 + zh: 授权密钥 + zh-Hant: 授權密鑰 + required: true + type: password + - default: 37826 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: HTTP 端口 + label: + en: Port + ja: ポート + ms: Port + pt-br: Porta + ru: Порт + ko: 포트 + zh: HTTP 端口 + zh-Hant: HTTP連接埠 + required: true + rule: paramPort + type: number diff --git a/anheyu-blog-pro/1.0.27/docker-compose.yml b/anheyu-blog-pro/1.0.27/docker-compose.yml new file mode 100644 index 000000000..e6eb618a9 --- /dev/null +++ b/anheyu-blog-pro/1.0.27/docker-compose.yml @@ -0,0 +1,29 @@ +services: + anheyu: + # build: . + image: anheyu/anheyu-backend:v1.0.27 + container_name: ${CONTAINER_NAME} + restart: always + labels: + createdBy: "Apps" + ports: + - ${PANEL_APP_PORT_HTTP}:8091 + environment: + ANHEYU_DATABASE_TYPE: ${PANEL_DB_TYPE} + ANHEYU_DATABASE_HOST: ${PANEL_DB_HOST} + ANHEYU_DATABASE_USER: ${PANEL_DB_USER} + ANHEYU_DATABASE_NAME: ${PANEL_DB_NAME} + ANHEYU_DATABASE_PORT: ${PANEL_DB_PORT} + ANHEYU_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD} + ANHEYU_REDIS_ADDR: ${PANEL_REDIS_HOST}:6379 + ANHEYU_REDIS_PASSWORD: ${PANEL_REDIS_ROOT_PASSWORD} + ANHEYU_REDIS_DB: 10 + ANHEYU_LICENSE_KEY: ${PANEL_LICENSE_KEY} + networks: + - 1panel-network + volumes: + - ./data:/anheyu/data + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/anheyu-blog-pro/1.0.27/scripts/init.sh b/anheyu-blog-pro/1.0.27/scripts/init.sh new file mode 100644 index 000000000..d68a2c04d --- /dev/null +++ b/anheyu-blog-pro/1.0.27/scripts/init.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Script to replace anheyu/anheyu-backend with harbor.anheyu.com/anheyu/pro in docker-compose.yml +# Compatible with Ubuntu, CentOS, Debian and other Linux distributions +# Check if docker-compose.yml exists +if [ ! -f "./docker-compose.yml" ]; then + echo "Error: ./docker-compose.yml file not found!" + exit 1 +fi +# Check if backup file already exists and remove it +if [ -f "./docker-compose.yml.back" ]; then + echo "Existing backup file found, removing old backup..." + rm ./docker-compose.yml.back +fi +# Create backup of original file +cp ./docker-compose.yml ./docker-compose.yml.back +echo "Backup created: ./docker-compose.yml.back" +# Replace anheyu/anheyu-backend with harbor.anheyu.com/anheyu/pro +sed -i 's|anheyu/anheyu-backend|harbor.anheyu.com/anheyu/pro|g' ./docker-compose.yml +# Check if replacement was successful +if grep -q "harbor.anheyu.com/anheyu/pro" ./docker-compose.yml; then + echo "Successfully replaced anheyu/anheyu-backend with harbor.anheyu.com/anheyu/pro" + echo "Changes applied to ./docker-compose.yml" +else + echo "Warning: No replacements were made. Please check if 'anheyu/anheyu-backend' exists in the file." +fi +# Show the changes +echo "" +echo "Modified lines:" +grep "harbor.anheyu.com/anheyu/pro" ./docker-compose.yml || echo "No matching lines found" \ No newline at end of file diff --git a/anheyu-blog-pro/1.0.27/scripts/upgrade.sh b/anheyu-blog-pro/1.0.27/scripts/upgrade.sh new file mode 100644 index 000000000..d68a2c04d --- /dev/null +++ b/anheyu-blog-pro/1.0.27/scripts/upgrade.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Script to replace anheyu/anheyu-backend with harbor.anheyu.com/anheyu/pro in docker-compose.yml +# Compatible with Ubuntu, CentOS, Debian and other Linux distributions +# Check if docker-compose.yml exists +if [ ! -f "./docker-compose.yml" ]; then + echo "Error: ./docker-compose.yml file not found!" + exit 1 +fi +# Check if backup file already exists and remove it +if [ -f "./docker-compose.yml.back" ]; then + echo "Existing backup file found, removing old backup..." + rm ./docker-compose.yml.back +fi +# Create backup of original file +cp ./docker-compose.yml ./docker-compose.yml.back +echo "Backup created: ./docker-compose.yml.back" +# Replace anheyu/anheyu-backend with harbor.anheyu.com/anheyu/pro +sed -i 's|anheyu/anheyu-backend|harbor.anheyu.com/anheyu/pro|g' ./docker-compose.yml +# Check if replacement was successful +if grep -q "harbor.anheyu.com/anheyu/pro" ./docker-compose.yml; then + echo "Successfully replaced anheyu/anheyu-backend with harbor.anheyu.com/anheyu/pro" + echo "Changes applied to ./docker-compose.yml" +else + echo "Warning: No replacements were made. Please check if 'anheyu/anheyu-backend' exists in the file." +fi +# Show the changes +echo "" +echo "Modified lines:" +grep "harbor.anheyu.com/anheyu/pro" ./docker-compose.yml || echo "No matching lines found" \ No newline at end of file diff --git a/anheyu-blog-pro/README.md b/anheyu-blog-pro/README.md new file mode 100644 index 000000000..2acdf20d6 --- /dev/null +++ b/anheyu-blog-pro/README.md @@ -0,0 +1,78 @@ +# 🌈 Anheyu Blog Pro + +> 该版本需要密钥方可运行,如果尚未得到授权请使用社区版本 + +如果能给我一个 **Star ⭐**,那将是对我莫大的鼓励。 + +在使用本应用前请注意: +它是一个 **独立应用**,需要服务器环境才能运行。推荐使用 **Docker 部署**,可大大减少环境配置带来的问题。 + +由 **安知鱼** 负责开发与维护。 + +* GitHub: [https://github.com/anzhiyu-c/anheyu-app](https://github.com/anzhiyu-c/anheyu-app) +* 预览: 👍 AnZhiYu | 🤞 AnZhiYu +* 文档: 📖 AnHeYu Docs + +--- + +## 🌟 系统简介 + +**Anheyu Blog** 是一个基于 **Go + Vue3** 的现代化博客与内容管理系统。 +后端使用 **Go** 提供高性能 API,前端采用 **Vue3 + Element Plus** 打造美观易用的用户界面。 + +--- + +## ✨ 功能特性 + +* ✅ Markdown 编辑 & 富文本预览 +* ✅ 图片上传、管理与懒加载 +* ✅ 分类 & 标签管理 +* ✅ 外部链接收集与分享 +* ✅ 内置评论系统,支持用户互动 +* ✅ 文件管理与缩略图优化 +* ✅ 多种数据库支持(MySQL/PostgreSQL/SQLite) +* ✅ 灵活存储配置 +* ✅ 暗黑模式 / 沉浸式状态栏 +* ✅ LaTeX 数学公式 & Mermaid 流程图 +* ✅ 广告挂载 & Inject 自定义扩展 +* ✅ AI 摘要(Pro) +* ✅ PWA 渐进式应用 & 高速缓存 +* ✅ 优秀的隐私协议支持 + +--- + +## 🏗️ 技术栈 + +* **后端**: Go + Ent +* **前端**: Vue3 + Element Plus +* **数据库**: MySQL / PostgreSQL / SQLite + +--- + +## 🤝 贡献 + +欢迎提交 **Issue / PR** 帮助改进项目! + +--- + +## 📄 开源协议 + +本项目基于 **GPL-3.0 License** 开源。 + +--- + +## 👨‍💻 作者 + +* **安知鱼**(项目维护者) + +--- + +## 🙏 致谢 + +感谢所有为本项目贡献的开发者与用户! + +--- + +## 📢 社区 + +* QQ 群组:**464636182** diff --git a/anheyu-blog-pro/data.yml b/anheyu-blog-pro/data.yml new file mode 100644 index 000000000..303990deb --- /dev/null +++ b/anheyu-blog-pro/data.yml @@ -0,0 +1,30 @@ +name: Anheyu Blog Pro +tags: + - 建站 +title: [赞助版]一个基于 Go + Vue3 的现代化博客与内容管理系统 +description: [赞助版]基于 Go 语言后端与 Vue3 前端构建的高性能博客与内容管理平台 +additionalProperties: + key: anheyu-blog-pro + name: Anheyu Blog Pro + tags: + - website + shortDescZh: 一个基于 Go + Vue3 的现代化博客与内容管理系统 + shortDescEn: A modern blog and content management system built with Go and Vue3 + type: website + crossVersionUpdate: true + limit: 0 + website: https://anheyu.com/ + github: https://github.com/anzhiyu-c/anheyu-app + document: https://anheyu.com/posts/Z3MC + description: + en: A modern blog and content management system built with Go backend and Vue3 frontend. + zh: 一个基于 Go 语言后端与 Vue3 前端构建的现代化博客与内容管理系统。 + zh-Hant: 一個基於 Go 語言後端與 Vue3 前端構建的現代化部落格與內容管理系統。 + ja: Go バックエンドと Vue3 フロントエンドで構築されたモダンなブログ・コンテンツ管理システム。 + ms: Sistem blog dan pengurusan kandungan moden dibina dengan Go backend dan Vue3 frontend. + pt-br: Um sistema moderno de blog e gerenciamento de conteúdo construído com Go e Vue3. + ru: Современная система ведения блогов и управления контентом, построенная на Go и Vue3. + ko: Go 백엔드와 Vue3 프론트엔드로 구축된 현대적인 블로그 및 콘텐츠 관리 시스템. + architectures: + - amd64 + - arm64 diff --git a/anheyu-blog-pro/logo.png b/anheyu-blog-pro/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5aebd27797129afc78cc7a1df5aa50a1a4c5a2cc GIT binary patch literal 7541 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