搭建 Jellyfin,影视媒体平台,DIY一条龙教程,安装部署使用 2023-01-15

前缀、文档修改记录

2023-01-15 初始化编辑此文章
2024-01-05 更新需要走代理的域名规则,主要为了刮削
2024-03-21 更新扩展SATA的内容,更新检索视频的内容,更新显卡的内容,以便服务端解码转码。

段落1、需求描述

搭建Jellyfin,影视媒体平台,自己看美剧、泰剧、日剧、韩剧,未删减版本,不求人,1080P/4K资源,统统可以。

搭建的资源,在自己的家里的私网,不对外开放。家里如果有公网IP,或者走云服务器转发,也就可以在公网访问到自己的影视资源了。(不推荐搭建后,给公众开放,这个版权问题,大家稍微注意一下)

Jellyfin,是全平台支持的,苹果、安卓、计算机PC、电视,都是有客户端软件的。

效果图:

段落2、硬件配置

我这里选择的架构是硬件直接安装Linux,然后直接部署Jellyfin,我没有选用Docker架构方式,后续的硬件直通问题,后续想要加独立显卡,也简单。使用该方式,对于增加存储盘,也非常简单。对CPU的利用率也最大。

Jellyfin 影视平台 规格选型如下:

  • 长城电源 300W * 1
  • 机箱 多盘位机箱 * 1
  • 主板 B75 含6个板载SATA口 * 1
  • 处理器 i5 3470 * 1
  • 内存 12GB
  • 硬盘供电线 1分5 SATA电源线 * 2
  • 硬盘SATA数据线 * 10
  • 系统盘 SSD 240GB * 1 , Debian 11
  • 缓存盘 SSD 1TB * 1
  • 存储盘 东芝 4TB * 1 ,利旧
  • 存储盘 西数 12TB 氮气盘 * 2
  • 1050TI 显卡 * 1
  • 公网 IP,带宽 Nginx + HTTPS/TLS * 1
  • 软件,BT下载 Transmission * 1
  • 软件,影视平台 Jellyfin * 1
  • 软件,削刮器 TinyMediaManager * 1

段落3、硬件组装,基础Linux系统安装

这个没啥说的,就是电脑台式机的组装而已,板载6个SATA口,注意一下,一般SATA0编号的,是连接系统盘。其他的,就是连接缓存盘,存储盘。

组装台式机,需要一定的动手能力,各位看DIY 一条龙教程的,量力而行。

操作系统的安装,也比较简单,我这里,就安装最常规安装Debian 11操作系统。你们也可以选择自己喜欢的Linux系统发行版本。

硬盘12TB格式化,选用GPT分区

对于磁盘的挂载,参考我 Ubuntu/Debian 的Linux环境,格式化超过2TB的磁盘 2022-4-24 这个教程,使用parted对磁盘格式化,我这里都是单盘挂载,让容量最大化,不使用RAID,你们对于磁盘的格式化,是否组RAID的架构,酌情考虑。

截至2024-03-21,更新此页博客的时间,我这台单机跑的磁盘容量,已经50多个TB了,共计存放了1000+电影,1800+电视剧,2300+音乐,因为都是这些影视文件,不是重要数据,不做RAID,硬盘真坏掉,也就更换硬盘就是了,没啥遗憾的。

硬盘,在主板SATA口全部用完的情况下,我用的这个PCIx1的4口SATA扩展的,供电用大4Pin转15Pin路的供电。

段落4、安装部署 Jellyfin

参考 https://jellyfin.org/docs/general/installation 这个是Jellyfin官方的安装指导,不管是群晖、Windows/Linux 或者 Docker方式的安装,都建议先看一看官方的安装知道文档,这个比任何其他文档都要靠谱。

由于我安装的是Debian 11 操作系统,这里就可以到官方教程的Debian位置

Debian 11,在添加Jellyfin源的地方,有2个方式,如果用extrepo方式,就不必1到3步骤编号

添加源

root@server:~# apt update
root@server:~# apt install extrepo
root@server:~# extrepo enable jellyfin

# 1
root@server:~# apt update
root@server:~# apt install curl gnupg

# 2
root@server:~# mkdir /etc/apt/keyrings
root@server:~# curl -fsSL https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg

# 3 
root@server:~# cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )
Suites: $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )
Components: main
Architectures: $( dpkg --print-architecture )
Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOF

添加源后,就可以更新,安装Jellyfin

# 4
root@server:~# apt update
root@server:~# apt install jellyfin

# 5  重启Jellyfin
root@server:~# systemctl restart jellyfin

# 6  关闭Jellyfin
root@server:~# systemctl stop jellyfin

# 7  启动Jellyfin
root@server:~# systemctl start jellyfin

# 8  开机启动Jellyfin
root@server:~# systemctl enable jellyfin

安装后,启动Jellyfin,能在Linux上,看到对应业务端口 8096的监听

然后,就可以通过 http://IP地址:8096/ 访问jellyfin了。

段落5、初始化Jellyfin

登录Jellyfin,设置语言为 汉语(简体),设置登录Jellyfin的用户名,密码

首选无数据语言的语言选“Chinese”,国家/地区选择“People’s Republic of China”

设置远程访问两个都打勾

登录进入页面后,点击右上方的小头像,进入字幕,字幕语言偏好:Chinese简体中文,字幕模式:默认,烧录字幕:全部。

段落6、添加影视媒体资源

点击左上角三横线菜单,选择控制台,选择媒体库,选择加号+添加影视媒体。

我这里,就添加一个电视剧文件夹,一个电影文件夹。

其中,如下图的,如果是电影,文件夹,就选中对应磁盘上的电影目录,可以选中多个磁盘上,对应的电影目录。简而言之,就是,一个电影分类,可以从多个文件夹里提取资源清单。

还有下面的勾选框,基本除了最后2个,都勾上。

段落7、关于刮削

刮削,其实可以自动的,主要看你电影名字的命名,电视剧文件夹的命名。还有,刮削的几个源网站,基本都是被BLOCK的,所以,你需要一个Nice的网络环境,才可以正常刮削影视封面,专辑信息。

如下的域名,最好都把它们加入到软路由的代理里面。如果没有条件的,就增加到jellyfin的Linux主机hosts文件里。

repo.jellyfin.org
jellyfin.org
imdb.com
media-amazon.com
www.imdb.com
themoviedb.org
zap2it.com
bootstrapcdn.com
tmsimg.com
api.themoviedb.org
image.tmdb.org
tmdb.org
trakt.tv

文件命名方式如下,就可以自动刮削了

电影名称-年份.mp4

一般,遇到错误的刮削,很常见,可以在视频/电视剧,选择”识别”,输入该电影的名称或imdb里面的编号,进行人工查找,更新削刮信息。

如果遇到重名的,封面不同的,可以根据IMDB的ID进行检索,比如下图这部韩剧,用tt29311421这个参数,可以找到唯一的IMDB信息

在XX电视剧/识别/IMDB ID这个参数位置,检索tt29311421,即可

如果影视,特别一些短剧,没有被IMDB的收录,或其他错误,就可以自己上传封面,修改年份,修改完成后,记得锁定资源的刮削信息,勾选”锁定此项目防止改动”。

段落8、关于公网映射

配置Nginx的反向代理,需要修改配置DNS指向,配置域名证书,在路由器上配置端口转发到内部的IP端口即可。

访问 https://域名:端口/

server {
    listen 443 ssl;
    server_name 你的域名;

    client_max_body_size 100M;


    ssl_certificate /root/certs/你的域名/fullchain.cer;
    ssl_certificate_key /root/certs/你的域名/你的域名.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;    




    location / {
        proxy_pass http://127.0.0.1:8096;
        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;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;

        # Disable buffering when the nginx proxy gets very resource heavy upon streaming
        proxy_buffering off;
    }

    location = /web/ {
        proxy_pass http://127.0.0.1:8096/web/index.html;
        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;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
    }

    location /socket {
        proxy_pass http://127.0.0.1:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
    }
}

段落9、增加显卡,满足服务端解码的需求

当今,BT/PT影视站点,已经越来越多的4K视频资源了,此时台式机里面这颗桌面级旧CPU(Intel Core i5-3470 CPU @ 3.20GHz,各位垃圾佬勿嘲笑),已经无法满足解码4K视频的能力,CPU软解码会让CPU跑满负载,着实难为它了,后来思来想去,在满足省电费,低价,地板级满足解码4K,给设备补了一张显卡(GeForce GTX 1050 Ti @ 75W)。

买这种旧卡,没什么说的,直接插主板的PCI插槽即可。

// 增加apt源
// Debian Sid   /etc/apt/sources.list中增加如下的一行内容
# deb http://deb.debian.org/debian/ sid main contrib non-free non-free-firmware

// 安装驱动(一般需要重启)
# apt update
# apt install nvidia-driver firmware-misc-nonfree

// 测试GPU是否正常工作,如果如下图显示的,则表示正常工作
# nvidia-smi

NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.0

同步需要做的是,在Jellyfin的WEB页面,控制台/播放/转码,选择”Nvidia NVENC”

同时,要注意,”FFmpeg 路径” 这个参数,选择的ffmpeg,必须为支持英伟达CUDA的版本

使用命令ffmpeg无参数运行,可以明显看到有CUDA参数,如图” –enable-cuda –enable-cuda-llvm –enable-cuvid –enable-nvdec –enable-nvenc,则表示,你选择的这个ffmpeg是正确的,这个务必要注意

如果ffmpeg版本正确,在需要转码的设备播放视频时候,通过nvidia-smi命令,可以看到GPU解码并占了解码带宽,有对应的程序。

如下图,可看到470MB/4096MB,被占了大概500MB的显存,下方是ffmpeg进程号240848。

如果ffmpeg版本不对,可以参考jellyfin官方,对于英伟达显卡支持的页面说明

https://jellyfin.org/docs/general/administration/hardware-acceleration/nvidia

安装它官方支持的ffmpeg大致步骤如下

9.1 确保官方的源已经添加到sources.list

// 增加apt源
// Debian Sid   /etc/apt/sources.list中增加如下的一行内容
# deb http://deb.debian.org/debian/ sid main contrib non-free non-free-firmware

9.2 安装jellyfin-ffmpeg5这个包

# apt update 
# apt install -y jellyfin-ffmpeg5

9.3 安装对应系统版本的驱动

// Debian
# apt update
# apt install -y libnvcuvid1 libnvidia-encode1

// Ubuntu
# apt update 
# apt install -y libnvidia-decode libnvidia-encode

操作完,一般显卡正常工作的,就可以支持显卡的硬件加速&服务端解码视频流了。

该章节补充于2024-3-21 21:00PM

附录1、视频讲解

1.1、搭建Jellyfin

1.2、修复字幕的框框问题

附录2、

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Donate
云乞讨

Proxmox Virtual Environment 配置双ISP上联的网络 2023-1-3

段落1、需求描述

在Proxmox Virtual Environment(以下简称PVE)环境中,除了当前管理网络,增加了一个网卡,接入另一个网络,以后,各个业务系统,可根据需求,选择默认的路由为某一个ISP运营商。

物理接网线:

整个PVE为单台台式机/工作站的独立环境,未配置PVE集群,故而,场景,还简单一点。

PVE 以太网卡1 — 网线 — 电信IP的路由器1(主管理PVE,管理地址)

PVE 以太网卡2 — 网线 — 联通IP的路由器2

假设,其中一个虚拟机VM,安装有Ubuntu 20.04 LTS,需要使用电信网络作为管理网络,使用联通网络为业务网络。

依据黑色加粗的需求,对PVE作出配置,登录PVE的WEB地址,进入数据中心内宿主机的网络选项

一般,初始时候,只有默认网络的桥接,这里我们需要对另一个桥接进行添加

创建 / Linux Bridge / 桥接端口 enp3s1 / 备注联通

完成添加的样子,PVE内,具备vmbr0(桥接电信网络),vmbr1(桥接联通网络)双ISP网络的能力了。

然后,就是对对应的虚拟机VM,增加网络设备

网络设备net1 ,桥接vmbr0,电信,限速5MB/s,管理网络

网络设备net0,桥接vmbr1,联通,限速30MB/s,业务网络

Linux系统内,按照我们需要的这个场景,还需要自定义一下路由表,让默认路由到 net0 联通网络,通过开机启动指定路由即可。

root@server:/etc/network/if-up.d# cat route.sh 
#!/bin/sh
# START
/sbin/ip  route del default via 电信网关IP地址 dev ens19  
/sbin/ip  route add default via 联通网关IP地址 dev ens18  
# END
root@server:/etc/network/if-up.d# 

# 其中,两个网关IP地址,需要自定义,按实际的来,网络在主机内部对应的名称,可能是ens18,ens19,ens3,ens5,eth0,eth1,根据实际来。

这样配置的好处是,即便是业务流量,在某个方向跑满带宽出现拥堵的场景,管理方向,永远可以保持一个空闲的可用状态。

苹果iOS,Shadowrocket进阶,基于小火箭自定义规则,配置微信/淘宝的直连规则,微信规则 2022-12-04

2023-10-11 更新淘宝APP的3个直连规则
2023-12-31 更新,增加淘宝APP的域名
2024-11-13 更新,增加微信的3个域名

段落1、需求描述

微信版本 >= 8.0.2

在默认的配置模式下,微信的两个分流域名qlogo.cn qpic.cn会走proxy,会造成可感知的微信卡顿现象,建议把这如下的几个域名,添加到配置文件的domain-suffix direct规则

FINAL 在规则未匹配的情况下,默认走到了PROXY

段落2、增加微信的直连规则

在下方菜单的{配置}栏目,选则中间位置的default.conf规则,选择右侧的info按钮,进入规则,右上角的加号,添加规则

# 微信,匹配到DOMAIN-SUFFIX
qq.com
qpic.cn
qlogo.cn
# 2024-11-13 ADD
qq.com.cn
wechatpay.cn
tencent-cloud.net

增加完成,点击default.conf,选择使用规则即可

段落3,增加淘宝的直连规则

淘宝APP的很多直连规则,在default.conf里面,原本就有,所以不必增加,如下的3个,只是走错方向的,需要校正调整到直连的。

在下方菜单的{配置}栏目,选则中间位置的default.conf规则,选择右侧的info按钮,进入规则,右上角的加号,添加规则。一次增加一个域名规则。

# 淘宝,支付宝,匹配到DOMAIN-SUFFIX
aliapp.org
alicdn.com
alipay.com
alipayobjects.com
taobao.com
uc.cn
ucweb.com

附录1、发现时间 2021-2-15

https://twitter.com/fdmove/status/1361196913991712770?s=20&t=YahArISwAFXa3BdVUlAQBQ

附录1、

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Donate
云乞讨

数据库 PostgreSQL,单库的备份及恢复 2022-12-03

段落1、需求描述

因业务迁移的需要,对在用的PostgreSQL数据库进行备份,且在新生产环境中,进行导入恢复操作

这里,主要就是涉及的PostgreSQL数据库

需要导出库中的所有表结构及数据文件

我这里的库相对简单,只有一个单库,几个表,索引,没有其他的,整体数据还是比较简单的

数据库版本,也升级了,原库 14.3 ,新库 15.1

段落2、在旧数据库,导出表机构、导出所有的数据

由于,我这里数据库,整体不大,故而,不只用gzip压缩数据

# 切换到用户 postgres
su - postgres
# 备份,表结构
pg_dump -s pdb > backup.schema.20221203.sql
# 备份,数据
pg_dump dbname > backup.databse.20221203.sql

将备份的文件,传输到新库的服务器上

段落3、在新数据库,导入表,导入所有数据

这里需要创建,同样的数据库名称,数据库用户,并有权限

psql dbname < backup.schema.20221203.sql
psql dbname < backup.databse.20221203.sql
# 如果需要把监听启动在 公网
cp /etc/postgresql/15/main/pg_hba.conf /etc/postgresql/15/main/bak.pg_hba.conf.20221203


# /etc/postgresql/15/main/pg_hba.conf 修改,增加
host all all 0.0.0.0/0 md5

cp /etc/postgresql/15/main/postgresql.conf /etc/postgresql/15/main/bak.postgresql.conf.20221203


# /etc/postgresql/15/main/postgresql.conf 修改
listen_addresses = '0.0.0.0'

systemctl restart postgresql

附录1、

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Donate
云乞讨

使用私钥方式SSH登录Linux服务器,免输入密码,免密码登录 2022-11-20

段落1、需求描述

开在公网的服务器,不管是Win还是Linux,常常会遭受到无聊的暴力破解攻击。这种情况下,自身密码如果复杂度是够的,也不必太过担心。不过,这种事情不胜其扰。要么通过防火墙过滤,要么就可以如题一般,配置Linux的SSH登录方式为私钥登录。

段落2、常见的算法格式

DSA(用于数字签名算法)的签名生成速度很快,验证速度很慢,加密时更慢,但解密时速度很快,一般仅用于签名。

RSA算法(可用于加密和数字签名)的安全性基于这样的事实,大整数的因式分解被认为是难以破解 ,而DSA安全性基于离散对数问题。今天已知用于分解大整数块的最快算法是通用数字场筛(可以理解为对简单合理筛或二次筛的改进算法),也是解决有限域中的离散对数问题的最快算法,该算法以DSA指定的大素数为模。

OpenSSH 7.0及以上版本默认禁用了ssh-dss(DSA)公钥算法。官方没有给出具体的解释,但其中可能有OpenSSH的DSA密钥位数生成的原因,同时生成签名时随机性差,可能会泄漏私钥,且以现在机算机的算力,DSA 1024-bit已经实际上可破解,建议不使用

ECDSA算法(椭圆曲线数字签名算法)

ECDSA是用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。而ECC(全称Elliptic Curves Cryptography)是一种椭圆曲线密码编码学。

ECDH每次用一个固定的DH key,导致不能向前保密(forward secrecy),所以一般都是用ECDHE(ephemeral)或其他版本的ECDH算法。ECDH则是基于ECC的DH( Diffie-Hellman)密钥交换算法。

ECC与RSA 相比,有以下的优点:

  • 相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。
  • 计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。
  • 存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。
  • 带宽要求低使得ECC具有广泛得应用前景。

一般来说,普通人,选用RSA的就可以,兼容性,安全性都够了。通常,RSA,DSA,ECDSA,EdDSA和Ed25519都用于数字签名,但只有RSA也可以用于加密。

Key typePublic key file namePrivate key file name
DSA~/.ssh/id_dsa.pub~/.ssh/id_dsa
RSA~/.ssh/id_rsa.pub~/.ssh/id_rsa
ECDSA~/.ssh/id_ecdsa.pub~/.ssh/id_ecdsa
Ed25519 (Edwards-curve DSA)~/.ssh/id_ed25519.pub~/.ssh/id_ed25519

几种常见的密钥对生成

ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa 
ssh-keygen -t ecdsa -b 521
ssh-keygen -t ed25519
ssh-keygen -f ~/tatu-key-ecdsa -t ecdsa -b 521   # 指定生成的名称

如果针对我们需要生成SSH密钥对的场景,仅是登录服务器需求,默认长度2048即可,要安全可靠一点,长度可选4096。

使用如下的命令,即可生成密钥对,如果是在服务器VPS上执行,下载私钥后,务必把服务器上的私钥文件删除。下载到本地,记得控制私钥文件的访问权限。

段落3、实际落地操作命令

3.1、使用4096长度,生成一个密钥对

ssh-keygen -t rsa -b 4096

生成的文件,id_rsa,为私钥,需要保存在自己手里,保存好。

生成的文件,id_rsa.pub,为公钥,一般放在服务器VPS的 ~/.ssh/ 目录下。

3.2、复制公钥的字符串,到服务器的~/.ssh/目录下

创建目录,复制id_rsa.pub文件中的内容,追加写入到~/.ssh/authorized_keys文件中

mkdir -p ~/.ssh/
echo "public_key_string" >> ~/.ssh/authorized_keys   

# public_key_string 为你id_rsa.pub文件中的全部字符串内容

3.3、本地使用私钥登录服务器

3.3.1、如果本地也是Linux系统,命令行模式下

其中id_rsa文件的路径,我这里放在当前目录下,可选全路径

ssh -i ./id_rsa root@23.11.55.166

3.3.2、如果本地是windows系统,使用putty/XShell/FinalShell之类的图形界面客户端,则直接调用私钥文件即可。

假设使用putty登录,输入IP,点开右方SSH加号,点击Auth,点击Browse加载私钥后点击open即可。

段落4、关闭密码登录,仅用私钥登录(此章节的操作,为可选)

修改SSH服务器上的配置文件 /etc/ssh/sshd_config ,增加或者修改如下的参数的配置值

# 禁用密码登录
PasswordAuthentication no

# 启用私钥登录
RSAAuthentication yes
PubkeyAuthentication yes

# 允许root登录
PermitRootLogin yes

修改参数完成后,重启SSHD服务即可

systemctl restart sshd

附录1、

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Donate
云乞讨

附录2、视频教程链接

000117. 免输入密码,使用私钥方式SSH登录Linux服务器 2022-11-20

本期博客地址 https://dasmz.com/?p=2898
本期视频地址 https://youtu.be/d9y9Kxl-4G0
博客地址 https://dasmz.com
Twitter  https://twitter.com/fdmove
Youtube  https://www.youtube.com/@DasmzStudio
全部视频的目录索引 https://dasmz.com/?p=1342

为Linux系统,添加IPv6地址 2022-11-09

段落1、需求描述

购买了 Inception Hosting 官网 https://inceptionhosting.com 这家的一台服务器,购买的2.5欧元/月的款式,配置规格如下

2 CPU Core (Equal Share)
1024 MB Ram
20 GB Pure NVMe SSD Disk space
3000 GB Bandwidth @ 1 gbit (shared)
1 x IPv4 address
1 x /64 IPv6

它是有 1个IPv6地址,和 /64个IPv6地址,那就太棒了,给的IPv6地址,非常富足,可以随意折腾了

如下操作示范,以 Inception Hosting 官网 https://inceptionhosting.com 官方给的Ubuntu 20.04 系统环境下,执行命令,其他操作系统类似。

一般而言,默认的系统模板初始化的Linux系统,已经有1个IPv6地址的,如果想要添加更多,就需要自己操作修改。

信息:

分到的IPv6地址段  2a04:92c7:abcd:481::1/64
网关 2a04:92c7:abcd::1

段落2、增加IPv6地址到VPS的Linux系统

先临时添加2个在它/64地址段的其他IP地址

/sbin/ip addr add 2a04:92c7:abcd:481:2126:6232:4691:21f1/64 dev eth0
/sbin/ip addr add 2a04:92c7:abcd:481:5fe4:268e:d1b4:ece0/64 dev eth0

段落3、添加IPv6路由

/sbin/ip -6 route add 2a04:92c7:abcd::1 dev eth0
/sbin/ip -6 route add default via 2a04:92c7:abcd::1

其中的2a04:92c7:abcd::1是 2a04:92c7:abcd:0000:0000:0000:0000:0001的简写

可以测试一下,当前添加的2个IPv6地址,是否已通

段落4、删除IPv6地址

/sbin/ip addr del 2a04:92c7:abcd:481:2126:6232:4691:21f1/64 dev eth0
/sbin/ip addr del 2a04:92c7:abcd:481:5fe4:268e:d1b4:ece0/64 dev eth0

段落5、配置持续生效的增加IPv6地址

修改 /etc/network/interfaces 文件,新增2行增加IP地址的命令,其中up参数表示网络启动后执行

up ip addr add 2a04:92c7:abcd:481::78bc/64 dev eth0
up ip addr add 2a04:92c7:abcd:481:2126:6232:4691:21f1/64 dev eth0
up ip addr add 2a04:92c7:abcd:481:5fe4:268e:d1b4:ece0/64 dev eth0
up ip -6 route add 2a04:92c7:abcd::1 dev eth0
up ip -6 route add default via 2a04:92c7:abcd::1

附录1、

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Donate
云乞讨

附录2、配套的视频教程

000116. 前缀长度64的公网IPv6地址,给Ubuntu服务器增加公网IPv6地址  2022-11-09

本期博客地址 https://dasmz.com/?p=2879
本期视频地址 https://youtu.be/v7_vynGTNAo
博客地址 https://dasmz.com
Twitter  https://twitter.com/fdmove
全部视频的目录索引 https://dasmz.com/?p=1342

Linux版本选择,Ubuntu,CentOS等Linux发行版比较 2022-10-30

段落1、前言

日常涉及计算机领域的,都离不开Linux服务器,Linux以其优异的性能,对比Windows的轻资源占用,深受服务器领域的喜爱、采用。

那么对于普通的人而言,我们该怎么选择一个适合自己的Linux系统呢。

当你点开一个云服务器商家,开通云服务器的时候,操作系统该选择哪个呢

段落2、常见的Linux发行版本

  • Ubuntu: 基于Debian,适合用于编译,配套的依赖包很全,预装的软件多,对Linux新手友好,apt 包管理。常见版本 Ubuntu 18.04 LTS,Ubuntu 20.04 LTS,Ubuntu 22.04 LTS
  • Debian:适合有一定Linux基础,相比Ubuntu,需要更少的内存,更少的资源占用,apt 包管理。常见版本 Debian 9, Debian 10, Debian 11
  • Fedora:
  • CentOS:CentOS 其实相当于是RHEL企业版的免费,适合国内一些生产项目,有历史包袱的项目,如常见的CentOS 7,CenOS 8 版本,初始的Linux内核已偏旧,适合习惯于对应版本的执行操作的人群,yum /dnf包管理
  • OpenSUSE
  • RockyLinux:CentOS初始发起人,重新开的一个板子,习惯于CentOS的,可以选择。
  • SUSE:较大规模类企业,核心项目,订阅服务
  • RHEL:较大规模类企业,核心项目,订阅服务

段落3、Linux适合的场景推荐

1、对于刚刚接触Linux的小伙伴,特别是用习惯windows,这里比较推荐使用Ubuntu桌面版本,对于新手而言,比较容易适应。

2、对于从事IT工作,习惯于CentOS工作环境的,比较推荐使用CentOS / RockyLinux,两者使用习惯类似,容易上手,没有学习其他分支的压力。个别场景,对于CentOS 7 可能需要更换更新的Linux内核。

3、对于编译程序,交叉编译的场景,推荐使用多核的Ubuntu Server版本,比较好的依赖环境支持,编译一次嗦哈

4、对于云上,需一个简单可靠的Linux环境而已,且,有一定的动手能力,Linux基础,推荐使用新版本的Debian 11

5、涉及硬件的,如显卡,FPGA卡,需要校验驱动支持的,以硬件发行商,可支持的Linux版本为准

附录1

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者

Donate
云乞讨

附录2、配套的视频教程

000115. 常见Linux发行版本,开云主机的时候,系统选择 2022-10-30

本期博客地址 https://dasmz.com/?p=2861
本期视频地址 https://youtu.be/rthJwTcCp0A
博客地址 https://dasmz.com
全部视频的目录索引 https://dasmz.com/?p=1342

宽带里获取到的IPv6地址 2022-10-23

上海电信宽带里,获取到的IPv6地址

先看看IPv4地址的信息

协议: DHCPv6 客户端
分发前缀: 240e:128:7139:ba00::/56
地址: 240e:12f:5181:13a9:c38b:4682:1ba1:66a6/64
网关: fe80::ce1a:faff:feed:5540
DNS 1: 240e:58:c000:1000:116:228:111:118

1、协议是 DHCPv6 Client 客户端

2、DHCPv6-PD 分发前缀 240e:128:7139:ba00::/56 ,这里需要知道,都是十六进制的符号,每个:分隔的,比如240e,长度都是 16 bit位

IPv6支持缩写的表达,比如240e:128:7139:ba00::/56,中的128,其实完整写法是 240e:0128:7139:ba00::/56

也支持连续0的缩写,如240e:0128:7139:ba00:0000:0000:0000:0001可缩写为 240e:128:7139:ba00::1

故而,240e:128:7139:ba00::/56 表示的网络为 240e:128:7139:ba

/56 可供分 16个/60的子网,/56 可供分 256个/64的子网,不同子网可以用来承载不同的业务

通常的分配规则为

/48 分配给企业宽带客户
/56 分配给家庭宽带客户,小型办公宽带客户
/64 分配给家庭路由器终端

/126 特殊,一般用于点对点链路,类似于IPv4中为点对点链路分配的/30,专线类业务

3、IPv6地址 240e:12f:5181:13a9:c38b:4682:1ba1:66a6/64

根据刚刚的缩写,它完整的表达应该为

240e:012f:5181:13a9:c38b:4682:1ba1:66a6/64

其中,240e,表示电信宽带

# 常见运营商的IPv6前缀
中国电信IPv6前缀 240e::/20
中国联通IPv6前缀 2408:8000::/20
中国广电IPv6前缀 240a:4000::/21
中国移动IPv6前缀 2409:8000::/20

路由器下方的电脑/手机设备,如果配置正确,可以获取到IPv6的公网地址

inet6 240e:128:7139:ba00::859/128 scope global dynamic noprefixroute 
inet6 240e:128:7139:ba00:4234:c25d:bf20:8337/64 scope global temporary dynamic 
inet6 240e:128:7139:ba00:ac60:cd0d:6df6:b994/64 scope global dynamic mngtmpaddr noprefixroute
IPv6地址作用域和地址分类
IPv6地址指定给接口,一个接口可以指定多个地址。
IPv6地址有作用域:
link local 地址 本链路有效
site local 地址 本区域(站点)内有效,一个site通常是个校园网
global 地址 全球有效,即可汇聚全球单播地址

IPv6地址分类:
unicast 单播(单点传送)地址
multicast 组播(多点传送)地址
anycast 任播(任意点传送)地址

IPv6没有定义广播地址,其功能由组播地址替代
::/128 即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口。
::1/128 即0:0:0:0:0:0:0:1,回环地址,相当于IPv4中的localhost(127.0.0.1),ping locahost可得到此地址。
2001::/16 全球可聚合地址,由 IANA 按地域和ISP进行分配,是最常用的IPv6地址,属于单播地址。
2002::/16 6 to 4 地址,用于6to4自动构造隧道技术的地址,属于单播地址。
3ffe::/16 早期开始的IPv6 6bone试验网 地址,属于单播地址。
fe80::/10 本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发以fe80开头的地址。
ff00::/8 组播地址。
::A.B.C.D 兼容IPv4的IPv6地址,其中<A.B.C.D>代表IPv4地址。自动将IPv6包以隧道方式在IPv4网络中传送的IPv4/IPv6节点将使用这些地址。
::FFFF:A.B.C.D 是IPv4映射过来的IPv6地址,其中<A.B.C.D>代表IPv4地址,例如 ::ffff:202.120.2.30 ,它是在不支持IPv6的网上用于表示IPv4节点。
ip address add   # 此命令用于新增ip地址

option:

dev IFNAME:要将地址添加到的设备的名称

local ADDRESS (default):ip地址,地址的格式取决于协议

peer ADDRESS:点对点接口的远程端点的地址。 同样,ADDRESS后面可以跟一个斜杠和一个十进制数,对网络前缀长度进行编码。 如果指定了对等地址,则本地地址不能具有前缀长度。 网络前缀与对等方而不是与本地地址相关联。

broadcast ADDRESS:接口上的广播地址。 可以使用特殊符号“ +”和“-”代替广播地址。 在这种情况下,广播地址是通过设置/重置接口前缀的主机位得出的。

label LABEL:每个地址都可以用标签字符串进行标记。为了保持与Linux-2.0网络别名的兼容性,此字符串必须与设备名称一致,或者必须以设备名称的前缀后跟冒号

scope SCOPE_VALUE:此地址有效的区域的范围。可用的作用域列在/etc/iproute2/rt_scopes文件中。预定义的范围值包括:

global:地址全局有效

site:地址是站点本地地址,即在该站点内有效

link:该地址是本地链接,即仅在此设备上有效

host:地址仅在此主机内有效

valid_lft LFT:此地址的有效生存期;请参阅RFC 4862第5.5.4节。当它过期时,该地址将被内核删除。默认为“永远”

preferred_lft LFT:该地址的首选生存时间; 请参阅RFC 4862的5.5.4节。到期后,该地址将不再用于新的传出连接。 默认为永远

home:(仅IPv6)将此地址指定为RFC 6275中定义的“本地地址”

mngtmpaddr:(仅IPv6)代表“隐私扩展”(RFC3041)使内核将以此地址创建的临时地址作为模板进行管理。 为了使它生效,必须将use_tempaddr sysctl设置设置为大于零的值。 给定地址的前缀长度必须为64。此标志允许在手动配置的网络中使用隐私扩展,就像无状态自动配置处于活动状态一样。内核会从原本的IPv6地址计算生成一个临时地址。在连接远程服务器时,系统会优先选择这个地址以隐藏原来的地址

nodad: (仅限IPv6)添加此地址时不执行重复地址检测(RFC 4862)

noprefixroute:不要为添加的地址的网络前缀自动创建路由,并且不要在删除地址时搜索要删除的路由

键盘按键可视化显示工具 keyviz 2022-10-18

段落1、需求描述

录制技术视频的时候,有些组合按键,单独语音介绍,可能很多观众听不明白,如果能同步跟视频显示出来按键组合,则对于技术视频的观众而言,是个不错的方式

段落2、项目地址

https://github.com/mulaRahul/keyviz

段落3、安装使用

直接到它的release页面,进行下载 https://github.com/mulaRahul/keyviz/releases

在它的设置页面,可以调整它显示的位置,按键显示的风格,这个根据自身喜好调整即可,调整完配置,记得重启一下软件

段落4、其他说明

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者,金额随意

Donate
云乞讨