diff --git a/apps/ghost/5.89.0/data.yml b/apps/ghost/5.89.0/data.yml new file mode 100644 index 00000000..758721e0 --- /dev/null +++ b/apps/ghost/5.89.0/data.yml @@ -0,0 +1,108 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_DB_HOST + required: true + type: service + default: mysql + edit: true + envKey: PANEL_DB_TYPE + labelZh: 数据库 服务 + labelEn: Database Service + required: true + type: apps + values: + - label: MySQL + value: mysql + - label: MariaDB + value: mariadb + - default: 2368 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "http://127.0.0.1:2368" + edit: true + envKey: url + labelZh: 域名 + labelEn: Domain + required: true + rule: paramExtUrl + type: text + - default: "http://127.0.0.1:2368" + edit: true + envKey: admin__url + labelZh: 域名 (后台) + labelEn: Domain (Admin) + required: true + rule: paramExtUrl + type: text + - default: "ghost" + edit: true + envKey: database__connection__user + labelZh: 数据库 用户名 + labelEn: Database Username + required: true + type: text + - default: "" + edit: true + envKey: database__connection__password + labelZh: 数据库 密码 + labelEn: Database Password + random: true + required: true + rule: paramComplexity + type: password + - default: "ghost" + edit: true + envKey: database__connection__database + labelZh: 数据库 名称 + labelEn: Database Name + required: true + type: text + - default: "SMTP" + edit: true + envKey: mail__transport + labelZh: 邮件传输协议 + labelEn: Mail Transport Protocol + required: true + type: text + - default: "smtp.qq.com" + edit: true + envKey: mail__options__host + labelZh: 邮件服务器 + labelEn: Mail Server + required: true + type: text + - default: 465 + edit: true + envKey: mail__options__port + labelZh: 邮件服务器 端口 + labelEn: Mail Server Port + required: true + type: number + - default: "" + edit: true + envKey: mail__options__auth__user + labelZh: 邮件鉴权 用户名 + labelEn: Mail Username + required: true + type: text + - default: "" + edit: true + envKey: mail__options__auth__pass + labelZh: 邮件鉴权 密码 + labelEn: Mail Password + required: true + type: password + - default: "" + edit: true + envKey: mail__from + labelZh: 邮件发送者 + labelEn: Mail Sender + required: true + type: text diff --git a/apps/ghost/5.89.0/docker-compose.yml b/apps/ghost/5.89.0/docker-compose.yml new file mode 100644 index 00000000..a00ddb1e --- /dev/null +++ b/apps/ghost/5.89.0/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3.8" + +networks: + 1panel-network: + external: true + +services: + ghost: + image: ghost:5.89.0 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:2368 + volumes: + - ./data:/var/lib/ghost/content + environment: + - NODE_ENV=production + - server__host=0.0.0.0 + - server__port=2368 + - database__client=mysql + - database__connection__host=${PANEL_DB_HOST} + - database__connection__port=${PANEL_DB_PORT} + - mail__transport=SMTP + - mail__from=${mail__from} + - mail__options__service=Email + - mail__options__secure=true + - mail__options__host=${mail__options__host} + - mail__options__port=${mail__options__port} + - mail__options__auth__user=${mail__options__auth__user} + - mail__options__auth__pass=${mail__options__auth__pass} diff --git a/apps/ghost/5.89.0/scripts/init.sh b/apps/ghost/5.89.0/scripts/init.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/ghost/5.89.0/scripts/init.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/ghost/5.89.0/scripts/uninstall.sh b/apps/ghost/5.89.0/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/ghost/5.89.0/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/ghost/5.89.0/scripts/upgrade.sh b/apps/ghost/5.89.0/scripts/upgrade.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/ghost/5.89.0/scripts/upgrade.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/ghost/README.md b/apps/ghost/README.md new file mode 100644 index 00000000..27c3e0e3 --- /dev/null +++ b/apps/ghost/README.md @@ -0,0 +1,133 @@ +# Gost + +用于现代出版、会员制、订阅和通讯的独立技术 + +![Gost](https://file.lifebus.top/imgs/gost_cover.png) + +Ghost 是一个基于现代 Node.js 技术堆栈构建的开源专业发布平台,专为需要强大功能、灵活性和性能的团队而设计。 + +## 特性 + ++ 独立结构 + +Ghost 的结构是一个非营利组织,以确保它永远不会合法地被出售,并且将始终保持独立,根据用户的需求构建产品,而不是寻求💰回报的投资者的突发奇想。 + ++ 可持续发展的业务 + +虽然我们发布的软件是免费的,但我们还为其销售高级托管托管,这为非营利组织提供了可持续的商业模式,并使其能够 100% 自筹资金。 + ++ 分布式团队 + +拥有可持续的业务使我们能够聘请开源贡献者全职从事 Ghost 工作,而且我们完全远程完成这项工作。 Ghost 核心团队完全分布在他们选择的任何地方。 + ++ 默认透明 + +我们透明地分享我们的收入并公开我们的代码,以便任何人都可以验证我们所做的事情以及我们如何做。没有斗篷或匕首。 + ++ 无条件开源 + +我们所有的项目都是在宽松的开源MIT 许可证下发布的,因此即使公司失败,我们的代码仍然可以被世界上任何人不受限制地使用和继承。 + +🚀 内置会员资格和订阅 + +Ghost 不仅可以为匿名访问者创建内容,还可以让您将受众转变为企业,并为会员注册和付费订阅商务提供原生支持。它是唯一一个默认内置会员资格并深度集成的平台。 + +🚀 开发者友好的API + +Ghost 的核心是一个自消耗的 RESTful JSON API,具有解耦的管理客户端和前端。我们提供了很多工具来让网站尽快运行,但最终它只是 +JSON ™️,所以如果您想完全无头使用 Ghost 并编写自己的前端或后端……您可以! + +🚀 丰富编辑器 + +Ghost 拥有每个作家都想要的丰富编辑器,但在幕后它提供的功能远远超出您的预期。 +所有内容都以基于 JSON 的标准化文档存储格式(称为 Lexical)存储,其中包括对称为 Cards 的可扩展富媒体对象的支持。 + +简单来说,您可以将其视为在 Medium 编辑器中集成 Slack,存储合理且可通过 API 完全访问。 + +🚀 自定义网站结构 + +Ghost 中的路由完全可以根据您的需要进行配置。开箱即用的 Ghost 附带了标准的反向时间顺序帖子源,带有干净的永久链接和基本页面,但这很容易更改。 + +无论您需要一个带有/en/和/de/基本 URL 的完整多语言站点,还是想要为/europe/uk/london/等分层数据构建特定的目录结构 — Ghost +的路由层可以任意数量进行操作实现您的用例的方法。 + +🚀 角色和权限 + +从一开始就使用内置的合理用户角色和权限来设置您的站点。 + ++ 贡献者:可以登录并撰写帖子,但不能发布。 ++ 作者:可以创建和发布新的帖子和标签。 ++ 编辑:可以邀请、管理和编辑作者和贡献者。 ++ 管理员:拥有编辑所有数据和设置的完全权限。 ++ 所有者:无法删除的管理员+有权访问账单详细信息。 + +🚀 自定义主题 + +Ghost 附带了一个简单的 Handlebars.js +前端主题层,该层使用起来非常简单,而且功能强大得令人惊讶。许多人坚持使用默认主题(现场演示/源代码),它提供了干净的杂志设计 - +但这可以修改或完全替换。 + +🚀 应用程序和集成 + +因为 Ghost 是完全开源的,构建为 JSON API,具有 Webhooks,并且让您可以完全控制前端:它本质上与所有东西集成。有些事情比其他事情更容易,但几乎任何事情都可以通过一点努力来实现。 +或者是一个比 1803 年更近的比喻。 + +🚀 搜索引擎优化 + +Ghost 配备了世界一流的 SEO 以及确保您的内容快速一致地显示在搜索索引中所需的一切。 + ++ 无需插件 + +Ghost 将所有基本技术 SEO 优化直接内置于核心中,无需依赖第三方插件。得益于 Node.js,它还具有远远优越的速度和页面加载性能。 + ++ 自动谷歌 XML 站点地图 + +Ghost 将自动生成并链接到完整的 Google 站点地图,包括您网站上的每个页面,以确保搜索引擎能够为每个 URL 建立索引。 + ++ 自动结构化数据+JSON-LD + +Ghost 生成有关页面的基于JSON-LD 的结构化元数据,这样您就不必依赖标记中混乱的微格式来提供语义上下文。即使您更改主题或前端,您的 +SEO 仍然完好无损。 +Ghost 还为 Facebook OpenGraph 和 Twitter Card 添加了自动代码。 + ++ 规范标签 + +Ghost 会自动为每个帖子和页面生成正确的rel="canonical"标签,以便搜索引擎始终优先考虑一个真正的链接。 + +## 安装说明 + +> 后台管理地址:`http://127.0.0.1:2368/ghost` +> +> 首次进入后台管理,会提示创建管理员账号,然后登录即可。 + +## 使用说明 + +### 语言设置 + +没有更好的解决办法,即使设置 `zh` 也不会生效。 + +### 邮件配置 + +Ghost 默认使用 Mailgun 作为邮件服务,但是由于其已经移除 `免费套餐`, 我们将配置 `smtp` 作为邮件服务商。 + +如果存在发信失败,请查看日志,可能是邮件服务商的问题。 + +如果发信人与配置不一致,识别到 `域名` 作为发信人,即使配置了发信人, 也会被忽略。 + +可以通过 `设置` >> `门户设置` >> `账户设置` 修改 `Support email address` 为配置的发信人。 + +## 反向代理 + +> Nginx + +```nginx +location / { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $http_host; + proxy_pass http://127.0.0.1:2368; +} + +client_max_body_size 50m; +``` diff --git a/apps/ghost/data.yml b/apps/ghost/data.yml new file mode 100644 index 00000000..6b5be5ad --- /dev/null +++ b/apps/ghost/data.yml @@ -0,0 +1,18 @@ +name: Ghost +title: 用于现代出版、会员制、订阅和通讯的人博客系统 +description: 用于现代出版、会员制、订阅和通讯的独立技术 +additionalProperties: + key: ghost + name: Ghost + tags: + - WebSite + - Local + shortDescZh: 用于现代出版、会员制、订阅和通讯的人博客系统 + shortDescEn: Human blogging systems for modern publishing, memberships, subscriptions and newsletters + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://ghost.org/ + github: https://github.com/TryGhost/Ghost/ + document: https://ghost.org/docs/ diff --git a/apps/ghost/logo.png b/apps/ghost/logo.png new file mode 100644 index 00000000..efe7f224 Binary files /dev/null and b/apps/ghost/logo.png differ