Featured image of post 【podman实践】在ZZ.AC上建立多个服务记录

【podman实践】在ZZ.AC上建立多个服务记录

我在群里请教涛叔,怎么在zz.ac这个公益主机部署多个服务?他回答:

理论上大家可以把多个子域名解析到 vps 上,都会转发到各自的 8080 端口。大家再根据 host 分流

一时没有想明白怎么处理,直到今天晚上得到NaN 🍃点拨:

你把别的服务的子域名解析到vps上 反代监听8080端口 在根据这个服务的子域名分流 反代到这个服务的端口上就行了

其实我之所以一直没有这么处理,是因为我自己在给了自己一个错误的暗示:

这个公益主机是特殊的主机,系统给我分配了一个固定的域名。没有公网IP, 没有办法再设置子域名。

忽然想起在申请vps的时候设置cname的时候有说明:

​ 你得给 lab.example.zz.ac 同时添加 IPv4 和 IPv6 记录,指向 h1.lab.zz.ac 这台主机。

最简单的办法是使用 CNAME 记录:

1
lab 5m CNAME h1.lab.zz.ac.

当然也可以自行指定 A/AAAA 记录:

1
2
lab 5m A    146.235.195.242
lab 5m AAAA 2603:c024:c00c:9800:911a:29ef:738b:c2a6

也就是说可以设置别的子域名指向下面CANME或者IP,就可以了

1
2
3
CNAME h1.lab.zz.ac.
A  146.235.195.242
AAAA 2603:c024:c00c:9800:911a:29ef:738b:c2a6

瞬间这个困惑就解决掉了。这和我在别的VPS上 设置多个域名,用caddy反代多个服务一样啊!


😄😄😄😄😄😄😄😄😄

于是马上实践:

  1. 我的博客静态文件用blog.bosh.zz.ac访问
  2. alist服务用file.bosh.zz.ac访问

建立caddy 服务:在根目录下建立Cddyfile文件,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. 博客静态站 (静态文件)
http://blog.bosh.zz.ac:8080 {
    # 必须是容器内路径
    root * /usr/share/caddy
    # 开启静态文件服务
    file_server
    # 开启日志方便调试
    log {
        output stdout
    }
}

# 2. 应用服务 (反向代理)
# ----------------------------
http://file.bosh.zz.ac:8080 {
    reverse_proxy 127.0.0.1:5244
}

用podman安装caddy

1
podman run -d   --name my-caddy   --network host   --restart always   -v /home/bosh/Caddyfile:/etc/caddy/Caddyfile   -v /home/bosh/blog/public_html:/usr/share/caddy   docker.io/caddy:alpine

用podman安装alist

1
podman  run -d --restart=unless-stopped -v /home/bosh/alist:/opt/alist/data -p 5244:5244  --network slirp4netns -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" docker.io/alist666/alist:latest

安装完毕,在浏览器打开网址验证:

  1. 我的博客:blog.bosh.zz.ac,访问正常
  2. alist服务:file.bosh.zz.ac,访问正常

设置caddy 和alist 为用户系统服务,后台运行,系统重启自动运行:

1
2
3
4
5
6
7
8
# 创建用户级 Systemd 目录
mkdir -p ~/.config/systemd/user/
cd ~/.config/systemd/user/
# 生成服务文件(--new 表示容器意外停止时会自动重新创建)
podman generate systemd --name my-caddy --new --files --name
podman generate systemd --name alist  --new --files --name
systemctl --user enable --now container-my-caddy.service
systemctl --user enable --now container-alist.service

至此大功告成

image.png


😸💃😪


热爱生活 学无止境
使用 Hugo 构建
主题 StackJimmy 设计