当前位置: 首页 > news >正文

群晖上搭建Ghost博客

在这里插入图片描述

每次自己都没想起来的时候,运营商、航空公司、银行、券商却从不曾忘记,虽然只是短信,也让我感受到了你们的真诚,让我们携手共进,共创辉煌!😁😁😁


本文是应网友 luffy 的要求重新折腾的,原文主框架完成于 20214 月,采用了 SQLite 作为数据库,本次应要求改为了 MySQL ,发布前对大部分图片进行了重新截取;

什么是 Ghost ?

Ghost 是一款个人博客系统,采用 Node.js 编写,同时支持 MariaDBSQLitePostgreSQL 数据库。前后台简洁,占用资源少,支持 Markdown,是一个现代化的,开源的博客发布平台。

关于数据库

老苏首先尝试了使用系统自带的 MariaDB,但 MariaDB 不是 Ghost 官方支持的数据库 ,在安装过程中遇到了各种数据库错误,似乎是 KnexMariaDB 的兼容问题。

Ghost 5.0 开始,官方建议使用 MySQL8 ,所以接下来老苏采用了 MySQL 容器,但似乎 MySQL5.7 也可以正常工作。

下面的安装,图形化安装方式和 docker cli 安装方式继续保留了之前采用的 SQLitedocker-compose 命令行方式则重新采用了 MySQL

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 ghost ,选择第一个 ghost,版本选择 latest

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 ghost,并在其中建一个子文件夹 data

文件夹装载路径说明
docker/ghost/data/var/lib/ghost/content存放设置

在这里插入图片描述

端口

直接用了默认的端口 2368

本地端口容器端口
23682368

在这里插入图片描述

环境

因为采用了 SQLite ,所以不需要设置 database 相关的参数

可变
database__client数据库类型
database__connection__host数据库主机IP
database__connection__port数据库端口
database__connection__user数据库用户
database__connection__password数据库访问密码
database__connection__database数据库名
NODE_ENV默认为 production,必须修改为 development
urlurl地址

  • 这个 url 会影响到主界面的菜单地址,不设置的时候,默认主菜单地址会是 http://localhost:2368
  • 老苏只是在局域网用,所以设的是局域网 IP
  • 如果在公网使用,请设置为公网 IP 或者域名;
  • 必须设置为 development,否则容器日志会显示 "Unknown database error"错误,导致不可访问

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 ghost 和 子目录
mkdir -p /volume2/docker/ghost/data

# 进入 ghost 目录
cd /volume2/docker/ghost

# 运行容器(采用 SQLite)
docker run -d \
   --restart always \
   --name ghost \
   -p 2368:2368 \
   -v $(pwd)/data:/var/lib/ghost/content \
   -e NODE_ENV=development \
   -e url=http://192.168.0.197:2368 \
   ghost

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3.1'

services:

  ghost:
    image: ghost
    container_name: gh_ghost
    restart: always
    ports:
      - 2368:2368
    environment:
      #NODE_ENV: development
      NODE_ENV: production
      url: http://192.168.0.197:2368
      database__client: 'mysql'
      database__connection__host: 'db'
      database__connection__user: 'root'
      database__connection__password: '321.qwerty'
      database__connection__database: 'ghost'

  db:
    image: mysql:5.7
    container_name: gh_mysql
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: '321.qwerty'
      MYSQL_DATABASE: 'ghost'
      MYSQL_USER: 'ghost'
      MYSQL_PASSWORD: '123456'
    command: --character-set-server=utf8 --collation-server=utf8_unicode_ci

然后执行下面的命令

# 新建文件夹 ghost 和 子目录
mkdir -p /volume2/docker/ghost/{data,mysql}

# 进入 ghost 目录
cd /volume2/docker/ghost

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:2368,就能看到首界面了

上面是老版本的,下面是现在新版本的,相比之下,现在的版本界面似乎更简洁

在这里插入图片描述

创建用户

在浏览器中输入 http://群晖IP:2368/ghost

在这里插入图片描述

首先要创建账号

进入主界面

在这里插入图片描述

发布帖子

接下来你可以发第一个帖子

发布完成后回到首页的效果

在这里插入图片描述

后台管理

在浏览器中输入 http://群晖IP:2368/ghost,如果之前登陆过,会看到整个后台管理的 Dashboard 界面

在这里插入图片描述

可以做管理帖子、管理人员、装修站点等操作。

参考文档

TryGhost/Ghost: 👻 The #1 headless Node.js CMS for professional publishing
地址:https://github.com/TryGhost/Ghost

Ghost: Turn your audience into a business
地址:https://ghost.org/

Ghost Docs
地址:https://ghost.org/docs/install/docker/

相关文章:

  • Dilated Convolution(空洞卷积、膨胀卷积)详解
  • 【毕业设计】便携式STM32的红外信号分析仪 - 单片机 物联网 嵌入式
  • 广州地铁将在十三号线、二十一号线新增5个地铁口,位置在这里
  • 孙卫琴的《精通Vue.js》读书笔记-Vuex中异步操作
  • Java设计模式之策略模式
  • 【HMS core】【FAQ】音频编辑服务、推送服务、AR Engine典型问题合集
  • Android毕业论文选题基于Uniapp+Springboot实现的智能患者服药提醒APP处方药方
  • 详解Mysql中日期比较大小的方法
  • Java性能优化:Stream如何提高遍历集合效率?
  • SSM岭师旧书回收系统毕业设计-附源码041921
  • Java开发中常用的框架有哪些?
  • 如何快速在线扫描文档?Web TWAIN SDK 教你轻松解决
  • JSONredis
  • 与5G一起过中秋,天涯变咫尺
  • 进入docker容器命令行
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2019.2.20 c++ 知识梳理
  • chrome扩展demo1-小时钟
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • nodejs:开发并发布一个nodejs包
  • Promise面试题2实现异步串行执行
  • Selenium实战教程系列(二)---元素定位
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从0实现一个tiny react(三)生命周期
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 将回调地狱按在地上摩擦的Promise
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何使用 JavaScript 解析 URL
  • 消息队列系列二(IOT中消息队列的应用)
  • 一份游戏开发学习路线
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #pragma预处理命令
  • (145)光线追踪距离场柔和阴影
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (四)鸿鹄云架构一服务注册中心
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)视频码率,帧率和分辨率的联系与区别
  • .Net CF下精确的计时器
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .Net中ListT 泛型转成DataTable、DataSet
  • :“Failed to access IIS metabase”解决方法
  • ??myeclipse+tomcat
  • @Data注解的作用
  • [1]-基于图搜索的路径规划基础
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法