AlmaLinux 设置 Root ssh 密码登录

  1. 修改 /etc/ssh/sshd_config

    1
    2
    3
    4
    5
    6
    7
    # PermitRootLogin 改成 yes
    #PermitRootLogin prohibit-password
    PermitRootLogin yes

    # 取消 PasswordAuthentication yes 的注释
    # PasswordAuthentication yes
    PasswordAuthentication yes
  2. 修改 /etc/ssh/sshd_config.d/50-redhat.conf

    1
    2
    3
    4
    # 这个修改不确定需要,因为我都是用cloud-init,并没有直接安装. 不太确定
    # ChallengeResponseAuthentication 改成 yes
    # ChallengeResponseAuthentication no
    ChallengeResponseAuthentication yes

获取地区ip数据

1
2
3
4
#!/bin/bash
wget -c http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
cat delegated-apnic-latest | awk -F '|' '/HK/&&/ipv4/ {print $4 "/" 32-log($5)/log(2)}' | cat > ipv4-hk.txt
cat delegated-apnic-latest | awk -F '|' '/SG/&&/ipv4/ {print $4 "/" 32-log($5)/log(2)}' | cat > ipv4-sg.txt

Debian12 编译 EasyTier

由于 EasyTier 提供的二进制版本不提供quic连接版本,所以选择自己编译。
源仓库没有编译教程,自己摸索编译过程

  1. 安装 rust 环境,安装提示选择默认就可以了

    1
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. 安装编译环境

    1
    2
    3
    4
    5
    6
    7
    sudo apt install build-essential
    sudo apt-get install protobuf-compiler
    sudo apt install -y musl musl-tools
    # 查看 rust 编译目标
    rustup target list
    # 添加编译目标
    rustup target add x86_64-unknown-linux-musl
  3. 编译

    1
    2
    3
    4
    git clone https://github.com/EasyTier/EasyTier
    cd EasyTier
    # 开始编译,由于我需要 quic,使用 --features full
    cargo build --release --verbose --target x86_64-unknown-linux-musl --features full

Debian12 设置网卡优先级

  1. 编辑 /etc/network/interfaces

    1
    vim /etc/network/interfaces
  2. 调整 metric 优先级, 数值越小优先级越高

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).

    source /etc/network/interfaces.d/*

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # The primary network interface
    allow-hotplug ens18
    iface ens18 inet dhcp
    metric 10

    allow-hotplug ens19
    iface ens19 inet dhcp
    metric 100
  3. 重启网络服务

    1
    2
    3
    systemctl restart systemd-networkd
    # 或者
    # systemctl restart networking

nginx创建rtmp反向代理

  1. 安装 nginx 和 需要的 nginx module

    1
    2
    sudo apt install nginx libnginx-mod-rtmp -y
    sudo systemctl enable --now nginx
  2. nginx 加入 rtmp 配置块

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 确认以下配置是否存在,没有不会调用 rtmp 模块
    include /etc/nginx/modules-enabled/*.conf;

    # 添加以下配置块配置rtmp方向代理
    # 如果代理 rtmps 需要 tcp 通道配合,rtmp协议可以直接反向代理
    rtmp {
    server {
    listen 1935;
    chunk_size 4096;
    application app {
    live on;
    push rtmp://127.0.0.1:1936/app;
    }
    application live {
    live on;
    push rtmp://127.0.0.1:1937/live;
    }
    }
    }
  3. 测试 nginx 配置正确以后重载 nginx

    1
    2
    nginx -t
    nginx -s reload
  4. 解决 rtmps 代理的 tcp 通道 gost 配置

    1
    2
    3
    4
    5
    6
    mkdir gost
    cd gost
    wget https://github.com/go-gost/gost/releases/download/v3.0.0-rc10/gost_3.0.0-rc10_linux_amd64.tar.gz
    tar zvxf gost_3.0.0-rc10_linux_amd64.tar.gz
    ./gost -C ./config.yaml

    gost 配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    services:
    - name: tw-in
    addr: ":1936"
    handler:
    type: tcp
    chain: tw-out
    listener:
    type: tcp

    - name: bn-in
    addr: ":1937"
    handler:
    type: tcp
    chain: bn-out
    listener:
    type: tcp

    chains:
    - name: tw-out
    hops:
    - name: hop-0
    nodes:
    - name: node-0
    addr: tyo03.contribute.live-video.net:443
    connector:
    type: forward
    dialer:
    type: tls

    - name: bn-out
    hops:
    - name: hop-0
    nodes:
    - name: node-0
    addr: bnlivepush-ag.bblivestream.com:443
    connector:
    type: forward
    dialer:
    type: tls

CentOS yum方式安装ffmpeg

centos7官方Yum源不包含ffmpeg的库,所以需要安装其他仓库来实现。

如果是 centos8 ,那么 rpmfusion-free-release-7.noarch.rpm 修改为 rpmfusion-free-release-8.noarch.rpm

1
2
3
# 如果是centos8,下文的7改为8
sudo yum install -y https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
sudo yum install -y ffmpeg

Linux 安装 docker

  1. 以下命令一键安装

    1
    curl -fsSL https://get.docker.com | bash
  2. 如果是 ubuntu 系统,默认不root需要把当前用户加入docker组

    1
    sudo usermod -aG docker ${USER}

Linux 挂载 webdav nfs

  1. 安装依赖包

    1
    2
    3
    # 以下为 centos 安装,ubuntu 切换为 apt 包名不变
    yum install epel-release
    yum install -y nfs-common nfs-utils davfs2
  2. 使用mount临时挂载

    1
    2
    3
    mkdir /mnt/dav /mnt/nfs
    mount -t davfs https://example.com/webdav /mnt/dav
    mount -t nfs 1.1.1.1:/ /mnt/nfs
  3. 使用 fstab 自动挂载 编辑 /etc/fstab 文件

    1
    2
    3
    4
    # NFS 从vers=4 开始到 noresvport 是挂载参数,可以根据自身情况调整
    1.1.1.1:/ /mnt/nfs nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    # DAV
    https://example.com/webdav /mnt/dav davfs rw,_netdev,auto,user,uid=nobody,gid=nobody 0 0

    修改完以后可以使用 mount -a 测试挂载是否正常

  4. 需要注意,如果 fstab 挂载 webdav 需要设置自动登录

    1
    echo "/mnt/dav account password" >> /etc/davfs2/secrets

使用Docker安装Emby服务端并启用intel核显

  1. 拉取官方 docker 镜像

    1
    docker pull emby/embyserver
  2. 修改参数并启动容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    docker run -d \
    --name embyserver \
    --volume /home/docker/emby/config:/config \
    --volume /mnt/nfs:/mnt \
    --net=host \
    --device /dev/dri:/dev/dri \
    --publish 8096:8096 \
    --publish 8920:8920 \
    --env UID=0 \
    --env GID=0 \
    --env GIDLIST=0 \
    emby/embyserver

    # 将主机调用核显的路径 /dev/dri 映像到容器内的 /dev/dri ,以供调用核显实现硬解
    # UID 、 GID 、 GIDLIST : 以何种权限运行 emby,这里全设定为 0 , 即以 root 权限运行,可以避免因权限问题导致无法调用核显硬解
  3. 给核显所在的路径授予权限

    1
    chmod a+x /dev/dri
  4. 重启 emby 容器