首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,517 阅读
2
推荐31个docker应用,每一个都很实用
1,314 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
935 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
264
篇与
的结果
2024-01-29
使用 FFmpeg 为视频添加字幕
编入视频流(内嵌字幕|硬字幕)要在视频流上面加上字幕,就得使用一个叫做 subtitles 的滤镜,要使用这个滤镜,在命令中写上 -vf subtitles=字幕文件名 ,还是要注意,如果文件名包含空格或其他特殊字符,得用半角引号包起来:-vf subtitles="字幕 文件名"。因为这个操作改写了视频流,所以视频流必须得重新编码。使用 subtitles 滤镜为视频添加字幕(将字幕合成到视频流中,输出文件中不含字幕流):ffmpeg -i input.mkv -vf subtitles=subtitles.srt output.mkv将 input.mkv 中的字幕(默认)嵌入到 output.mp4 文件ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4将 input.mkv 中的字幕(第二个)嵌入到 output.mp4 文件ffmpeg -i input.mkv -vf subtitles=input.mkv:si=1 output.mp4关于 [subtitles] 滤镜的详细用法:http://ffmpeg.org/ffmpeg-all.html#subtitles-1还可以使用 ass滤镜 ,用法和 subtitles 滤镜几乎一样,但它只用于 ASS (Advanced Substation Alpha) 字幕文件,可以先进行字幕转换,再使用它:ffmpeg -i subtitles.srt subtitles.assffmpeg -i input.mkv -vf ass=subtitles.ass output.mp4关于 ass滤镜 的说明:http://ffmpeg.org/ffmpeg-all.html#ass在实际使用中发现 ass 和 subtitles 最终效果并无区别,但 ass 只能使用 ASS 字幕文件,不可以直接使用容器中的字幕流,所以直接使用 subtitles 即可,省去了手动提取和转换的过程。作为字幕流(内封字幕|软字幕)将字幕封装到容器中,就是所谓的字幕流,和视频流、音频流同等地位。值得说明的是,并非所有的容器都支持字幕流,先进的 MKV 是支持的,MP4 目前我只知道支持苹果的 MOV text。MKV 封装工具: MKVToolNix MKV 提取工具: gMKVExtractGUI 使用图形化工具更方便。以下都是废话将字幕封装到容器中ffmpeg -i input.mkv -i subtitles.srt -c copy output.mkv从容器中提取字幕流ffmpeg -i input.mkv output.srt例子中生成的是 srt 格式的,可以任意生成所需的格式,改一下扩展名即可。参考:Windows 下使用 ffmpeg 为视频添加字幕使用 FFmpeg 将字幕文件集成到视频文件如何使用 FFmpeg 进行视频转码:字幕
2024年01月29日
26 阅读
0 评论
0 点赞
2024-01-29
使用Ubuntu|Debian的 UFW 禁止 ICMP 协议访问(禁 ping)
打开 UFW 配置文件vim /etc/ufw/before.rules修改配置允许 ping-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT禁止 ping-A ufw-before-input -p icmp --icmp-type echo-request -j DROP让配置生效ufw reload
2024年01月29日
73 阅读
0 评论
0 点赞
2024-01-29
Termux 使用教程 #2 - 打造手机上的最强终端
前言虽然 Termux 下载安装后就直接可以使用了,但是为了让它用起来更顺手、看起来更顺眼,我进行了一系列的客制化操作。自定义扩展功能按键默认的功能按键实在是太简陋,连左右方向键都没有,使用起来并不方便。好在可以通过 ~/.termux/termux.properties 这个配置文件对按键进行定制。如果想设置成这样,可以在配置文件中添加如下内容:extra-keys = [['ESC','/','-','HOME','UP','END','PGUP','DEL'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN','BKSP']]作为一个懒人,通常我都会一键操作:mkdir -p ~/.termux && echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP','DEL'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN','BKSP']]" > ~/.termux/termux.properties最后输入以下命令重载配置,或者关闭应用再打开。termux-reload-settings更换国内软件源默认情况下软件包下载的速度非常慢,可以通过更换国内的软件源来加快软件包下载速度。为了防止修改出错,先备份源列表文件:cp $PREFIX/etc/apt/sources.list $PREFIX/etc/apt/sources.list.bak出错还原方法:cp $PREFIX/etc/apt/sources.list.bak $PREFIX/etc/apt/sources.list使用 sed 命令一键修改:sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux stable main@' $PREFIX/etc/apt/sources.list也可以输入 apt edit-sources 手动编辑源文件。将默认的官方源替换为清华大学的镜像源 https://mirrors.tuna.tsinghua.edu.cn/termux 。检查修改:$ cat $PREFIX/etc/apt/sources.list # The main termux repository: #deb https://dl.bintray.com/termux/termux-packages-24 stable main deb https://mirrors.tuna.tsinghua.edu.cn/termux stable main最后更新一下:pkg up如果卡进度条了,退出 Termux 的进程,重新打开,并运行 dpkg --configure -a 即可修复。安装常用工具安装一些基本的常用工具,方便后续的折腾。pkg i -y git curl wget tree vim nano tmux htop安装和配置 Oh My ZshOh My Zsh will not make you a 10x developer...but you may feel like one.上面那句话来自 Oh My Zsh README ,意思是 “装逼是第一生产力”。我使用 Oh My Zsh 倒不是为把终端搞得花里胡哨去装逼,作为一个实用主义者,我非常喜欢自动建议、补全和代码高亮功能,这极大的提高了终端的输入效率。所以不管什么平台,都会安装 Oh My Zsh 。安装 zshpkg i -y zsh安装 Oh My Zsh使用 curl 下载安装sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"使用 wget 下载安装sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"Oh My Zsh 安装完成后会提示你设置 zsh 为默认 sehll 。如果没有提示,输入下面的命令进行设置:chsh -s zsh修改 Oh My Zsh 主题Oh My Zsh 有很多内置主题,只需要修改配置文件即可启用。也可以选择安装 外置主题 。我使用的主题是 ys ,简单实用,不花里胡哨。使用 sed 命令一键修改:sed -i '/^ZSH_THEME=/c\ZSH_THEME="ys"' ~/.zshrc修改后输入下面的命令刷新配置就可以看到效果:source ~/.zshrc安装 Oh My Zsh 插件安装 zsh-syntax-highlighting (代码高亮)git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting安装 zsh-autosuggestions (自动建议)git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions安装 zsh-completions(自动补全)git clone https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completionszsh-completions 插件还需把 autoload -U compinit && compinit 添加到 .zshrc 。输入命令可一键添加:[ -z "`grep "autoload -U compinit && compinit" ~/.zshrc`" ] && echo "autoload -U compinit && compinit" >> ~/.zshrc把需要启用的插件写入到配置文件中,使用 sed 命令一键操作。sed -i '/^plugins=/c\plugins=(git z zsh-syntax-highlighting zsh-autosuggestions zsh-completions)' ~/.zshrc如果你有自己想添加的插件,写在括号内即可,插件名称用空格隔开。最后应用配置source ~/.zshrc修改终端配色修改配色需要安装 Termux:Styling 这个插件,安装好后长按屏幕,进入 More... 菜单,选择 Style 就可以对配色和字体进行设置。这在上篇文章中介绍菜单和选项时有提到过。选择好你自己喜欢的配色和字体,设置好后会在 ~/.termux 目录中生成配色文件 colors.properties 和字体文件 font.ttf ,可以把这两个文件进行备份,以后只需要导入即可,就不再需要安装这个插件了。$ tree ~/.termux /data/data/com.termux/files/home/.termux ├── colors.properties ├── font.ttf ├── shell -> /data/data/com.termux/files/usr/bin/zsh └── termux.properties修改启动页面的问候语刚接触 Termux 时这些信息会对使用有帮助,但随着对 Termux 的深入了解,和人类本能的控制欲,肯定会想把它换掉,我发现多数小伙伴都会使用自己的 ID 以大字体的方式呈现。vi $PREFIX/etc/motd而对于我这种崇尚极简主义的人来说,选择让它不显示。touch ~/.hushlogin最后Termux 给我的第一印象是好难用,连左右方向键都没有,差点就卸载了。因为最近在研究路由器,于是就尝试在 Termux 中输入 pkg install iperf3 来安装 iPerf3 ,没想到装上了,然后就拿着手机满屋子测 WiFi 吞吐量。这也使我对它产生了兴趣,后来慢慢开始深入了解,一发不可收拾,也促使我进行了客制化的尝试。
2024年01月29日
327 阅读
0 评论
0 点赞
2024-01-29
Termux 使用教程 #1 - Android 手机安装 Linux
前言Termux 是一个 Android 下的终端模拟器,可以在手机上模拟 Linux 环境。它是一个手机 App,可以从应用商店直接下载安装,打开就能使用,它提供一个命令行界面,让用户与系统交互。它支持 apt 软件包管理,可以十分方便安装软件包,而且完美支持 Python 、 PHP 、 Ruby 、 Go 、 Nodejs 、 MySQL 等工具。随着智能设备的普及和性能的不断提升,如今手机、平板等设备的硬件标准已经直逼入门级桌面计算机,使用 Termux 完全可以把手机变成一个强大的小型服务器。你甚至可以使用 Termux 通过 Nmap、Sqlmap、BBScan、subDomainsBrute、Hydra、RouterSploit 等工具实现端口扫描、注入检测、子域名爆破、多协议弱口令爆破、路由器漏洞检测框架多种功能,把手机打造成一个随身携带的渗透神器,成为现实版的艾登・皮尔斯。下载安装官方推荐从 F-Droid 和 Google Play 这两个平台下载,安装完打开就是下面这个样子。基本操作俗话说” 会跑之前,要先学会走 “,先了解基本操作,以后搞一些骚操作就轻而易举了。选项和菜单长按屏幕会出现可选择的复制光标,同时会显示 Copy(复制)、Paste(粘贴)、More...(更多)这几个选项。点击 More... 进入到下一级菜单。长按屏幕├── COPY: 复制├── PASTE: 粘贴├── More: 更多 ├── Select URL: 选择 URL └── Share transcipt: 传输当前会话的所有输出(通过Android api) └── Reset: 重置 └── Kill process: 杀掉当前终端会话进程 └── Style: 风格配色(需安装 Termux:Styling 插件) └── Keep screen on: 保持屏幕开启 └── Help: 帮助文档(Termux Wiki)从左侧屏幕边缘向右滑动可以拖出导航栏,在这里可以新建、切换、重命名会话 (session) 和调出输入法。常用快捷键在使用终端时,需要使用到 Alt、Ctrl、Esc 等键,但手机上并没有这些键。Termux 中可以使用音量减按钮来模拟 Ctrl 键。例如,音量减 +L 相当于在键盘上按下 Ctrl+L。以下是一些在终端中常用的快捷键,同样适用于 Termux 中。Ctrl+A -> 光标移动到开始位置Ctrl+E -> 光标移动到最末尾Ctrl+K -> 剪切此处至末尾的所有内容Ctrl+U -> 剪切此处至开始的所有内容Ctrl+W -> 剪切此处到左边的单词Ctrl+Y -> 粘贴由Ctrl + U、Ctrl + D、Ctrl + W剪切的单词Ctrl+L -> 相当于clear命令,清屏Ctrl+C -> 终止进程/命令Ctrl+D -> 关闭终端Ctrl+Z -> 挂起(发送 SIGTSTP 到)当前进程音量加按钮可以作为产生特定输入的特殊键,可以粗略的理解为笔记本电脑上的 Fn 键。音量加+E -> Esc键音量加+T -> Tab键音量加+1 -> F1键(音量增加 + 2相当于F2,以此类推)音量加+0 -> F10键音量加+B -> Alt+B,使用readline时返回一个单词音量加+F -> Alt+F,使用readline时转发一个单词音量加+X -> Alt+X音量加+W -> 向上箭头键音量加+A -> 向左箭头键音量加+S -> 向下箭头键音量加+D -> 向右箭头键音量加+L -> |(管道字符)音量加+H -> 〜(波浪号字符)音量加+U -> _(下划线字符)音量加+P -> Page Up键(上一页)音量加+N -> Page Down键(下一页)音量加+. -> Ctrl +\(SIGQUIT)音量加+V -> 显示音量控制音量加+Q -> 显示额外的按键视图音量加+K -> 同上扩展功能按键前面提到 Termux 可以使用音量键来实现快捷键操作,个人感觉使用音量键不是很不方便。Termux 还提供屏幕扩展功能按键。可以使用音量加 +Q 或者音量加 +K 可以显示和隐藏。此外,功能按键向左滑动可以调出文本输入框,可以更方便的粘贴和对待输入的指令进行更精细的修改。软件包管理Termux 除了支持 apt 命令外,还在此基础上封装了 pkg 命令,pkg 命令向下兼容 apt 命令。官方建议使用 pkg 命令,因为它会在安装或升级包时会自动更新 apt 列表,也就是说执行 pkg upgrade 相当于执行了 apt update && apt upgrade,简化了操作流程。命令 作用pkg search 搜索包pkg install 安装包,简写pkg ipkg uninstall 卸载包pkg reinstall 重新安装包pkg update / pkg upgrade 升级软件包,简写pkg uppkg list-all 列出可供安装的所有包pkg list-installed 列出已经安装的包pkg shoe 显示某个包的详细信息pkg files 显示某个包的相关文件夹路径Termux 与标准 Linux 目录结构的区别与大多数 Linux 发行版不同,Termux 不遵循文件系统层次结构标准,你无法在标准路径找到 /bin、/etc、/usr、/tmp 等目录。为了方便,Termux 提供了一个特殊的环境变量: PREFIX ,它相当于 /usr 目录。$ tree -d -L 1 $PREFIX /data/data/com.termux/files/usr ├── bin ├── etc ├── include ├── lib ├── libexec ├── share ├── src ├── tmp └── var此外用户主目录也在非常规位置。$ echo $HOME /data/data/com.termux/files/home由于没有 root 权限,想对根目录进行操作是不可能的。$ ls / ls: cannot open directory '/': Permission denied对此可以安装 proot ,并使用 termux-chroot 命令可以模拟 root 环境与标准的 Linux 目录结构。$ pkg i -y proot $ termux-chroot $ ls / bin data dev etc home lib proc root sbin share storage system tmp usr var vendor $ ls /usr bin etc include lib libexec share src tmp var这对某些必须要用到标准路径的一些程序会非常有用。root 权限前面提到的 proot 毕竟是模拟的方式,会有一定的局限性。如果手机已经 root ,在 Termux 中使用 su 虽然可以切换为 root 用户,但是会有一些 Termux 的命令无法正常使用,毕竟这不是一个标准的 Linux 环境。解决方案是安装 tsu 来获取 root 权限,tsu 是 Termux 中的 su 替代方案。安装 tsu:pkg i -y tsu使用 root 权限执行命令:tsudo command切换到 root 用户:tsu在 root 用户下,输入 exit 命令或者按 Ctrl+D 可以回到普通用户。访问外部存储Termux 默认只能访问自身内部的数据,如果要访问手机中其它的数据,输入下面的命令后,手机弹出对请求权限的窗口,允许即可。termux-setup-storage这个操作将创建 $HOME/storage 目录,此目录中的子目录将通过符号链接到手机存储中的一些常用目录。$ tree storage storage ├── dcim -> /storage/emulated/0/DCIM ├── downloads -> /storage/emulated/0/Download ├── movies -> /storage/emulated/0/Movies ├── music -> /storage/emulated/0/Music ├── pictures -> /storage/emulated/0/Pictures └── shared -> /storage/emulated/0此外还可以通过 /sdcard 来访问外部存储的根目录。SSH 连接作为 Linux 终端或者服务器,SSH 都是必须的。不管你是 SSH 连接到 Termux ,还是使用 Termux 去连其它主机,都需要先安装 openssh 。pkg i -y opensshTermux 使用 SSH 连接其它主机基本操作,ssh 命令:ssh User@Host -p PortSSH 连接到 Termux手机操作起来毕竟束缚太多,在电脑上通过 SSH 连接再进行操作是一件非常优雅的事情。设置密码:passwd查看用户名:whoami由于 Termux 是单用户环境,所以这个步骤不是必须的。使用任何用户名都可以进行登录。启动 SSH 服务端:sshdSSH 服务端程序默认是不启动的,且每次应用关闭再打开也需要再次启动。后面会讲如何自启 SSH 服务端。集齐 SSH 三要素,现在可以在电脑终端中输入 ssh 命令或者使用其它 SSH 客户端进行连接了。需要注意的是 Termux 的 SSH 端口是 8022 。ssh User@Host -p 8022执行 ssh 命令后,输入密码就可以连上了,然后就可以在电脑上方便的进行各种骚操作了。SSH 服务端(sshd)自启如果不想每次 ssh 连接 Termux 前去输入 sshd 命令可以设置自启。sshd 自启分两种情况,一种是打开 Termux 应用时自启,还有一种是手机开机后自启。打开应用时自启 SSH 服务端把 sshd 命令添加到 Shell 配置文件中即可,比如我使用的是 zsh ,那么就添加到 ~/.zshrc 中。如果是 bash ,那么就添加到 ~/.bashrc 。echo "sshd" >> ~/.zshrc手机开机后自启 SSH 服务端首先安装 Termux:Boot 插件,安装后给予该插件开机启动的权限,这样 Termux 就可以在开机后自启了。创建 ~/.termux/boot/ 目录(这个目录中放置的脚本会在开机启动 Termux 后执行)。mkdir -p ~/.termux/boot/在该目录中新建一个脚本,命名为 start-sshd ,把 sshd 命令添加到这个文件中即可。echo 'termux-wake-lock; sshd' > ~/.termux/boot/start-sshdtermux-wake-lock 命令可防止手机休眠导致 Termux 应用的进程被冻结。设置完成后,手机开机会自动启动 Termux ,并开启 SSH 服务端。
2024年01月29日
396 阅读
0 评论
0 点赞
2024-01-29
Watchtower - 自动更新 Docker 镜像与容器
前言Docker 容器的部署有一种在手机上装 App 的感觉,但 Docker 容器并不会像手机 App 那样会自动更新,而如果我们需要更新容器一般需要以下四个步骤:停止容器:docker stop 删除容器:docker rm 更新镜像:docker pull 启动容器:docker run ... 停止容器这个步骤可以在删除容器时使用 -f 参数来代替,即使这样还是需要三个步骤。如果部署了大量的容器需要更新使用这种传统的方式工作量是巨大的。Watchtower 是一个可以实现自动化更新 Docker 基础镜像与容器的实用工具。它监视正在运行的容器以及相关的镜像,当检测到 registry 中的镜像与本地的镜像有差异时,它会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器,一切好像什么都没发生过,就像更新手机上的 App 一样。快速开始Watchtower 本身被打包为 Docker 镜像,因此可以像运行任何其他容器一样运行它:docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower然后所有容器都会自动更新,也包括 Watchtower 本身。自动清除旧镜像官方给出的默认启动命令在长期使用后会堆积非常多的标签为 none 的旧镜像,如果放任不管会占用大量的磁盘空间。要避免这种情况可以加入 --cleanup 选项,这样每次更新都会把旧的镜像清理掉。docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --cleanup--cleanup 选项可以简写为 -c:docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c选择性自动更新某些容器可能需要稳定的运行,经常更新或重启可能会造成一些问题,这时我们可以使用一些选项参数来选择与控制容器的更新。容器更新列表假设我们只想更新 nginx、redis 这两个容器,我们可以把容器名称追加到启动命令的最后面,就像下面这个例子:docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ nginx redis博主觉得把需要更新的容器名称写在启动命令中不利于管理,于是想了个更好的方法,建立一个更新列表文件。$ cat ~/.watchtower.list aria2-pro unlockmusic mtg ...通过变量的方式去调用这个列表:docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ $(cat ~/.watchtower.list)这样只需要调整列表后删除 Watchtower 容器并重新执行上面的命令重新启动 Watchtower 即可。设置单个容器自动更新特征给容器中添加 com.centurylinklabs.watchtower.enable 这个 LABEL 并设置它的值为 false,或者在启动命令中加入 --label com.centurylinklabs.watchtower.enable=false 参数可以排除相应的容器。下面这个例子是博主的 openwrt-mini 镜像的容器启动命令,Watchtower 将永远忽略它的更新,即使它包含在自动更新列表中。docker run -d \ --name openwrt-mini \ --restart always \ --network openwrt \ --privileged \ --label com.centurylinklabs.watchtower.enable=false \ p3terx/openwrt-mini \ /sbin/init当容器启动命令中加入 --label com.centurylinklabs.watchtower.enable=true 参数,并且给 Watchtower 加上 --label-enable 选项时,Watchtower 将只更新这些包含此参数的容器。docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --label-enable--label-enable 可以简写为 -e:docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -ce因为需要在容器启动时进行设置,且设置后就无法直接更改,只能重建容器,所以这种方式的灵活性不如更新列表法。尤其是在设置 com.centurylinklabs.watchtower.enable=false 参数后容器将永远被 Watchtower 忽略,也包括后面将要提到的手动更新方式,所以一般不推荐这样做,除非你愿意手动重建的原生方式更新。设置自动更新检查频率默认情况下 Watchtower 每 5 分钟会轮询一次,如果你觉得这个频率太高了可以使用如下选项来控制更新检查的频率,但二者只能选择其一。--interval, -i - 设置更新检测时间间隔,单位为秒。比如每隔 1 个小时检查一次更新:docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --interval 3600--schedule, -s - 设置定时检测更新时间。格式为 6 字段 Cron 表达式,而非传统的 5 字段,即第一位是秒。比如每天凌晨 2 点检查一次更新:docker run -d \ --name watchtower \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --schedule "0 0 2 * * *"手动更新前面的使用方式都是让 Watchtower 以 detached(后台)模式在运行并自动更新容器,而 Watchtower 也支持以 foreground(前台)模式来使用,即运行一次退出并删掉容器,来实现手动更新容器。这对于偶尔更新一次那些不在自动更新列表中的容器非常有用。对于 foreground 模式,需要加上 --run-once 这个专用的选项。下面的例子 Docker 会运行一次 Watchtower 并检查 aria2-pro 容器的基础镜像更新,最后删掉本次运行创建的 Watchtower 容器。docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -c \ --run-once \ aria2-pro--run-once 可以简写为 -R:docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower -cR \ aria2-pro需要注意的是当这个容器设置过 com.centurylinklabs.watchtower.enable=false 参数时不会更新。最后以上是博主在使用 Watchtower 中总结的一些使用方式和方法,当然它还有一些其它的功能与使用方式,比如电子邮件通知、监视私人注册表的镜像、更新远程主机上的容器等,这些对于一般用户来说可能很少会用到,所以这里就不赘述了,感兴趣的小伙伴可以去研究 Watchtower 官方文档 。
2024年01月29日
19 阅读
0 评论
0 点赞
2024-01-29
Cloudflare WARP 教程:给 VPS 额外添加“原生” IPv4/IPv6 双栈网络出口
前言Cloudflare WARP (简称 WARP) 是 Cloudflare 提供的一项基于 WireGuard 的网络流量安全及加速服务,能够让你通过连接到 Cloudflare 的边缘节点实现隐私保护及链路优化。早年有很多小伙伴拿来当梯子工具来直接使用,应该很熟悉了。不过由于 WireGuard 数据传输使用的 UDP 协议,中国大陆的网络运营商会对其进行 QoS ,加上很多节点的 IP 被封锁,现在可以说几乎处于不可用的状态了。而对于自由网络的地区来说则没有这些限制,加上有开发者制作的开源工具可以生成通用的 WireGuard 配置文件,这使得我们可以在安装了某科学的上网工具的国外 VPS 上部署它,并实现一些骚操作。本篇是相关知识科普和纯手动部署教程,小伙伴们可边学习边折腾。如果想直接部署可以使用本站全网独家首发的 Cloudflare WARP 一键安装脚本 。WARP 的使用场景和局限性使用场景:WARP 网络出入口均为双栈 (IPv4+IPv6),因此单栈 VPS 云服务器可以连接到 WARP 网络来获取额外的网络连通性支持:IPv6 Only VPS 可获得 IPv4 网络的访问能力,不再局限于 NAT64/DNS64 的束缚,能自定义任意 DNS 解析服务器,这对使用某科学的上网工具有奇效。IPv4 Only VPS 可获得 IPv6 网络的访问能力,比如可作为 IPv6 Only VPS 的 SSH 跳板。WARP 的 IPv6 网络的质量比 HE IPv6 Tunnel Broker 及 VPS 自带的都要好,很少绕路,可作为本机 IPv6 网络的替代。WARP 对外访问网络的出口 IP 被很多网站视为真实用户,获得原生 IP 或私人家庭住宅 IP 的效果,可以解除某些网站基于 IP 的封锁限制:解锁 Netflix 非自制剧 (几乎失效,原因详见《为什么 WARP 解锁 Netflix 失效了?》)解决 Google 搜索流量异常频繁跳出人机身份验证的问题解决无法打开 Google Scholar (谷歌学术) 403 访问限制的问题解决 Google 的 IP 定位漂移到中国(送中),无法使用 YouTube Premium 的问题解锁 ChatGPT 访问限制(Access denied/1020)的问题 (仅限已开放服务的地区)。注意:实际使用不稳定,且有封号的风险。建议使用可安全访问并解锁 ChatGPT 的 VPS。局限性:WARP 是以 NAT 的方式去访问外部网络,网络出口 IP 由 Cloudflare 根据地区随机分配且为多人共用,只能用于对外网络访问,不能从外部访问 VPS 。可以理解为连上了由 Cloudflare 提供的大内网。TIPS: 如果是需要可从外部访问 VPS 的公网 IPv6 地址可使用 HE IPv6 Tunnel Broker 解决,而 IPv4 地址只能加钱找商家买。滥用严重。WARP 一直有着各种滥用和不规范使用的情况,比如注册僵尸账号、暴力发包网络攻击,随着时间的推移已经被很多 IP 评级机构列为不可信状态,大量 IP 段已经被拉黑。未来解除 IP 封锁限制的作用会越来越少,反而越来越多的网站对其设访问限制。IP 万人骑。WARP 多人共用一个网络出口 IP 是相当大的量级,在热门地区几万甚至十几万人共用一个 IP 都是有可能的。很多网站会设单 IP 访问频率限制来阻止网络攻击、防止资源滥用。所以使用 WARP 访问有严格限制的网站被屏蔽、无法注册、甚至封号未来可能会是常态。随着使用人数的增加减速效果越来越明显,尤其在网络高峰时段,热门地区甚至到了几乎不可用的状态。WARP 设置教程安装 WireGuard既然 WARP 基于 WireGuard ,那么我们首先就需要安装 WireGuard 。使用一键脚本来安装:bash <(curl -fsSL git.io/warp.sh) wg使用 wgcf 生成 WireGuard 配置文件ViRb3/wgcf 是 Cloudflare WARP 的 非官方 CLI 工具 ,它可以模拟 WARP 客户端注册账号,并生成通用的 WireGuard 配置文件。安装 wgcfcurl -fsSL git.io/wgcf.sh | sudo bash注册 WARP 账户 (将生成 wgcf-account.toml 文件保存账户信息)wgcf register生成 WireGuard 配置文件 (wgcf-profile.conf)wgcf generate生成的两个文件记得备份好,尤其是 wgcf-profile.conf ,万一未来工具失效、重装系统后可能还用得着。编辑 WireGuard 配置文件将配置文件中的节点域名 engage.cloudflareclient.com 解析成 IP。不过一般都是以下两个结果:162.159.192.1 2606:4700:d0::a29f:c001这样做是因为后面的操作要根据 VPS 所配备的网络协议的不同去选择要连接 WARP 的节点是 IPv4 或 IPv6 协议。IPv4 Only 服务器添加 WARP IPv6 网络支持将配置文件中的 engage.cloudflareclient.com 替换为 162.159.192.1 ,并删除 AllowedIPs = 0.0.0.0/0 。即配置文件中 [Peer] 部分为:[Peer] PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= AllowedIPs = ::/0 Endpoint = 162.159.192.1:2408原理:AllowedIPs = ::/0 参数使得 IPv6 的流量均被 WireGuard 接管,让 IPv6 的流量通过 WARP IPv4 节点以 NAT 的方式访问外部 IPv6 网络。此外配置文件中默认的 DNS 是 1.1.1.1,博主实测其延迟虽然很低,但因为缺少了 ECS 功能所以解析结果并不理想。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),建议小伙伴们请根据实际情况来进行替换,或者直接删除 DNS 这行。以下配置供参考:DNS = 8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844IPv6 Only 服务器添加 WARP IPv4 网络支持将配置文件中的 engage.cloudflareclient.com 替换为 [2606:4700:d0::a29f:c001] ,并删除 AllowedIPs = ::/0 。即配置文件中 [Peer] 部分为:[Peer] PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= AllowedIPs = 0.0.0.0/0 Endpoint = [2606:4700:d0::a29f:c001]:2408原理:AllowedIPs = 0.0.0.0/0 参数使得 IPv4 的流量均被 WireGuard 接管,让 IPv4 的流量通过 WARP IPv6 节点以 NAT 的方式访问外部 IPv4 网络。此外配置文件中默认的 DNS 是 1.1.1.1,由于是 IPv4 地址,故查询请求会经由 WARP 节点发出。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),为了防止当节点发生故障时 DNS 请求无法发出,建议替换为 IPv6 地址的 DNS 优先,或者直接删除 DNS 这行。以下配置供参考:DNS = 2001:4860:4860::8888,2001:4860:4860::8844,8.8.8.8,8.8.4.4WARP 双栈全局网络置换WARP 双栈全局网络是指 IPv4 和 IPv6 都通过 WARP 网络的出口对外进行网络访问,实际上默认生成的 WireGuard 配置文件就是这个效果。不过默认的配置文件没有外部对本机 IP 访问的相关路由规则,一旦直接使用 VPS 就会直接失联,所以我们还需要对配置文件进行修改。路由规则需要添加在配置文件的 [Interface] 和 [Peer] 之间的位置,以下是路由规则示例:[Interface] ... PostUp = ip -4 rule add from <替换IPv4地址> lookup main PostDown = ip -4 rule delete from <替换IPv4地址> lookup main PostUp = ip -6 rule add from <替换IPv6地址> lookup main PostDown = ip -6 rule delete from <替换IPv6地址> lookup main [Peer] ...TIPS: 包含<>(尖括号)的部分一起替换掉,这只是为了看起来明显。替换配置中的 IP 地址部分为 VPS 的公网 IP 地址,如果 IDC 提供的是 VPC 内网方案则需要替换为内网 IP 。像 AWS 、Azure 、Google Cloud 、Oracle Cloud 等大厂都是 VPC 内网方案,内网地址一般会在网页面板有提供。如果不确定是哪种网络方案,输入 ip a | grep <公网IP地址> 看是否有显示,没有那么就说明是 VPC 内网方案。启用 WireGuard 网络接口将 WireGuard 配置文件复制到 /etc/wireguard/ 并命名为 wgcf.conf 。sudo cp wgcf-profile.conf /etc/wireguard/wgcf.conf开启网络接口(命令中的 wgcf 对应的是配置文件 wgcf.conf 的文件名前缀)。sudo wg-quick up wgcf执行执行 ip a 命令,此时能看到名为 wgcf 的网络接口,类似于下面这张图:执行以下命令检查是否连通。同时也能看到正在使用的是 Cloudflare 的网络。# IPv4 Only VPS curl -6 ip.p3terx.com # IPv6 Only VPS curl -4 ip.p3terx.com测试完成后关闭相关接口,因为这样配置只是临时性的。sudo wg-quick down wgcf正式启用 WireGuard 网络接口# 启用守护进程 sudo systemctl start wg-quick@wgcf # 设置开机启动 sudo systemctl enable wg-quick@wgcf其它操作和说明DNS 优化和 IPv4/IPv6 优先级设置TIPS: 以下设置仅针对操作系统 DNS ,代理软件应单独设置内置的 DNS 和 IP 分流策略,具体参考相关软件文档中的 DNS 和路由部分。原因参见《优先级设置在特殊场景中的局限性》章节。当访问的网站是双栈且服务器也是双栈,默认情况下 IPv6 优先级高于 IPv4,应用程序优先使用 IPv6 地址。理论上应该是如下情况:IPv4 Only 服务器优先通过新增的 WARP IPv6 网络去访问外部网络。IPv6 Only 服务器优先通过原来的 IPv6 网络去访问外部网络。然而 WARP 的情况有点特殊,可能与 WireGuard 的路由规则有关,所以现实的情况可能是:IPv4 Only 服务器优先通过原来的 IPv4 网络去访问外部网络。IPv6 Only 服务器优先通过原来的 IPv6 网络去访问外部网络。如果你对于这个设定不满意,可以根据实际的需求手动去设置 IPv4 与 IPv6 的优先级。设置 IPv4 优先编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:precedence ::ffff:0:0/96 100一键添加命令如下:# IPv4 优先 grep -qE '^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100' /etc/gai.conf || echo 'precedence ::ffff:0:0/96 100' | sudo tee -a /etc/gai.conf设置 IPv6 优先编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:label 2002::/16 2一键添加命令如下:# IPv6 优先 grep -qE '^[ ]*label[ ]*2002::/16[ ]*2' /etc/gai.conf || echo 'label 2002::/16 2' | sudo tee -a /etc/gai.confCloudflare WARP 网速测试使用 speedtest.net 提供的 CLI 工具测试通过 WARP 访问外部网络的极限网速。安装 Speedtest CLIcurl -fsSL git.io/speedtest-cli.sh | sudo bash执行 speedtest 命令测速。博主随便拿了一个吃灰的 LXC 小鸡进行测试,发现即使用的是 wireguard-go 其网速依然很猛,几轮测试下来速度都在 500M 上下。可以预见的是这个速度应该远未达到 WARP 的极限,不过随着这篇教程的发布,之后是否还是这么理想就不得而知了。写在最后Cloudflare 一直以来为广大人民群众免费提供优秀的网络服务,希望大家善待它,不要肆意滥用。
2024年01月29日
138 阅读
0 评论
0 点赞
2024-01-29
CU VIP 是什么?AS4837、AS9929 线路 VPS 哪个好?
前言前段时间名为 CU VIP 线路的 VPS 火了,随之而来的 AS4837、AS9929 等代号频繁出现在广大 VPS 玩家的视野中。CU VIP 是什么?AS4837、AS9929 线路 VPS 哪个好?这篇文章将告诉你答案。AS4837 与 AS9929 的起源1994年7月19日,中国联通经国务院批准,正式挂牌成立,主要经营 GSM 移动通信业务。1999年10月22日,中国网通(小网通、老网通)由中科院、广电总局、铁道部、上海市政府四方出资成立,在全国 17 个城市开通互联网服务。此外,邮电部当年除了 163 网之外,在 1997 年还建设了一张中国公众多媒体通信网。这张网络很特别,完全独立于 163 网,采用私有地址 10.0.0.0/8,只能国内互相访问,相当于是一张 “国内局域网”。如果需要访问 163 网和 Internet 的话,需要找专门的代理服务器跳转。因为这张网络的接入号码为 169,故又称 169 网。网通也建设了一张自己的骨干网,就是 “中国网通公用互联网”(CNCNET)。2002年,国内电信行业重组,中国电信 “南北分家”。北方九省一市电信公司从原中国电信剥离,与小网通、吉通合并,成立新的中国网通(大网通、新网通)。于是,中国网通在既有 CNCNET 的基础上,得到了中国电信从 163 网拆出来的部分精华骨干网。为了区别于中国电信的 163 网,网通带走的这个网被称为 “CHINA169”(自治域为 AS4837) 。2008年,中国电信业再次重组,中国联通和中国网通合并,变成新的中国联通。所以自然而然地接管了 CHINA169。网通最初的骨干网 CNCNET(主要承载原网通 NGN 软交换、DCN 等业务)也交给联通运营。这个 CNCNET(自治域为 AS9929) 保持相对独立,后来被称为 “联通 A 网”。与之相对应的 “联通 B 网”,就是原联通建设的 IP 承载网,主要承载 2G/3G 移动网业务的那个网。后来好像逐渐没用了,业务迁到了 A 网。2018年,联通将 IP 承载 A 网改名为中国联通工业(产业)互联网(China Unicom Industrial Internet),简称 CUII。其定位有点像中国电信的 CN2,但这张 “吃老本” 的 A 网技术并不先进,所具备的优势仅仅是用户少,网络负荷小,所以表现也还不错,主要提供国际和国内跨地市 MPLS-VPN 和大客户互联网专线任务的承载,常用于企业宽带和 IDC,极少用于家用宽带。CU VIP 是什么?联通官方将 AS4837 回程路由的产品称之为 CU VIP ,实际这个产品已经存在多年了。这种企业级产品并不会对公众进行详细披露,所以非相关行业内人士对此了解甚少。目前网传的一些说法并不准确,也造成了很多人错误的理解,以讹传讹。CU VIP 怎么火了?大约在北京时间 2021年2月12日前后, Spartanhost 通过上游 CeraNetworks 全面接入了三网回程上海联通 AS4837 的 CU VIP 线路,而后通过各大 affman 传播开来。联通因为其拥仅次于电信的国际总出口带宽,本身用户就不多,所以带宽大、负载小,再加上最近几年市场不断被中国移动蚕食,使得网络状况愈发良好。彼时这条 AS4837 线路三网都可以达到最高带宽,而且丢包极少,晚高峰稳定,加上相关 VPS 产品的价格便宜,一时间 CU VIP 几乎成为了 “稳定、速度、便宜” 的代名词。因此受到广大 MJJ 和机场主追捧,不明真相的萌新也蜂拥而至、争相上车。之后的时间里又有越来越多的商家跟风推出了相关产品。AS9929 与 CU VIP 是什么关系?由于信息不透明,很多人只是浅显的了解到联通有个服务于政企大客户的联通 A 网 (AS9929),而 AS4837 是民用骨干网,所以有人错误的认为 AS9929 应该叫 VIP ,实际上联通内部将 AS9929 相关产品称为 China Unicom Premium IP Transit ,通常在产品单中会简称为 CU Premium 9929/10099,商家可能会称为 CU PM。此时有一些机智的 affman 蹭热度使用了 CU VIP 去推广走 AS9929 线路的 VPS ,同时也有一些不明真相的 affman 跟风,大家一起闷声发大财。在此之前 AS9929 的相关 VPS 产品似乎很难推广,自从蹭上了 CU VIP 的热度,也一跃成为了网红产品。AS4837 与 AS9929 哪个好?先说结论, AS9929 线路肯定是优于 AS4837 线路的,对于 AS9929 与 AS4837 的 VPS 而言并不具备绝对优势。从下面两张回程路由图就能窥见端倪。AS4837 VPS 回程路由国际段和国内段部分走联通 AS4837 ,然后转到相应运营商的大骨干网(图示是移动 AS9808),最终到本地运营商。AS9929 VPS 回程路由国际段走联通香港 AS10099 ,然后转国内段联通 AS9929 ,再转到相应运营商的大骨干网(图示是联通 AS4837),最终到本地运营商。AS4837 与 AS9929 对比分析懂行的小伙伴肯定马上就看出点门路来了。没错,AS9929 只负责一部分国内段的承载,一部分承载还是得靠 AS4837 骨干网。对比 AS4837 的 VPS 走的国际出口不同,以及国内段的优势。也就是说如果上海联通 AS4837 骨干网的国际出口炸了,那么 AS4837 VPS 的网络也就会受到波及,而走联通香港 AS10099 国际出口的 AS9929 VPS 最大的优势就在于此。有业内人士曾透露 AS9929 成本价要比 AS4837 贵 5 倍以上,所以目前市场上的 AS9929 相关 VPS 产品的带宽和流量普遍都给得非常少,价格高劝退大多数人继续保持低负载是它最后的护城河。而 AS4837 的 VPS 因价格相对更便宜所以一开始上车的人就很多,所以网络状态也已逐渐开始疲软,经常会有不稳定现象。AS9929 与 CN2 GIA 哪个好?有人拿 AS9929 和 CN2 GIA 划等号,其实看前面的回程路由就知道它更像是 CN2 GT 。虽然与 CN2 GIA 还是有一定差距的,但价格相对比较便宜,所以它也不失为在预算有限情况下的替代品,至少体验是绝对好于一般线路的。CU VIP 神话的终结随着 2021 年 3 月底中国电信 163 骨干网迎来了史上最大的一次汇聚层扩容和区域划分,已经有使用电信宽带的小伙伴发现之前在晚高峰炸成狗的廉价美国西海岸常规 BGP 直连线路 VPS 已经能随随便便跑满带宽、丝般顺滑的播放 4K 甚至 8K 视频。而此时随着 AS4837 上车的人越来越多也使得其优势变得不再明显。至此,CU VIP 短短不到两个月时间的神话就此终结。至于 AS9929 ,未来还将迎来后起之秀中国移动 CMI N2 (AS58807) 的挑战,以及中国电信 CN2 持续扩容的碾压。这场 ISP 三国杀似乎留给中国联通的时间已经不多了。
2024年01月29日
40 阅读
0 评论
0 点赞
2024-01-29
Debian/Ubuntu 中安装和配置 UFW 防火墙
前言UFW 是一个 Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端,可大大简化防火墙的配置过程。安装 UFW如还没有安装,可以使用 apt 命令来安装apt-get update && apt-get install ufw在使用前,你应该检查下 UFW 是否已经在运行。ufw status如果你发现状态是 inactive ,意思是没有被激活或不起作用。启用/禁用ufw enable #启用 ufw disable #禁用使用与配置列出当前UFW规则ufw status verbose添加规则允许入站(allow)默认情况,没有允许就是拒绝(入站),使用 ufw allow <端口> 来添加允许访问的端口或协议。ufw allow ssh #添加22端口 ufw allow http #添加80端口 ufw allow https #添加443端口 ufw allow 2333/tcp #添加2333端口,仅TCP协议 ufw allow 6666/udp #添加6666端口,仅UDP协议 ufw allow 8888:9999 #添加8888到9999之间的端口拒绝访问(deny)使用 ufw deny <端口> 来添加拒绝入站的端和协议,与添加允许的类似。删除规则先使用 ufw status 查看规则,再使用 ufw delete [规则] <端口> 来删除规则。ufw delete allow 2333/tcp如果你有很多条规则,使用 numbered 参数,可以在每条规则上加个序号数字。然后使用 ufw delete <序号> 来删除规则。root@p3terx:~# ufw status numbered #列出规则,并加上序号。 Status: active To Action From -- ------ ---- [ 1] 20,21,22,80,888,8888/tcp ALLOW IN Anywhere [ 2] 39000:40000/tcp ALLOW IN Anywhere [ 3] 8896/tcp ALLOW IN Anywhere [ 4] 8896/udp ALLOW IN Anywhere [ 5] 443/tcp ALLOW IN Anywhere [ 6] 20,21,22,80,888,8888/tcp (v6) ALLOW IN Anywhere (v6) [ 7] 39000:40000/tcp (v6) ALLOW IN Anywhere (v6) [ 8] 8896/tcp (v6) ALLOW IN Anywhere (v6) [ 9] 8896/udp (v6) ALLOW IN Anywhere (v6) [10] 443/tcp (v6) ALLOW IN Anywhere (v6) root@p3terx:~# ufw delete 4 #删除上面的第4条规则 Deleting: allow 8896/udp Proceed with operation (y|n)? y #最后会询问你是否进行操作以上都是一些简单常用的一些命令,想要深入了解,可以输入 man ufw 查看 ufw 用户手册。
2024年01月29日
31 阅读
0 评论
0 点赞
2024-01-17
Linux如何配置VNC远程桌面?
VNC介绍1.1 VNC简介VNC (Virtual Network Console) 是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,可以实现远程控制计算机的功能。1.2 VNC组成VNC基本上是由两部分组成,在任何安装了客户端的应用程序(vncviewer)的计算机都能十分方便地与安装了服务器端的应用程序(vncserver)的计算机相互连接。客户端的应用程序vncviewer服务器端的应用程序vncserver1.3 常见的VNC工具RealVNC:是一款功能强大的VNC工具,支持多种操作系统,包括Windows、Linux、Mac OS X等,具有高安全性和可靠性。UltraVNC:是一款免费的VNC客户端和服务器软件,支持Windows操作系统,提供了远程桌面、文件传输、文本聊天等功能。TightVNC:是一个小巧而强大的VNC工具,支持Windows、Linux以及Unix等多种操作系统,具有较高的安全性和性能。TigerVNC:是一个开源的VNC工具,支持Windows、Linux以及Mac OS X等多种操作系统,具有稳定性和高性能。TeamViewer:是一款针对远程支持、远程控制和在线协作的应用软件,可以实现桌面共享、远程协助、文件传输等功能。本地环境介绍本次实践为个人测试环境,服务器操作系统版本为Rocky Linux 8.9,客户端主机使用Windows10操作系统角色主机名主机IP操作系统版本内核版本vncserverlocalhost192.168.3.168Rocky Linux 8.9 (Green Obsidian)4.18.0-513.5.1.el8_9.x86_64vncviewerN/A192.168.3.35Windows 10 ProN/A安装vncserver3.1 使用yum源安装tigervnc-server包dnf -y install tigervnc-server3.2 检查vncserver安装状态[root@localhost ~]# rpm -qa | grep tigervnc tigervnc-license-1.13.1-2.el8.noarch tigervnc-server-1.13.1-2.el8.x86_64 tigervnc-server-minimal-1.13.1-2.el8.x86_64 tigervnc-selinux-1.13.1-2.el8.noarch创建VNC用户4.1 分别创建vncuser01、vncuser02用户,并设置密码[root@localhost ~]# useradd vncuser01 [root@localhost ~]# useradd vncuser02 [root@localhost ~]# echo 123 | passwd --stdin vncuser01 # 设置密码为123 Changing password for user vncuser01. passwd: all authentication tokens updated successfully. [root@localhost ~]# echo 123 | passwd --stdin vncuser02 # 设置密码为123 Changing password for user vncuser02. passwd: all authentication tokens updated successfully.配置vncserver服务5.1 切换到vncuser01用户,启动vncserver服务,设置vnc连接密码[root@localhost ~]# su - vncuser01 [vncuser01@localhost ~]$ vncserver WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream. Please read /usr/share/doc/tigervnc/HOWTO.md for more information. You will require a password to access your desktops. Password: Password must be at least 6 characters - try again # 密码长度至少6位 Password: # 设置密码为123456 Verify: # 再次输入密码 Would you like to enter a view-only password (y/n)? n # 询问你是否要再输入一个只有观看权限而被禁止操作的远程桌面的密码 A view-only password is not used xauth: file /home/vncuser01/.Xauthority does not exist New 'localhost.localdomain:1 (vncuser01)' desktop is localhost.localdomain:1 Creating default startup script /home/vncuser01/.vnc/xstartup Creating default config /home/vncuser01/.vnc/config Starting applications specified in /home/vncuser01/.vnc/xstartup Log file is /home/vncuser01/.vnc/localhost.localdomain:1.log5.2 切换到vncuser02用户,启动vncserver服务,设置vnc连接密码[vncuser01@localhost ~]$ exit logout [root@localhost ~]# su - vncuser02 [vncuser02@localhost ~]$ vncserver WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream. Please read /usr/share/doc/tigervnc/HOWTO.md for more information. You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n A view-only password is not used xauth: file /home/vncuser02/.Xauthority does not exist New 'localhost.localdomain:2 (vncuser02)' desktop is localhost.localdomain:2 Creating default startup script /home/vncuser02/.vnc/xstartup Creating default config /home/vncuser02/.vnc/config Starting applications specified in /home/vncuser02/.vnc/xstartup Log file is /home/vncuser02/.vnc/localhost.localdomain:2.log后面如果需要修改vnc连接密码,可以切换到对应用户执行vncpasswd进行修改5.3 查看服务端口[root@localhost ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 33743/Xvnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 34664/Xvnc tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1709/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1145/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1148/cupsd tcp6 0 0 :::5901 :::* LISTEN 33743/Xvnc tcp6 0 0 :::5902 :::* LISTEN 34664/Xvnc tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1145/sshd tcp6 0 0 ::1:631 :::* LISTEN 1148/cupsd udp 0 0 0.0.0.0:5353 0.0.0.0:* 938/avahi-daemon: r udp 0 0 0.0.0.0:50923 0.0.0.0:* 938/avahi-daemon: r udp 0 0 192.168.122.1:53 0.0.0.0:* 1709/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1709/dnsmasq udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 127.0.0.1:323 0.0.0.0:* 957/chronyd udp6 0 0 :::5353 :::* 938/avahi-daemon: r udp6 0 0 :::34264 :::* 938/avahi-daemon: r udp6 0 0 :::111 :::* 1/systemd udp6 0 0 ::1:323 :::* 可以看到vnc服务端口已经处于监听状态了。5.4 设置vncserver开机自启动第一个桌面环境[root@localhost ~]# systemctl enable vncserver@:1.service # 注意:此处服务名称不能tab键补全,需手动敲完整,对应5901端口 Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:1.service → /usr/lib/systemd/system/vncserver@.service.第二个桌面环境[root@localhost ~]# systemctl enable vncserver@:2.service Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:2.service → /usr/lib/systemd/system/vncserver@.service.5.5 增加会话窗口与用户的映射关系,第一个桌面与vncuser01账号关联,第二个桌面环境与vncuser02账号关联编辑 /etc/tigervnc/vncserver.users 文件[root@localhost ~]# vim /etc/tigervnc/vncserver.users # TigerVNC User assignment # # This file assigns users to specific VNC display numbers. # The syntax is <display>=<username>. E.g.: # # :2=andrew # :3=lisa :1=vncuser01 # 增加这两行 :2=vncuser025.6 防火墙规则放行在firewalld防火墙上放行端口[root@localhost ~]# firewall-cmd --add-port=5901/tcp --permanent success [root@localhost ~]# firewall-cmd --add-port=5902/tcp --permanent success [root@localhost ~]# firewall-cmd --reload success5.7 重启验证服务状态[root@localhost ~]# systemctl status vncserver@\:1.service [root@localhost ~]# systemctl status vncserver@\:1.service ● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2023-12-14 18:00:57 CST; 40s ago Process: 1471 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS) Process: 1422 ExecStartPre=/usr/libexec/vncsession-restore :1 (code=exited, status=0/SUCCESS) Main PID: 1489 (vncsession) Tasks: 0 (limit: 24436) Memory: 1.4M CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 1489 /usr/sbin/vncsession vncuser01 :1 Dec 14 18:00:57 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Dec 14 18:00:57 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). [root@localhost ~]# [root@localhost ~]# systemctl status vncserver@\:2.service ● vncserver@:2.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2023-12-14 18:00:57 CST; 44s ago Process: 1470 ExecStart=/usr/libexec/vncsession-start :2 (code=exited, status=0/SUCCESS) Process: 1421 ExecStartPre=/usr/libexec/vncsession-restore :2 (code=exited, status=0/SUCCESS) Main PID: 1492 (vncsession) Tasks: 0 (limit: 24436) Memory: 2.1M CGroup: /system.slice/system-vncserver.slice/vncserver@:2.service ‣ 1492 /usr/sbin/vncsession vncuser02 :2 Dec 14 18:00:57 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Dec 14 18:00:57 localhost.localdomain systemd[1]: Started Remote desktop service (VNC).重启系统后,服务成功自启动,均为 active 状态5.8 查看端口状态 [root@localhost ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1858/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1101/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1098/cupsd tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1624/Xvnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 1625/Xvnc tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1101/sshd tcp6 0 0 ::1:631 :::* LISTEN 1098/cupsd tcp6 0 0 :::5901 :::* LISTEN 1624/Xvnc tcp6 0 0 :::5902 :::* LISTEN 1625/Xvnc tcp6 0 0 :::111 :::* LISTEN 1/systemd udp 0 0 0.0.0.0:5353 0.0.0.0:* 973/avahi-daemon: r udp 0 0 192.168.122.1:53 0.0.0.0:* 1858/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1858/dnsmasq udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 127.0.0.1:323 0.0.0.0:* 983/chronyd udp 0 0 0.0.0.0:44138 0.0.0.0:* 973/avahi-daemon: r udp6 0 0 :::5353 :::* 973/avahi-daemon: r udp6 0 0 :::36338 :::* 973/avahi-daemon: r udp6 0 0 :::111 :::* 1/systemd udp6 0 0 ::1:323 :::* 983/chronydvnc服务端口处于监听状态中客户端连接验证这里我的客户端主机使用的是Windows10操作系统,使用 UltraVNC Viewer 工具连接 登录成功,vncuser02 同理
2024年01月17日
14 阅读
0 评论
0 点赞
2024-01-15
MusicTag音乐刮削软件,用它刮音乐的专辑、歌词、封面非常方便
前言上次用群晖搭建音乐媒体中心,就说想要找一个类似TMM的音乐刮削软件,后来在网友的推荐下发现了 Music Tag 这款软件,用它来刮削音乐的名称、歌手、专辑、封面真的太好用了。它的界面很简单,和我之前用的 Mp3tag 很像,但是平凡却不普通,它上部为菜单栏,左侧为音乐的标签栏,右侧为文件列表。使用初次使用要添加索引的目录可以添加多个或者随意更改所有目录,设置好以后,每次打开都会读取设置好目录中的音乐。设置好目录后,目录中所有的因为文件都会被扫描出来了。先来介绍一下 Music Tag 刮削的数据源,它的数据源包括 网易云、QQ音乐、itunes、酷狗、酷我 等,基本上网易云和QQ音乐就能找到绝大多数的音乐信息,有它们两个就足够了。下面介绍一下如何利用 Music Tag 刮削音乐的标签, 选中 我们想要下载标签的音乐,可以单选,可多选,然后 点击 上方的 自动匹配标签 按键,会弹出一个窗口,让我们选择我们想要刮削的信息,同时在后面 勾选 是否覆盖我们的原有标签。如果同时刮削的音乐比较多,需要等一段时间,不过速度还是很快的。刮削完成后,可以在左侧标签栏看到刮削到的信息,信息很全面,名称、歌手、专辑、年份、音轨号、歌词、封面都可以下载到,我的400多首歌曲,都能轻松完成标签的设置,而且信息准确,非常好用。完成刮削后,要保存一下标签信息,当然对标签不满意的,不保存原有信息就不会变了。批量重命名除了刮削音乐的标签,它还有一个功能和好用,就是可以批量重命名,我喜欢用标题-艺术家的形式命名歌曲,它可以快速实现批量重命名,当然,它还有更多自定义的命名方法。结尾使用 Music Tag 刮削完并整理好的音乐,全部都有音乐封面,而且在车上听歌,显示的音乐信息和封面都很准确,真是非常好用的一款软件。
2024年01月15日
139 阅读
0 评论
0 点赞
1
...
6
7
8
...
27