分类: 互联网时代中年男性

  • Windows Server Cheat Sheet

    raw 镜像转换至 vhdx

    linux – How do I convert an .img file to vhd? – Super User

    直接简单粗暴扔给 qemu-utils 处理就可以了。

    qemu-img convert ./debian-12-nocloud-amd64-20250428-2096.raw -O vhdx ./debian-12-nocloud-amd64-20250428-2096.vhdx

    可以添加 -o subformat=fixed-o subformat=dynamic 来配置目标 vhdx 是否为动态大小。

    创建类似 VMware 中 NAT 类型的虚拟交换机

    Set up a NAT network | Microsoft Learn

    Get-NetNat (NetNat) | Microsoft Learn

    Hyper-V NAT 网络设置固定 IP / DHCP – wswind – 博客园

    创建虚拟网卡和配置其静态 IP 可以在可视化界面中完成,也可以用 PowerShell:

    New-VMSwitch -SwitchName "SwitchName" -SwitchType Internal
    PS C:\> Get-NetAdapter
    
    Name                  InterfaceDescription               ifIndex Status       MacAddress           LinkSpeed
    ----                  --------------------               ------- ------       ----------           ---------
    vEthernet (intSwitch) Hyper-V Virtual Ethernet Adapter        24 Up           00-15-5D-00-6A-01      10 Gbps
    Wi-Fi                 Marvell AVASTAR Wireless-AC Net...      18 Up           98-5F-D3-34-0C-D3     300 Mbps
    Bluetooth Network ... Bluetooth Device ...                    21 Disconnected 98-5F-D3-34-0C-D4       3 Mbps
    New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex>

    创建 NAT,没找到对应的可视化工具。

    New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>

    创建 DNAT 规则:

    Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/0" -ExternalPort 6881 -Protocol TCP -InternalIPAddress "192.168.1.100" -InternalPort 6881 -NatName Default

    启用 CIFS/SMB 在 Linux 中挂载

    samba – How do I mount a CIFS share via FSTAB and give full RW to Guest – Ask Ubuntu

    How to mount a windows/samba windows share under Linux? – Unix & Linux Stack Exchange

    安装依赖,然后挂载测试:

    apt install cifs-utils
    mount -t cifs -o "username=debian" -o "password=password" //192.168.1.1/assets /mnt/assets

    确认无误后写入 /etc/fstab

    //192.168.1.1/assets /mnt/assets cifs username=username,password=password,uid=1000,gid=1000 0 0

    别忘了验证,防止影响操作系统启动:

    umount /mnt/assets
    systemctl daemon-reload
    mount -a
  • 在威联通 QTS 的 Container Station 上使用类似虚拟机的桥接网络

    日常使用时,我们可以注意到:在创建容器时,Web UI 上其实是允许容器使用虚拟交换机网络而非 NAT 的。这个选项的效果类似于虚拟机平台的虚拟交换机(或者有些时候称之为桥接网络),和直接使用 network_mode: "bridge" 有显著区别。

    出于好奇,索性这样创建一个容器,然后直接 SSH 到机器上面看看生成的东西是啥样的。这个容器的实现也很直接,SSH 上去可以直接使用现成的 Docker 的命令行客户端,所以直接看看 Docker 的网络。

    可以注意到这里使用了一个定制的 Docker 网络驱动。这下就明白了,然后我们可以来搜一下怎么在 Docker Compose 里调用它。

    也比较顺利,直接搜到了官方的文档:Qnet — Container Station documentation (qnap-dev.github.io),这里面给出了示例:

    那么直接复制粘贴就可以了。不过也发现一个问题,重新创建应用会导致 MAC 变化,DHCP 服务器上配置的静态分配不生效。此时可以直接给 services.qnet_dhcp 下设置一个 mac_address 属性来指定 MAC 地址,就不会有问题了。

    后续

    对于熟悉 Docker 的朋友们,可能会发现这个其实类似于 Docker 本身提供的 macvlan 驱动。我在体验了一段时间 qnet 驱动后,因为其缺少 IPv6 实现,也逐步迁移到了 macvlan。因为对性能没有特别要求,所以没有明显感知到区别,只是发现使用 macvlan 的话,网络设置中会存在警告,还没有时间处理。

    引用

    Qnet — Container Station documentation (qnap-dev.github.io)

  • 威联通 QTS 启动 Jellyfin,使用 Container Station 容器工作站

    左侧栏新建“应用程序”,下面给出可用的 docker-compose.yml

    version: '3.5'
    services:
      jellyfin:
        image: jellyfin/jellyfin
        container_name: jellyfin
        user: 0:0
        network_mode: 'host'
        volumes:
          - /share/Container/jellyfin/config:/config
          - /share/Container/jellyfin/cache:/cache
          - /share/Media:/mnt/media:ro
        devices:
          - /dev/dri/renderD128:/dev/dri/renderD128
        restart: 'unless-stopped'
        environment:
          - http_proxy=http://<proxy-host>:<proxy-port>
          - https_proxy=http://<proxy-host>:<proxy-port>
          - HEALTHCHECK_URL=http://<qts/jellyfin-host>:8096/health
        extra_hosts:
          - "host.docker.internal:host-gateway"

    基于 Jellyfin 官方给出的 yml 修改而来,挂载设备以支持硬件解码。由于 QTS 上该设备所有者为 0:0,且权限为 600,无法通过添加 –group-add 参数来让同组不同用户使用该设备,因此只能让这个容器按 root:root 启动了,可能有些许风险。

    添加环境变量以加速元数据刷新,修改健康检查地址使之状态正常。

    引用

    Container | Jellyfin

    Intel GPU | Jellyfin

目录