最终的目录结构如下,使用的是 sqlite数据库,数据量大可能需要再部署一个mysql或者mariadb

alarm ~/typecho# tree -C --dirsfirst -L 2
.
├── frpc
│   └── config.ini
├── typecho
│   ├── langs
│   ├── plugins
│   ├── themes
│   ├── uploads
│   └── 681d66b2599cf.db
└── docker-compose.yml
alarm ~/typecho# dp stats --no-stream
CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
6e055b76d79b   typecho        0.01%     19.45MiB / 3.681GiB   0.52%     5.47MB / 65.4MB   8.58MB / 22.7MB   2
46602809fd92   typecho_frpc   0.00%     9.352MiB / 3.681GiB   0.25%     70.2MB / 38.2MB   1.86MB / 0B       9

两个关键的配置文件docker-compose.yml frpc/config.ini

alarm ~/typecho# cat docker-compose.yml
services:
  typecho:
    image: joyqi/typecho:nightly-php8.2-alpine
    container_name: typecho
    restart: unless-stopped
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./typecho:/app/usr
  frpc:
    image: snowdreamtech/frpc:latest
    container_name: typecho_frpc
    restart: unless-stopped
    volumes:
      - ./frpc:/etc/frpc
    environment:
      - TZ=Asia/Shanghai
    command: ["-c", "/etc/frpc/config.ini"]
alarm ~/typecho# cat frpc/config.ini
[common]
server_addr = example.frp.com
server_port = 2333
user = "user"
token = "passwd"

[typecho]
type = "http"
local_ip = typecho
local_port = 80
custom_domains = blog.example.com
use_encryption = 1
use_compression = 1

需要注意typecho文件夹的权限问题,手动创建并更改所属用户以及用户组,否则之后的创建sqlite db文件会报错
原因是运行服务的用户没有权限创建文件,所以得手动设置一下。

alarm ~/typecho# ll
total 12K
-rw-r--r-- 1 root root  435 May  9 10:19 docker-compose.yml
drwxr-xr-x 2 root root 4.0K May  9 06:27 frpc/
drwxr-xr-x 6   82   82 4.0K May  9 12:17 typecho/
alarm ~/typecho# ll typecho/
total 136K
-rw-r--r-- 1 82 82 116K May  9 12:18 681d66b2599cf.db
drwxr-xr-x 2 82 82 4.0K May  9 10:20 langs/
drwxr-xr-x 3 82 82 4.0K May  9 10:20 plugins/
drwxr-xr-x 4 82 82 4.0K May  9 10:52 themes/
drwxr-xr-x 3 82 82 4.0K May  9 10:27 uploads/
alarm ~/typecho# mkdir typecho
alarm ~/typecho# chown 82 typecho
alarm ~/typecho# chgrp 82 typecho  

最后,其实还可以把http服务换成https,在配置个自动更新证书

免费的frp穿透,支持tcp,udp,http,https https://www.mefrp.com/
免费的域名支持CNAME,A http://45.207.211.53/