0x0 CT模板换源

  1. cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
  2. sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
  3. # 重启服务
  4. systemctl restart pvedaemon.service

0x1 下载模板、创建特权LXC

取消勾选无特权的容器

0x2 为容器加入渲染器硬件,并关闭AppArmor(部分显卡可能需要更新内核才能找到渲染器)

加入硬件参数:(可先用ls -l /dev/dri查询)

  1. tee -a /etc/pve/lxc/[CT_ID].conf <<-'EOF'
  2. lxc.cgroup2.devices.allow: c 226:0 rwm
  3. lxc.cgroup2.devices.allow: c 226:128 rwm
  4. lxc.cgroup2.devices.allow: c 29:0 rwm
  5. lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
  6. lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
  7. lxc.apparmor.profile: unconfined
  8. EOF

然后开机

0x3 换Debian源

  1. mv /etc/apt/sources.list /etc/apt/sources.list.bk
  2. tee /etc/apt/sources.list <<-'EOF'
  3. deb https://mirrors.ustc.edu.cn/debian/ bullseye main non-free contrib
  4. deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main non-free contrib
  5. deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main
  6. deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main
  7. deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main non-free contrib
  8. deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main non-free contrib
  9. deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main non-free contrib
  10. deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main non-free contrib
  11. EOF
  12. # 更新
  13. apt update && apt upgrade -y

0x4 挂载远程smb

安装SMB组件并创建共享目录(nas_share可自定义)

  1. apt install cifs-utils -y
  2. mkdir /mnt/nas_share

创建密码文件(注意保护文件,此处为明文密码):

  1. nano ~/.smbcredentials

设置SMB登录密码,自行替换:

  1. username=smb_share
  2. password=share_password

修改自动挂载文件

  1. nano /etc/fstab

加入挂载位置,自行替换

  1. //$smb_server/share /mnt/nas_share cifs credentials=/root/.smbcredentials,iocharset=utf8 0 0

0x5 安装docker

  1. # 一键安装Docker
  2. apt install curl vim -y && curl -sSL https://get.daocloud.io/docker | sh
  3. # 安装Docker-compose
  4. curl -L https://get.daocloud.io/docker/compose/releases/download/v2.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  5. chmod +x /usr/local/bin/docker-compose
  6. docker-compose --version
  7. # 配置Docker
  8. tee /etc/docker/daemon.json <<-'EOF'
  9. {
  10. "registry-mirrors": [
  11. "https://hub-mirror.c.163.com",
  12. "https://mirror.baidubce.com"
  13. ]
  14. }
  15. EOF
  16. systemctl daemon-reload
  17. systemctl restart docker
  18. docker info
  19. mkdir -p /opt/docker/Data
  20. chmod 777 /opt/docker/Data
  21. docker network create net

0x6 portainer

  1. mkdir /opt/docker/portainer
  2. cd /opt/docker/portainer
  3. tee /opt/docker/portainer/docker-compose.yml <<-'EOF'
  4. version: '3.7'
  5. services:
  6. portainer:
  7. container_name: portainer
  8. image: 6053537/portainer-ce
  9. restart: unless-stopped
  10. network_mode: net
  11. volumes:
  12. - /var/run/docker.sock:/var/run/docker.sock
  13. - /opt/docker/portainer/data:/data
  14. EOF
  15. docker-compose up -d

0x7 caddy

  1. openssl x509 -inform pem -in nat.glan.site_bundle.pem -outform der -out nat.glan.site_bundle.cer
  2. mkdir -p /opt/docker/caddy/data/tls/
  3. cd /opt/docker/caddy/
  4. # 上传证书到/opt/docker/caddy/data/tls/
  1. tee /opt/docker/caddy/Caddyfile <<-'EOF'
  2. (LOG) {
  3. log {
  4. output file "{args.0}"
  5. }
  6. }
  7. (TLS) {
  8. protocols tls1.3
  9. }
  10. (HSTS) {
  11. header {
  12. Permissions-Policy interest-cohort=()
  13. Strict-Transport-Security max-age=31536000;
  14. X-Content-Type-Options nosniff
  15. X-Frame-Options DENY
  16. Referrer-Policy no-referrer-when-downgrade
  17. }
  18. header -server
  19. }
  20. (COMMON_CONFIG) {
  21. encode zstd gzip
  22. tls /data/nat.glan.site.pem /data/nat.glan.site.key
  23. tls {
  24. import TLS
  25. }
  26. import HSTS
  27. }
  28. {
  29. servers :443 {
  30. protocol {
  31. experimental_http3
  32. }
  33. }
  34. log {
  35. output file /var/log/caddy/caddy.log
  36. }
  37. }
  38. import /config/*.caddy
  39. EOF
  1. mkdir /opt/docker/caddy/config
  2. tee /opt/docker/caddy/config/portainer.nat.glan.site.caddy <<-'EOF'
  3. portainer.nat.glan.site {
  4. reverse_proxy portainer:9000
  5. import LOG "/var/log/caddy/portainer.nat.glan.site.log"
  6. import COMMON_CONFIG
  7. }
  8. EOF
  1. tee /opt/docker/caddy/docker-compose.yml <<-'EOF'
  2. version: "3.7"
  3. services:
  4. caddy:
  5. container_name: caddy
  6. image: caddy
  7. restart: unless-stopped
  8. network_mode: net
  9. ports:
  10. - 80:80
  11. - 443:443
  12. - 443:443/udp
  13. volumes:
  14. - /opt/docker/caddy/Caddyfile:/etc/caddy/Caddyfile
  15. - /opt/docker/caddy/config:/etc/config
  16. - /opt/docker/caddy/www:/var/www
  17. - /opt/docker/caddy/log:/var/log/caddy/
  18. - /opt/docker/caddy/data:/data
  19. EOF
  20. docker-compose up -d

0x8 jellyfin

mkdir /opt/docker/jellyfin
cd /opt/docker/jellyfin

tee /opt/docker/jellyfin/docker-compose.yml <<-'EOF'
version: '3.7'
services:
  jellyfin:
    container_name: jellyfin
    image: nyanmisaka/jellyfin
    restart: unless-stopped
    network_mode: net
    volumes:
      - /opt/docker/jellyfin/config:/config
      - /opt/docker/Data:/media
    devices:
      - /dev/dri:/dev/dri
EOF

docker-compose up -d
docker ps
tee /opt/docker/caddy/config/jellyfin.nat.glan.site.caddy <<-'EOF'
jellyfin.nat.glan.site {
        reverse_proxy jellyfin:8096
        import LOG "/var/log/caddy/jellyfin.nat.glan.site.log"

        import COMMON_CONFIG
}
EOF
docker restart caddy

jellyfin.nat.glan.site

# jellyfin设置
服务器-播放-硬件加速-VAAPI
服务器-播放-启用的硬件解码-全选

0x9 PVE

tee /opt/docker/caddy/config/pve.nat.glan.site.caddy <<-'EOF'
pve.nat.glan.site {
        reverse_proxy {
                to https://192.168.1.200:8006
                transport http {
                        tls
                        tls_insecure_skip_verify
                        read_buffer 8192
                }
        }
        import LOG "/var/log/caddy/pve.nat.glan.site.log"

        import COMMON_CONFIG
}
EOF
docker restart caddy

0xA Clash

mkdir /opt/docker/clash
cd /opt/docker/clash
wget https://api.ikuuu.science/link/dfci1PChNv5EQp6e?clash=3 -O config.yaml

tee /opt/docker/clash/docker-compose.yml <<-'EOF'
version: '3.7'
services:
    clash:
        container_name: clash
        image: 'dreamacro/clash'
        #image: 'dreamacro/clash:v1.8.0'
        restart: unless-stopped
        network_mode: net
        ports:
            - '7890:7890'
            - '7891:7891'
            - '9090:9090'
        volumes:
            - '/opt/docker/clash/config.yaml:/root/.config/clash/config.yaml'

#    yacd:
#        container_name: yacd
#        image: haishanh/yacd
#        restart: unless-stopped
#        network_mode: net
EOF

docker-compose up -d
tee /opt/docker/caddy/config/clash.nat.glan.site.caddy <<-'EOF'
clash.nat.glan.site {
        redir https://yacd.haishan.me/
        import LOG "/var/log/caddy/clash.nat.glan.site.log"

        import COMMON_CONFIG
}
EOF

docker restart caddy

https://clash.nat.glan.site/
http://clash.nat.glan.site:9090
export https_proxy=http://192.168.1.100:7890 http_proxy=http://192.168.1.100:7890 all_proxy=socks5://192.168.1.100:7890