众所周知这个网站是用halo搭建的

那么怎么搭建这样的网站呢?

额,我来教你

Halo的背后

halo是飞志云旗下的开源软件

飞志云官网:FIT2CLOUD 飞致云 - 中国领先的开源软件公司

旗下有6款开源软件项目,比如著名的《1Panel》,JumpServer等

部署Halo

Halo - 强大易用的开源建站工具

这是halo的官网,根据官方文档的指示,我们使用docker + debian12环境进行部署:

我们先创建docker-compose.yaml:

version: "3.8"

services:
  halo:
    image: halohub/halo:2.25.0   #版本2.25.0
    restart: on-failure:3
    depends_on:
      - halodb
    networks:
      - halo_network
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"     #服务端口
      - "8091:8091"     #API端口
    environment:
      - SPRING_R2DBC_URL=r2dbc:pool:postgresql://halodb:5432/halo
      - SPRING_R2DBC_USERNAME=halo
      - SPRING_R2DBC_PASSWORD=12345678                               #数据库密码
      - SPRING_SQL_INIT_PLATFORM=postgresql                              #数据库类型
      - HALO_EXTERNAL_URL=https://www.candywind.com/                     #外部访问网址
    #mem_limit: 1g              # 内存限制 1GB
    #cpu_shares: 128            # CPU 权重 128

  halodb:
    image: postgres:latest         #需要提前在本地镜像中放数据库镜像,推荐15.4
    restart: on-failure:3
    networks:
      - halo_network
    volumes:
      - ./db:/var/lib/postgresql
    environment:
      - POSTGRES_PASSWORD=12345678                               #需要与上文数据库密码相同
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
    #mem_limit: 512m            # 内存限制 512MB
    #cpu_shares: 64             # CPU 权重 64

networks:                                #确保网络空间相同,否则无法与数据库通信
  halo_network:

保存好后直接

docker compose up -d

就可以了,然后等待约1~2分钟然后就能打开本地网址测试啦!

配置公网

有公网ip

如果你有公网ip的话,我推荐直接在cloudflare上购买域名(有银联卡的情况下)

也可以挑选别的供应商

没有公网ip

也没有云服务器

这时候可以使用cloudflare tunnel(或者别的内网穿透软件),这样也可以,但大概率只能牺牲域名了

有云服务器

啊,你也跟我一样吗,那太好了

准备:

客户端:frpc

服务端:frps

现在我们需要配置一下组成内网穿透:

服务端:

bindPort = 30000
auth.token = "12345678"    #你的安全密码,需要与客户端保持一致

客户端:

loginFailExit = false
transport.tcpMuxKeepaliveInterval = 30
transport.heartbeatTimeout = 90
transport.heartbeatInterval = 30
transport.tcpMux = true
transport.protocol = "tcp"
serverAddr = "1.1.1.1"               #换成你的服务器的公网ip地址
serverPort = 30000
auth.token = "12345678"




[[proxies]]
name = "Halo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8090                #本地端口
remotePort = 8090               #公网端口

[proxies.transport]
useEncryption = true



useCompression = true

保存,启动,等待输出类似

2026-06-13 17:41:23.094 [I] [client/service.go:378] [b590b256790a70f2] try to connect to server...
2026-06-13 17:41:23.137 [I] [client/service.go:370] [b590b256790a70f2] login to server success, get run id [XXXXXXXXXXXXXXX]


2026-06-13 17:41:23.159 [I] [client/control.go:176] [b590b256790a70f2] [Halo] start proxy success

这样就启动成功了,访问试一下吧

绑定域名

提示:大陆的云服务器只能绑定备案过的域名,如果域名无法备案,则需要使用香港/日本等服务器

首先我们需要购买域名,正品.com域名一年80左右,.top约14元,.xyz大约20元,注意,有些域名第一年便宜而来年会涨价!

我的云服务器是上海的,所以需要备案

在香港/澳门/台湾等非大陆的国内区域,日本,新加坡等国外区域的服务器可以绑定没有经过备案的域名

但需要承受被墙以及访问速度慢的问题

下一步就可以创建dns解析了

根据子域名进行解析,比如子域名是halo,那么最终访问的网址就是halo.XXXXXXXX.com

用www举例:创建一条A记录,来源默认,记录值填写服务器的公网ip,负载策略选择轮询,ttl使用默认(600s)

接下来部署nginx流量转发

Nginx

首先在云服务器上安装nginx,并编辑配置文件:


server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name XXXXXXXX.com www.XXXXXXXX.com;    #服务器域名,最好两个都绑定

    ssl_certificate     /etc/nginx/ssl/XXXXXXXX.com.crt;  #http证书
    ssl_certificate_key /etc/nginx/ssl/XXXXXXXX.com.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:8090;   #frps转发出来的网址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}



# HTTP 重定向到 HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name XXXXXXXX.com www.XXXXXXXX.com;
    return 301 https://$host$request_uri;
}

保存后执行sudo nginx -t

然后执行sudo systemctl reload nginx

最后访问www.XXXXXXXX.com就可以了

结尾

至此,部署教程就结束了,如有错漏,欢迎指出,bye~~

我爱你们