前言

事情起源于在B站发布技术专栏不是很方便,就想着能自己搭建一个博客,方便记录一些自己的文章。
在明确了目标之后,就在网上找了一些方案,最后确定使用Typecho的方案搭建自己的博客,GitHubPage作为备份的网站。
这么选择主要是因为我喜欢使用obsdian做笔记,而Typecho和GitHubPage都可以直接用MD语法写博客,转换成本不高。并且Typecho的系统占用也不高,可以使用本地数据库SQLite,很符合我对自己博客的定义:轻量。基于Java的Halo本身对资源消耗太大,毕竟Java开发的,还要加上一个mysql数据库,刚运行就需要800M的内存。基于PHP的WordPass又太臃肿了,而且不能使用SQLite这种本地数据库。最后选择下来发现了Typecho这个博客软件。

安装docker及docker-compose

这个安装过程请参考docker官方教程

安装Typecho

创建typecho数据目录

登录服务器并执行以下命令

mkdir typecho && cd typecho && mkdir data && chmod -R 777 data

创建docker-compose.yaml文件

执行命令nano docker-compose.yaml 将以下文件内容复制到命令窗口

version: '3.7'

services:
  typecho:
    image: joyqi/typecho:nightly-php8.2-apache
    container_name: typecho-server
    restart: always
    environment:
      - TYPECHO_SITE_URL=https://your-domain.com   # 网站网址
      - TIMEZONE=Asia/Shanghai         # 时区
      - TYPECHO_DB_ADAPTER=SQLite      # 选择SQLite数据
      - TYPECHO_DB_DATABASE=/app/data  # SQLite的数据目录
      - TYPECHO_USER_NAME=admin    # 管理员用户名
      - TYPECHO_USER_PASSWORD=admmin123456   # 管理员密码
      - [email protected]     # 管理员邮箱
    ports:
      - 30081:80                       # typecho的对外访问目录
    volumes:
      - ./typecho:/app/usr             # 你的 Typecho 数据目录
      - ./data:/app/data               # SQLite的数据目录

⚠️注意⚠️:把上面复制的内容修改为你自己的内容

修改完成后按Ctrl+X按键,在提示框输入Y,之后在敲回车保存文件。

PixPin_2025-03-19_20-51-18.png
PixPin_2025-03-29_14-31-56.png
PixPin_2025-03-29_14-32-56.png

docker-compose如何配置环境变量请参考如下表格

环境变量 默认值 描述
TIMEZONE UTC 服务器时区,例如:Asia/Shanghai
MEMORY_LIMIT PHP 内存限制,例如:100M
MAX_POST_BODY 最大 POST 请求体大小,例如:50M
TYPECHO_INSTALL 0 设置为 1 时自动运行安装脚本
TYPECHO_DB_ADAPTER Pdo_Mysql Typecho 数据库驱动,可选值:Pdo_Mysql, Pdo_SQLite, Pdo_Pgsql, Mysqli, SQLite, Pgsql
TYPECHO_DB_HOST localhost 数据库服务器地址,仅适用于 MySQL 和 PostgreSQL 驱动
TYPECHO_DB_PORT 3306(MySQL)或 5432(PostgreSQL) 数据库服务器端口,仅适用于 MySQL 和 PostgreSQL 驱动
TYPECHO_DB_USER 数据库用户名,仅适用于 MySQL 和 PostgreSQL 驱动
TYPECHO_DB_PASSWORD 数据库密码,仅适用于 MySQL 和 PostgreSQL 驱动
TYPECHO_DB_FILE SQLite 数据库文件存储路径,仅适用于 SQLite 驱动
TYPECHO_DB_DATABASE 数据库名称,仅适用于 MySQL 和 PostgreSQL 驱动
TYPECHO_DB_PREFIX typecho_ 所有表的前缀
TYPECHO_DB_ENGINE InnoDB MySQL 数据库引擎,仅适用于 MySQL 驱动
TYPECHO_DB_CHARSET utf8(PostgreSQL)或 utf8mb4(MySQL) 数据库字符集,仅适用于 MySQL 和 PostgreSQL 驱动
TYPECHO_DB_NEXT none 当数据库中已有应用表时执行的操作:
none:什么都不做,直接退出
keep:保留这些表,跳过初始化步骤
force:删除这些表,重新初始化数据
TYPECHO_SITE_URL 网站 URL,例如:https://your-domain.com
TYPECHO_USER_NAME typecho 创建的管理员用户名
TYPECHO_USER_PASSWORD 随机 8 位字符串 创建的管理员密码
TYPECHO_USER_MAIL [email protected] 创建的管理员邮箱地址

部署

在命令行执行以下命令:

docker compose up -d

如果使用的是普通用户请记得在前面加上sudo:

sudo docker compose up -d
PixPin_2025-03-29_14-42-15.png

如果要停止应用的运行,先在命令行cd到安装目录,然后执行以下命令:

docker compose down

配置Typecho

开放访问

有两种方式开放访问,一种是通过端口访问,一种是通过服务器的反向代理
注意反向代理的方式设需要使用你设置的网站网址访问

通过端口访问

  • 如果安装了宝塔等管理面板需要先在面板中开放端口,这里打开 30081 端口
  • 在服务器提供商的控制面板中打开对应的端口,这里打开 30081 端口
  • 如果系统自带了防火墙,请在系统防火墙放行访问端口
PixPin_2025-03-29_15-02-43.png

通过反代反问

👉通过宝塔等面板设置反代

在面板的网站设置里面设置反向代理到 localhost:30081

👉通过NPM设置反代
PixPin_2025-03-29_15-06-57.png

🔺点击主界面的“代理服务”。

PixPin_2025-03-29_15-07-36.png

🔺添加代理服务。

PixPin_2025-03-29_15-09-39.png

🔺然后在这里:

  • 域名:域名就是我们反代使用的域名,需要说明的是,这个域名首先在运营商那里做好DNS解析(比喻腾讯云或者阿里云,解析包括普通解析与泛解析),然后把域名在我们服务器上做好DNS解析。
  • 协议:默认 http 即可。
  • 转发主机/IP:这个直接填入本地地址即可。
  • 转发端口:服务端的内网端口,可以是某个Docker容器的端口,看你自己的需求了。
👉通过Caddy反代

1⃣编辑caddy配置文件

➡️执行命令nano /etc/caddy/Caddyfile

➡️添加反代内容

your-domain.com  {
    reverse_proxy localhost:30081
}

⚠注意:your-domain.com是你的网站地址

PixPin_2025-03-29_15-27-06.png

2⃣保存并启用反代

  1. Ctrl+X ➡️ 选择Y ➡️ 回车保存
  2. 执行 systemctl reload caddy 重新加载配置,使反代生效。参考:保持Caddy运行 — Caddy v2中文文档

配置网站

PixPin_2025-03-29_16-23-21.png
PixPin_2025-03-29_16-25-18.png
PixPin_2025-03-29_16-26-46.png
PixPin_2025-03-29_16-15-06.png

结语

至此typecho安装就完毕了,使用的过程我就不赘述了,大家可以在网上去找自己喜欢的主题,也可以用默认的。
安装的过程中要注意,使用sqlite数据的时候,存放数据文件的文件夹需要有777权限,我这里在创建目录的时候就给予了权限。