<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>折腾手记</title><description>记录系统、网络与日常折腾。</description><link>https://blog.vian.im/</link><language>zh_CN</language><item><title>修改日志大小上限</title><link>https://blog.vian.im/%E4%BF%AE%E6%94%B9%E6%97%A5%E5%BF%97%E5%A4%A7%E5%B0%8F%E4%B8%8A%E9%99%90/</link><guid isPermaLink="true">https://blog.vian.im/%E4%BF%AE%E6%94%B9%E6%97%A5%E5%BF%97%E5%A4%A7%E5%B0%8F%E4%B8%8A%E9%99%90/</guid><description>sudo vim /etc/systemd/journald.conf</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;修改日志大小上限&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/systemd/journald.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改以下参数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SystemMaxUse=200M
SystemKeepFree=500M
MaxRetentionSec=7day
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart systemd-journald
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>WSL安装和使用</title><link>https://blog.vian.im/wsl%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</link><guid isPermaLink="true">https://blog.vian.im/wsl%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/</guid><description>---</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;hr /&gt;
&lt;p&gt;title: &quot;WSL安装和使用&quot;
source: &quot;https://blog.357561.xyz/posts/wsl%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/&quot;
author:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;woioeow @ woioeow&apos;s blog&quot;&lt;/li&gt;
&lt;li&gt;&quot;woioeow A brief introduction&quot;
published: 2026-03-14
created: 2026-04-30
description: &quot;&amp;gt; 安装的是Debian系统 ## 安装WSL PowerShell右击以管理员身份运行 使用以下命令安装wsl &lt;code&gt;bash wsl --install &lt;/code&gt; ## 安装linux系统版本 打开Microsoft Store搜Debian，下载 ## 迁移系统 &amp;gt; 在D盘新建一&quot;
tags:&lt;/li&gt;
&lt;li&gt;&quot;clippings&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;安装的是Debian系统&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;安装WSL&lt;/h2&gt;
&lt;p&gt;PowerShell右击以管理员身份运行&lt;/p&gt;
&lt;p&gt;使用以下命令安装wsl&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装linux系统版本&lt;/h2&gt;
&lt;p&gt;打开Microsoft Store搜Debian，下载&lt;/p&gt;
&lt;h2&gt;xxxxxxxxxx # 全局安装应用npm install -g [应用]# 项目中安装应用npm install [应用]#卸载应用npm uninstall [应用]bash&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;在D盘新建一个名叫WSL的空目录&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;# 关闭所有系统版本
wsl --shutdown

# 查看系统版本
wsl -l -v

# 打包系统
wsl --export Debian D:\WSL\wsl-export.tar

# 注销原系统
wsl --unregister Debian

# 把打包的系统文件恢复到D盘WSL目录里
wsl --import Debian D:\WSL\Debian D:\WSL\wsl-export.tar --version 2

# 启动系统
wsl -d Debian
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;然后可以把wsl-export.tar文件删掉了&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;修改默认用户&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;打开WSL系统会提示新建用户和输入密码&lt;/p&gt;
&lt;p&gt;这里会把普通用户作为默认用户&lt;/p&gt;
&lt;p&gt;无需在sudoers文件里添加内容&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;Debian.exe config --default-user woioeow
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改软件源&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;找到系统的 &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; 文件&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;把 &lt;a href=&quot;https://mirrors.ustc.edu.cn/help&quot;&gt;中科大软件源&lt;/a&gt; 的Debian和Debian Security粘贴进去&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade -y&lt;/code&gt; 更新&lt;/p&gt;
</content:encoded></item><item><title>Fail2ban防护</title><link>https://blog.vian.im/fail2ban%E9%98%B2%E6%8A%A4/</link><guid isPermaLink="true">https://blog.vian.im/fail2ban%E9%98%B2%E6%8A%A4/</guid><description>sudo apt install -y fail2ban</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Fail2ban防护&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install -y fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写配置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo tee /etc/fail2ban/jail.d/sshd.local &amp;gt; /dev/null &amp;lt;&amp;lt;&apos;EOF&apos;
[DEFAULT]
bantime = 1d
findtime = 10m
maxretry = 5
banaction = nftables

[sshd]
enabled = true
backend = systemd
port = 22
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启用并检查&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl enable --now fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Nftables防火墙配置</title><link>https://blog.vian.im/nftables%E9%98%B2%E7%81%AB%E5%A2%99%E9%85%8D%E7%BD%AE/</link><guid isPermaLink="true">https://blog.vian.im/nftables%E9%98%B2%E7%81%AB%E5%A2%99%E9%85%8D%E7%BD%AE/</guid><description>sudo apt update &amp;&amp; sudo apt install -y nftables</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Nftables防火墙配置&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y nftables
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写配置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo tee /etc/nftables.conf &amp;gt; /dev/null &amp;lt;&amp;lt;&apos;EOF&apos;
#!/usr/sbin/nft -f

flush ruleset

table ip filter {
    chain input {
        type filter hook input priority filter; policy drop;

        iifname &quot;lo&quot; accept

        ct state established,related accept

        ct state invalid drop

        icmp type {
            destination-unreachable,
            time-exceeded,
            parameter-problem
        } accept

        tcp dport 48256 ct state new accept

        counter drop
    }

    chain forward {
        type filter hook forward priority filter; policy drop;
    }

    chain output {
        type filter hook output priority filter; policy accept;
    }
}
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查并加载&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nft -c -f /etc/nftables.conf &amp;amp;&amp;amp; sudo nft -f /etc/nftables.conf
sudo systemctl enable --now nftables
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>新建普通用户</title><link>https://blog.vian.im/ssh%E9%85%8D%E7%BD%AE/</link><guid isPermaLink="true">https://blog.vian.im/ssh%E9%85%8D%E7%BD%AE/</guid><description>useradd -m -s /usr/bin/bash woioeow</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;SSH配置&lt;/h1&gt;
&lt;h2&gt;新建普通用户并赋予sudo权限&lt;/h2&gt;
&lt;h3&gt;新建普通用户&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;useradd -m -s /usr/bin/bash woioeow
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;修改密码&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;passwd woioeow
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;给普通用户赋予sudo权限&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install vim sudo -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;给&lt;code&gt;/etc/sudoers&lt;/code&gt;文件加上以下参数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;woioeow	ALL=(ALL:ALL)	ALL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;:x!&lt;/code&gt;保存退出&lt;/p&gt;
&lt;h3&gt;设置公钥认证&lt;/h3&gt;
&lt;p&gt;在本地电脑上的用户目录新建.ssh目录，再执行以下命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh-keygen -t ed25519 -C &quot;ssh_key&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;回车三次&lt;/p&gt;
&lt;p&gt;把&lt;code&gt;id_ed25519.pub&lt;/code&gt;上传到服务器的&lt;code&gt;~/.ssh/&lt;/code&gt;，重命名为&lt;code&gt;authorized_keys&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;设置文件权限&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod 600 ~/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改ssh配置文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改以下参数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Port 48256
PermitRootLogin no 
PasswordAuthentication no
PubkeyAuthentication yes
AddressFamily inet
KbdInteractiveAuthentication no
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启ssh&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl restart ssh
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>安装scoop</title><link>https://blog.vian.im/%E5%AE%89%E8%A3%85scoop/</link><guid isPermaLink="true">https://blog.vian.im/%E5%AE%89%E8%A3%85scoop/</guid><description>scoop 官方站</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装scoop&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ScoopInstaller/Scoop&quot;&gt;scoop 官方站&lt;/a&gt;
scoop 部分教程来自 &lt;a href=&quot;https://scoop.201704.xyz&quot;&gt;scoop 国内镜像站&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;Set-ExecutionPolicy RemoteSigned -scope CurrentUser -Force

# 默认安装
iwr -useb scoop.201704.xyz | iex
# 自定义安装目录
irm scoop.201704.xyz -outfile &apos;install.ps1&apos;
.\install.ps1 -ScoopDir &apos;D:\Scoop\Scoop&apos; -ScoopGlobalDir &apos;D:\Scoop\GlobalScoopApps&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装应用&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# scoop首次安装会提示安装git
scoop install git
# 
scoop install aria2 
scoop config aria2-warning-enabled false可抑制警告
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;scoop uninstall &lt;/code&gt;卸载应用&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;代理&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;魔法设置全局代理&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;# 添加代理
scoop config proxy 127.0.0.1:7890

# 删除代理
scoop config rm proxy
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;查看或添加bucket&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;bucket是scoop的软件仓库&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;可使用以下命令查看已安装bucket或安装第三方bucket&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看已知bucket
scoop bucket known

# 添加需要的bucket
scoop bucket add extras
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更多第三方bucket访问&lt;a href=&quot;https://gitee.com/scoop-installer&quot;&gt;镜像站&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Agent使用学习</title><link>https://blog.vian.im/agent%E4%BD%BF%E7%94%A8%E5%AD%A6%E4%B9%A0/</link><guid isPermaLink="true">https://blog.vian.im/agent%E4%BD%BF%E7%94%A8%E5%AD%A6%E4%B9%A0/</guid><description>获取状态 → 判断问题 → 制定计划 → 调用工具 → 验证结果 → 记录经验</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;获取状态 → 判断问题 → 制定计划 → 调用工具 → 验证结果 → 记录经验&lt;/p&gt;
&lt;p&gt;高质量的agent请求：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;目标：要解决什么问题
范围：允许它看哪些目录、服务器、服务
约束：哪些东西绝对不能动
工具：它能调用什么命令、API、搜索、GitHub
验收：怎样算完成
记录：是否要把结论写入知识库或记忆&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;涉及 &lt;code&gt;rm -rf&lt;/code&gt;、防火墙规则、数据库迁移、升级内核、重启代理核心时，必须让它先提交计划和 diff。&lt;/p&gt;
&lt;p&gt;AGENTS.md          Agent 的规则、权限、操作流程
INFRASTRUCTURE.md  服务器、用途、端口、域名、服务清单
RUNBOOKS.md        常见故障处理步骤
SERVICES.md        Docker/systemd 服务及依赖关系
SECURITY.md        禁止操作、密钥规则、备份和恢复规则
MEMORY.md          长期经验与历史决策&lt;/p&gt;
&lt;p&gt;把常用的信息和服务器配置、端口、ip、域名做成yaml文件，让ai每次执行任务直接读取&lt;/p&gt;
&lt;p&gt;不要直接给 Agent 无限 shell 权限。把常用操作封装成工具，Agent 调工具比直接拼 SSH 命令稳定得多&lt;/p&gt;
&lt;p&gt;不要给目标很大、边界很模糊的任务，需要具体化&lt;/p&gt;
&lt;p&gt;记忆拆成三类：
事实记忆：服务器、端口、服务、账号、版本、域名
决策记忆：为什么选这个方案、拒绝过什么方案、约束条件
经验记忆：某错误的症状、原因、修复过程、验证办法&lt;/p&gt;
</content:encoded></item><item><title>Hyprland安装美化</title><link>https://blog.vian.im/hyprland%E5%AE%89%E8%A3%85%E7%BE%8E%E5%8C%96/</link><guid isPermaLink="true">https://blog.vian.im/hyprland%E5%AE%89%E8%A3%85%E7%BE%8E%E5%8C%96/</guid><description>Archlinux安装</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;/Archlinux%E5%AE%89%E8%A3%85/&quot;&gt;Archlinux安装&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Hyprland安装&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;git clone --depth=1 https://github.com/JaKooLit/Arch-Hyprland.git
cd Arch-Hyprland
chmod +x install.sh
./install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装过程需要全程联网并且建议挑网络好的时候安装如果安装过程中经常有软件下载失败可以先把最后的标记失败的软件安装上，再配置好 npm 和 github ssh 下载方式，再进行下载&lt;/p&gt;
&lt;p&gt;安装一些娱乐软件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;paru -S google-chrome # 安装 chrome 浏览器
paru -S baidunetdisk-bin # 安装百度网盘
paru -S nerd-fonts # 安装 nerd-fonts 字体
paru -S linuxqq wechat # qq 和微信
paru bilibili # 选择 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装中文字体&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Sy adobe-source-han-sans-cn-fonts \
adobe-source-han-serif-cn-fonts noto-fonts-cjk \
wqy-microhei wqy-microhei wqy-microhei-lite \
wqy-bitmapfont ttf-arphic-ukai ttf-arphic-uming
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;oh-my-zsh&lt;/h2&gt;
&lt;p&gt;如果安装完毕，终端没有 ohmyzsh 美化，可以自己尝试安装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

# 主题 powerlevel10k
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# 高亮
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# 自动补全
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# 进入. zshrc 文件
# 找到 ZSH_THEME，把值改为 &quot;powerlevel10k/powerlevel10k&quot;
# 找到 plugins=(git)，在 git 后面添加 zsh-autosuggestions zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;LazyVim&lt;/h2&gt;
&lt;p&gt;保证装有 neovim 和 git&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Sy neovim
git clone --depth=1 https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim # 启动 nvim，安装插件
# 在~/.zshrc 文件中添加
alias vim=&apos;nvim&apos; # 需要先将 vim 删掉，如果出现有 vim 但是 pacman 找不到，可以先安装，再删除
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;电池管理&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S tlp
paru -S tlpui-git # 如果出现 git 仓库克隆失败可以先执行下行注释 git 命令克隆下来, 再安装
# git clone https://github.com/linrunner/TLP.git
paru -S tlp-rdw
paru -S tp_smapi-lts tp_smapi
sudo systemctl enable tlp.service
sudo systemctl start tlp.service
sudo systemctl enable NetworkManager-dispatcher.service
sudo systemctl start NetworkManager-dispatcher.service
sudo systemctl mask systemd-rfkill.socket systemd-rfkill.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;风扇控制&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;paru -S nbfc-linux-git
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;ufw 防火墙&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S ufw
systemctl enable ufw
systemctl start ufw

# 操作

sudo ufw allow 3389/tcp
sudo ufw allow 3389/udp
sudo ufw reset
sudo ufw status
sudo ufw default deny
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装 VSCode&lt;/h2&gt;
&lt;p&gt;在 &lt;a href=&quot;https://code.visualstudio.com/Download&quot;&gt;VSCode 下载链接&lt;/a&gt; 下载. tar.gz 包&lt;/p&gt;
&lt;p&gt;把安装包 &lt;code&gt;tar -zxvf 安装包. tar.gz&lt;/code&gt; 解压，放在 / opt / 目录下&lt;/p&gt;
&lt;p&gt;使用 ln 命令创建软件链接 &lt;code&gt;ln -s /opt/code-stable-x64-1731511985 /opt/vscode&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;创建 &lt;code&gt;vscode.desktop&lt;/code&gt; 文件 (快捷方式)&lt;a&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Desktop Entry]
Type=Application
Name=Visual Studio Code
Exec=/opt/vscode/code
Icon=/opt/vscode/resources/app/resources/linux/code.png
Comment=Visual Studio Code
Terminal=false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把文件放在 &lt;code&gt;/usr/share/applications/&lt;/code&gt; 目录下&lt;/p&gt;
</content:encoded></item><item><title>Archlinux安装</title><link>https://blog.vian.im/archlinux%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://blog.vian.im/archlinux%E5%AE%89%E8%A3%85/</guid><description>内容参考 Arch WiKi Arch 提供了自动化安装脚本可以输入 archinstall 进行配置</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;内容参考 &lt;a href=&quot;https://wiki.archlinuxcn.org/wiki/%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97#&quot;&gt;Arch WiKi&lt;/a&gt; Arch 提供了自动化安装脚本可以输入 &lt;code&gt;archinstall&lt;/code&gt; 进行配置&lt;/p&gt;
&lt;h2&gt;下载 Arch 镜像&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2024.12.01/&quot;&gt;Arch 2024.12.01 镜像&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;验证 ISO 文件密钥 SHA256&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;certutil -hashfile 镜像文件.iso SHA256 # 和官网密钥对比
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://archlinux.org/download/&quot;&gt;Arch 官网下载界面&lt;/a&gt; 密钥在这查看&lt;/p&gt;
&lt;h2&gt;制作启动盘&lt;/h2&gt;
&lt;p&gt;进入 &lt;a href=&quot;https://rufus.ie/en/&quot;&gt;Rufus 官网&lt;/a&gt; 下载 rufus 启动盘制作软件分区类型 GPT，目标系统类型 UEFI&lt;/p&gt;
&lt;p&gt;如果是固态 U 盘就打开显示高级设备选项&lt;/p&gt;
&lt;p&gt;勾选上显示 USB 外置硬盘&lt;/p&gt;
&lt;h2&gt;验证引导模式&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cat /sys/firmware/efi/fw_platform_size # 验证 UEFI 位数是 64 位或 32 位
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;连接 WIFI&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;rfkill unblock wifi&lt;/code&gt; 解除网络接口软件屏蔽&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 进入 [iwd]# 界面
iwctl
# 列出所有可用适配器的名称
device list 
# 把网络适配器打开
# [name]是适配器名称
device [name] set-property Powered on 
# 扫描WiFi
station [name] scan 
# 列出所有WiFi的名称
station [name] get-networks 
# 连接网络
# [SSID]是WiFi名称
station [name] connect [SSID]
# 退出 [iwd]# 界面
exit 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;连接上了可使用 &lt;code&gt;ping archlinux.org&lt;/code&gt; 测试网络是否通畅&lt;/p&gt;
&lt;h2&gt;更新系统时间&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;timedatectl set-ntp true # 启用 NTP 同步
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;创建硬盘分区&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;fdisk -l # 查看硬盘信息
fdisk 硬盘名称 # 分区工具修改硬盘分区表，把路径写全
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;fdisk 创建分区&lt;/h2&gt;
&lt;p&gt;我的分区方案是一个 EFI 分区、一个 SWAP 分区、一个 /(根) 分区&lt;/p&gt;
&lt;p&gt;输入 &lt;code&gt;g&lt;/code&gt; 创建一个 GPT 分区表输入 &lt;code&gt;n&lt;/code&gt; 创建分区&lt;/p&gt;
&lt;p&gt;接下来依次是分区编号、起始扇区、结束扇区分区编号如果是默认直接回车即可、起始扇区也是结束扇区根据想要分区多大输入，1G 就输入 &lt;code&gt;+1G&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;512MB 就输入 &lt;code&gt;+512M&lt;/code&gt; 输入 &lt;code&gt;p&lt;/code&gt; 显示分区表输入 &lt;code&gt;w&lt;/code&gt; 保存分区表写入磁盘输入 &lt;code&gt;q&lt;/code&gt; 放弃更改后的分区表&lt;/p&gt;
&lt;h2&gt;格式化分区&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;mkfs.ext4 根分区 # 格式化 / 分区
mkswap swap 分区 # 格式化 swap 分区
mkfs.fat -F 32 EFI 分区 # 格式化 EFI 分区
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;挂载分区&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;mount 根分区 /mnt # 把根分区挂载到 / mnt 目录
mount --mkdir EFI 分区 /mnt/boot # 把 EFI 分区挂载到 / mnt/boot 目录
swapon swap 分区 # 启用 Swap 分区
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;遵循先挂载到根分区，再挂载 EFI 分区，最后挂载其他分区&lt;/p&gt;
&lt;h2&gt;配置软件源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;curl -L &quot;https://archlinux.org/mirrorlist/?country=CN&amp;amp;protocol=https&quot; \
-o /etc/pacman.d/mirrorlist  # 获取中国大陆的 https 镜像站
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入 &lt;code&gt;/etc/pacma.d/mirrorlist&lt;/code&gt; 文件找到想要的软件源把前面的 #去掉保存即可&lt;/p&gt;
&lt;h2&gt;安装必需软件包&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pacstrap -K /mnt base linux linux-firmware&lt;/code&gt; 安装 linux 内核文件显示分区表如果计算机是 intel 的 CPU 追加 &lt;code&gt;intel-ucode&lt;/code&gt;，AMD CPU 追加 &lt;code&gt;amd-ucode&lt;/code&gt; 文件管理系统的用户工具：&lt;/p&gt;
&lt;p&gt;ext4 &lt;code&gt;e2fsprogs&lt;/code&gt;exfat &lt;code&gt;exfatprogs&lt;/code&gt;Btrfs &lt;code&gt;btrfs-progs&lt;/code&gt;XFS &lt;code&gt;xfsprogs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;访问 RAID 分区的工具 &lt;code&gt;mdadm&lt;/code&gt; 访问 LVM 分区的工具 &lt;code&gt;lvm2&lt;/code&gt; 内建音频的 &lt;code&gt;sof-firmware&lt;/code&gt;, 用于 Marvell 无线的 &lt;code&gt;linux-firmware-marvell&lt;/code&gt;Broadcom wireless 的固件包 &lt;code&gt;broadcom-wl&lt;/code&gt; 联网所需的程序 &lt;code&gt;modemmanager&lt;/code&gt; 文件编辑器如 &lt;code&gt;nano&lt;/code&gt;,&lt;code&gt;vim&lt;/code&gt; 访问 man 和 info 页面中文档的工具:&lt;code&gt;man-db&lt;/code&gt;,&lt;code&gt;man-pages&lt;/code&gt;,&lt;code&gt;texinfo&lt;/code&gt;ssh 工具 &lt;code&gt;openssh&lt;/code&gt;、网络管理器 &lt;code&gt;networkmanager&lt;/code&gt;sudo &lt;code&gt;sudo&lt;/code&gt;、zsh &lt;code&gt;zsh&lt;/code&gt;、git &lt;code&gt;git&lt;/code&gt;、base-devel &lt;code&gt;base-devel&lt;/code&gt;、nodejs &lt;code&gt;nodejs&lt;/code&gt;、&lt;code&gt;npm&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacstrap -K /mnt base linux linux-firmware interl-ucode amd-ucode \
e2fsprogs exfatprogs btrfs-progs xfsprogs mdadm lvm2 sof-firmware \
linux-firmware-marvell broadcom-wl modemmanager nano vim man-db \
man-pages texinfo openssh networkmanager sudo zsh git base-level \
nodejs npm
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;生成 fstab 文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab # 分区挂载或启用后自动检测并生成系统文件
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;chroot 到新安装的系统&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;arch-chroot /mnt # chroot 到新安装系统
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置时区&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 设置时区为上海
hwclock --sysohc # 生成 / etc/adjtime 文件
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;区域化本地设置&lt;/h2&gt;
&lt;p&gt;打开 &lt;code&gt;/etc/locale.gen&lt;/code&gt; 文件取消 &lt;code&gt;en_US.UTF-8 UFT-8&lt;/code&gt; 和 &lt;code&gt;zh_CN.UTF-8 UTF-8&lt;/code&gt; 的注释，保存退出执行 &lt;code&gt;locale-gen&lt;/code&gt; 命令打开 &lt;code&gt;/etc/locale.conf&lt;/code&gt; 文件添加 &lt;code&gt;LANG=en_US.UTF-8&lt;/code&gt; 和 &lt;code&gt;LC_TIME=zh_CN.UTF-8&lt;/code&gt; 两行&lt;/p&gt;
&lt;h2&gt;网络配置&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;vim /etc/hostname # 在文件中输入主机名
ip link show # 查看网络接口
ip link set interface up # 开启网络接口，interface 替换为网络接口
systemctl enable NetworkManager.service # 开机自启网络服务
systemctl enable sshd.service # 开机自启 sshd 服务
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置 root 密码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;passwd root # 设置 root 密码
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装 Grub 引导程序&lt;/h2&gt;
&lt;p&gt;安装软件包 &lt;code&gt;efibootmgr&lt;/code&gt;、&lt;code&gt;grub&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 把 grub 安装到磁盘
grub-install --target=x86_64-efi \
--efi-directory=/boot --bootloader-id=GRUB

# 生成 cfg 文件
grub-mkconfig -o /boot/grub/grub.cfg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入 cfg 文件 找到 &lt;code&gt;set timeout=10&lt;/code&gt; 把 10 改为 0 保存退出&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exit # 退出 chroot 环境
umount -R /mnt # 手动卸载全部被挂载分区
reboot # 重启系统
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;撤出启动盘进入系统后使用 &lt;code&gt;nmtui&lt;/code&gt; 工具连接网络&lt;/p&gt;
&lt;h2&gt;创建普通用户&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/shells # 查看 zsh 路径
useradd -m -s &quot;/bin/zsh&quot; &quot;username&quot; #创建普通用户，并为其指定默认 shell 为 zsh
passwd &quot;用户名&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 root 用户在 &lt;code&gt;/etc/sudoers&lt;/code&gt; 文件里找到 &lt;code&gt;root ALL=(ALL:ALL) ALL&lt;/code&gt; 复制在下一行粘贴，把 root 换成我们要添加的普通用户名，保存退出（这样就能普通用户就能使用 sudo 命令执行 root 权限了）建议用户名不要用中文、大写，否则 Hyprland 登陆会登不进去&lt;/p&gt;
&lt;h2&gt;配置 ArchLinuxCN&lt;/h2&gt;
&lt;p&gt;使用 &lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxcn/&quot;&gt;清华的软件源&lt;/a&gt; 在 &lt;code&gt;/etc/pacman.conf&lt;/code&gt; 末尾添加以下语句&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加本地信任 GPG key&lt;code&gt;sudo pacman-key --lsign-key &quot;farseerc@archlinux.org&quot;&lt;/code&gt; 安装 archlinuxcn 密钥 &lt;code&gt;sudo pacman -Sy archlinuxcn-keyring&lt;/code&gt; 配置 git 的全局设置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git config --global user.name &quot;your_github_username&quot;
git config --global user.email &quot;your_github_email@email.com&quot;
git config --global init.defaultBranch main
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;npm 换源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;node -v &amp;amp;&amp;amp; npm -v # 查看 npm、node 版本

# 更换华为源

npm config set registry https://mirrors.huaweicloud.com/repository/npm/

npm cache clean -f # 清理缓存

npm config list # 查看源

npm update # 更新

sudo npm install -g npm@latest # 更新 npm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 npm 下载工具需要 root 权限&lt;/p&gt;
&lt;h2&gt;Github SSH 下载&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;ssh-keygen -t ed25519 -C &quot;your_name@email.com&quot;
cat ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;登录 &lt;strong&gt;github&lt;/strong&gt;，点击 &lt;strong&gt;头像&lt;/strong&gt;，点击 &lt;strong&gt;设置&lt;/strong&gt;，找到 &lt;strong&gt;SSH and GPG keys&lt;/strong&gt; 选项，点击 &lt;strong&gt;SSH keys&lt;/strong&gt; 右边的 &lt;strong&gt;New SSH key&lt;/strong&gt; 按钮，标题给个恰当的密钥名字
把 &lt;code&gt;cat ~/.ssh/id_ed25519.pub&lt;/code&gt; 的输出全部复制进 Key 里面，单击 &lt;strong&gt;Add SSH key&lt;/strong&gt;，接着输入你的 github 登录密码 &lt;code&gt;ssh -T git@github.com&lt;/code&gt; 弹出以下内容，代表成功 &lt;code&gt;Hi your_name! You’ve successfully authenticated, but GitHub does not provide shell access.&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;paru 安装&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;git clone --depth=1 https://aur.archlinux.org/paru.git
cd paru
makepkg -si
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;sudo vim /etc/pacman.conf&lt;/code&gt; 把 Color 的注释去掉 &lt;code&gt;sudo nano /etc/paru.conf&lt;/code&gt; 把 BottomUp 注释去掉 &lt;code&gt;paru -Syu&lt;/code&gt; 更新&lt;/p&gt;
</content:encoded></item><item><title>本地转换图片为avif格式</title><link>https://blog.vian.im/%E6%9C%AC%E5%9C%B0%E8%BD%AC%E6%8D%A2%E5%9B%BE%E7%89%87%E4%B8%BAavif%E6%A0%BC%E5%BC%8F/</link><guid isPermaLink="true">https://blog.vian.im/%E6%9C%AC%E5%9C%B0%E8%BD%AC%E6%8D%A2%E5%9B%BE%E7%89%87%E4%B8%BAavif%E6%A0%BC%E5%BC%8F/</guid><description>---</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;hr /&gt;
&lt;p&gt;title: &quot;本地转换图片为avif格式&quot;
source: &quot;https://blog.357561.xyz/posts/%E6%9C%AC%E5%9C%B0%E8%BD%AC%E6%8D%A2%E5%9B%BE%E7%89%87/&quot;
author:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;woioeow @ woioeow&apos;s blog&quot;&lt;/li&gt;
&lt;li&gt;&quot;woioeow A brief introduction&quot;
published: 2026-02-27
created: 2026-04-30
description: &quot;&amp;gt;需要先安装nodejs &amp;gt; &amp;gt;需要转换为其它格式可将&lt;code&gt;file.replace(/\.(jpg|jpeg|png)$/i, \&quot;.avif\&quot;)&lt;/code&gt;的.avif改为相应格式 把所有需要转换为avif格式的图片，放在一个空目录中 格式化空目录 &lt;code&gt;bash npm init -y &lt;/code&gt; 进入目录，&quot;
tags:&lt;/li&gt;
&lt;li&gt;&quot;clippings&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;需要先安装nodejs&lt;/p&gt;
&lt;p&gt;需要转换为其它格式可将 &lt;code&gt;file.replace(/\.(jpg|jpeg|png)$/i, &quot;.avif&quot;)&lt;/code&gt; 的.avif改为相应格式&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;把所有需要转换为avif格式的图片，放在一个空目录中&lt;br /&gt;
格式化空目录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm init -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入目录，安装sharp&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install sharp -g
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把以下内容，粘贴至convert.js脚本中，将此脚本和需要转换的图片放至同一目录中&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const sharp = require(&quot;sharp&quot;);
const fs = require(&quot;fs&quot;);
const path = require(&quot;path&quot;);

const inputDir = &quot;.&quot;;
const outputDir = &quot;./images&quot;;

// 创建输出目录（如果不存在）
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir);
}

// 扫描当前目录
fs.readdirSync(inputDir).forEach(file =&amp;gt; {
  // 忽略目录
  if (fs.statSync(file).isDirectory()) return;

  // 只处理 jpg/jpeg/png
  if (!file.match(/\.(jpg|jpeg|png)$/i)) return;

  const inputPath = path.join(inputDir, file);
  const outputPath = path.join(
    outputDir,
    file.replace(/\.(jpg|jpeg|png)$/i, &quot;.avif&quot;)
  );

  sharp(inputPath)
    .avif({
      quality: 60,        // 推荐 40~60
      effort: 4           // 0~9，越大压缩越慢但体积更小
    })
    .toFile(outputPath)
    .then(info =&amp;gt; {
      const originalSize = fs.statSync(inputPath).size;
      const newSize = fs.statSync(outputPath).size;
      const ratio = ((1 - newSize / originalSize) * 100).toFixed(1);

      console.log(`✔ ${file} → ${path.basename(outputPath)} | 压缩 ${ratio}%`);
    })
    .catch(err =&amp;gt; {
      console.error(`✖ 处理失败: ${file}`, err.message);
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个目录的路径栏清空，输入cmd回车&lt;/p&gt;
&lt;p&gt;执行命令，自动转换&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node convert.js
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>安装nvm</title><link>https://blog.vian.im/windows%E5%AE%89%E8%A3%85-nvmnodejs/</link><guid isPermaLink="true">https://blog.vian.im/windows%E5%AE%89%E8%A3%85-nvmnodejs/</guid><description>先安装Scoop</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装nvm&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;先&lt;a href=&quot;/%E5%AE%89%E8%A3%85Scoop/&quot;&gt;安装Scoop&lt;/a&gt;
nvm是nodejs管理器，可安装多个nodejs版本随意切换&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;scoop install nvm
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装nodejs&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 安装nodejs 22.2.2版本
nvm install 22.2.2
# 使用22.2.2版本
nvm use 22.2.2
# 查看安装的nodejs版本
nvm list
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;使用nrm管理npm镜像源&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 安装nrm
npm install -g nrm
# 镜像源测速
nrm test
# 使用淘宝镜像源
nrm use taobao
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;npm 使用&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 全局安装应用
npm install -g [应用]
# 项目中安装应用
npm install [应用]
#卸载应用
npm uninstall [应用]
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>安全防护</title><link>https://blog.vian.im/%E5%AE%89%E5%85%A8%E9%98%B2%E6%8A%A4/</link><guid isPermaLink="true">https://blog.vian.im/%E5%AE%89%E5%85%A8%E9%98%B2%E6%8A%A4/</guid><description>以debian 12为例演示。低于2c2g的vps，用root用户，否则用普通用户；这里演示以以下用户名密码为例</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;以debian 12为例演示。低于2c2g的vps，用root用户，否则用普通用户；这里演示以以下用户名密码为例
用户名：woioeow 密码：4561834&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;更新系统&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;新建用户&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 新建用户同时新建用户目录、指定默认shell
useradd -m -s /usr/bin/bash woioeow
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置密码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;passwd woioeow
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置sudo密码权限&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;有的精简系统默认无sudo和vim，以下命令安装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install sudo vim -y
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;vim /etc/sudoers
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到&lt;code&gt;root ALL=(ALL:ALL) ALL&lt;/code&gt;这行，粘贴至下一行，把&lt;code&gt;root&lt;/code&gt;改为&lt;code&gt;woioeow&lt;/code&gt;，如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root ALL=(ALL:ALL) ALL
woioeow ALL=(ALL:ALL) ALL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输入&lt;code&gt;:x!&lt;/code&gt;保存退出&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;su woioeow&lt;/code&gt;可切换至新用户&lt;/p&gt;
&lt;h2&gt;实现ssh密钥登陆&lt;/h2&gt;
&lt;h3&gt;客户端&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ssh-keygen -t ed25519 -C &quot;sshkey&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;连续按三次回车&lt;/p&gt;
&lt;h4&gt;上传密钥&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# 如果没有改ssh端口可不指定-P(大写)参数
# 先在服务器创建.ssh目录
scp -P &amp;lt;port&amp;gt; C:\Users\&amp;lt;username&amp;gt;\.ssh\id_ed25519.pub &amp;lt;用户名&amp;gt;@&amp;lt;服务器IP&amp;gt;:~/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;服务端&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;mkdir .ssh
# 上传密钥后
chmod 600 .ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;UFW防火墙配置&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install ufw -y
# 启用防火墙
sudo ufw enable
# 开放的ssh端口，ipv4、limit、tcp
sudo ufw limit from 0.0.0.0/0 to any port 62768 proto tcp
# 载入规则
sudo ufw reload
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;禁用Ping&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/ufw/before.rules
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;搜&lt;code&gt;echo-request&lt;/code&gt;，找到有&lt;code&gt;input&lt;/code&gt;的那行，把&lt;code&gt;ACCEPT&lt;/code&gt;改为&lt;code&gt;DROP&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw reload
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Fail2ban&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install fail2ban -y
# 复制文件
cd /etc/fail2ban
sudo cp fail2ban.conf fail2ban.local
# 追加配置
sudo cat&amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; fail2ban.local
[sshd]
enabled = true
port = 62768
filter = sshd
logpath = /var/log/auth.log
backend = auto

maxretry = 3
findtime = 10m
bantime  = 7d

bantime.increment = true
bantime.factor = 2
bantime.maxtime = 30d
EOF
# 创建日志文件
sudo touch /var/log/auth.log
# 重启
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改日志体积上限&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/systemd/journald.conf
修改以下参数
SystemMaxUse=200M
SystemKeepFree=500M
MaxRetentionSec=7day
重启服务
sudo systemctl restart systemd-journald
sudo systemctl status systemd-journald
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>自建代理</title><link>https://blog.vian.im/%E8%87%AA%E5%BB%BA%E4%BB%A3%E7%90%86/</link><guid isPermaLink="true">https://blog.vian.im/%E8%87%AA%E5%BB%BA%E4%BB%A3%E7%90%86/</guid><description>做这个之前先进行安全防护</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;做这个之前先进行&lt;a href=&quot;/%E5%AE%89%E5%85%A8%E9%98%B2%E6%8A%A4/&quot;&gt;安全防护&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此教程以sing-box代理服务端和vless-reality为例&lt;/p&gt;
&lt;p&gt;vless-reality是当前代理协议中综合实力最强的，无需域名、证书&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;开启bbr&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo cat&amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/sysctl.conf
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_syncookies = 1
EOF

# 载入规则
sudo sysctl -p
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装代理服务端&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir -p /etc/apt/keyrings &amp;amp;&amp;amp;
   sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc &amp;amp;&amp;amp;
   sudo chmod a+r /etc/apt/keyrings/sagernet.asc &amp;amp;&amp;amp;
   echo &apos;
Types: deb
URIs: https://deb.sagernet.org/
Suites: *
Components: *
Enabled: yes
Signed-By: /etc/apt/keyrings/sagernet.asc
&apos; | sudo tee /etc/apt/sources.list.d/sagernet.sources &amp;amp;&amp;amp;
   sudo apt-get update &amp;amp;&amp;amp;
   sudo apt-get install sing-box
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;生成密钥、UUID、short-id&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;这三个要保存好，配置文件要用&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;# 生成sing-box的PrivateKey和PublicKey
sudo sing-box generate reality-keypair
# 生成UUID
cat /proc/sys/kernel/random/uuid
# 生成8位short-id
openssl rand -hex 8
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;开放端口&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;ssh端口总数为65536，范围0~65535&lt;/p&gt;
&lt;p&gt;使用随机高端口，最好是20000以上；实在不知道用哪个使用以下命令来生成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;shuf -i 1024-65535 -n 1
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw allow 26375/tcp
sudo ufw reload
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置信息&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/sing-box/config.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用以下内容替换掉原有内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;log&quot;: {
    &quot;level&quot;: &quot;warn&quot;,
    &quot;timestamp&quot;: true
  },
  &quot;inbounds&quot;: [
    {
      &quot;type&quot;: &quot;vless&quot;,
      &quot;tag&quot;: &quot;in-vless-reality&quot;,
      &quot;listen&quot;: &quot;0.0.0.0&quot;,
      &quot;listen_port&quot;: [随机端口],

      &quot;reuse_addr&quot;: true,
      &quot;tcp_fast_open&quot;: true,

      &quot;users&quot;: [
        {
          &quot;name&quot;: &quot;client&quot;,
          &quot;uuid&quot;: &quot;你的uuid&quot;,
          &quot;flow&quot;: &quot;xtls-rprx-vision&quot;
        }
      ],
      &quot;tls&quot;: {
        &quot;enabled&quot;: true,
        &quot;server_name&quot;: &quot;www.cloudflare.com&quot;,
        &quot;alpn&quot;: [&quot;h2&quot;, &quot;http/1.1&quot;],
        &quot;reality&quot;: {
          &quot;enabled&quot;: true,
          &quot;handshake&quot;: {
            &quot;server&quot;: &quot;www.cloudflare.com&quot;,
            &quot;server_port&quot;: 443
          },
          &quot;private_key&quot;: &quot;[你的私钥]&quot;,
          &quot;short_id&quot;: [&quot;[你的short-id]&quot;]
        }
      }
    }
  ],
  &quot;dns&quot;: {
    &quot;servers&quot;: [
      { &quot;type&quot;: &quot;local&quot;, &quot;tag&quot;: &quot;local&quot; },
      { &quot;type&quot;: &quot;https&quot;, &quot;tag&quot;: &quot;cf&quot;, &quot;server&quot;: &quot;1.1.1.1&quot; }
    ],
    &quot;strategy&quot;: &quot;prefer_ipv6&quot;,
    &quot;final&quot;: &quot;local&quot;,
    &quot;cache_capacity&quot;: 4096
  },
  &quot;outbounds&quot;: [
    { &quot;type&quot;: &quot;direct&quot;, &quot;tag&quot;: &quot;direct&quot; }
  ],
  &quot;route&quot;: {
    &quot;default_domain_resolver&quot;: {
      &quot;server&quot;: &quot;local&quot;,
      &quot;strategy&quot;: &quot;prefer_ipv6&quot;
    },
    &quot;rules&quot;: [
      { &quot;ip_is_private&quot;: true, &quot;action&quot;: &quot;reject&quot; },
      { &quot;protocol&quot;: &quot;bittorrent&quot;, &quot;action&quot;: &quot;reject&quot; }
    ],
    &quot;final&quot;: &quot;direct&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用上面的随机高端口、私钥、uuid、short-id替换掉配置中的相关信息&lt;/p&gt;
&lt;p&gt;像这样&lt;code&gt;&quot;listen_port&quot;: [随机端口],&lt;/code&gt; --&amp;gt; &lt;code&gt;&quot;listen_port&quot;: 26375,&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;使用以下命令检验配置文件是否有语法错误&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sing-box check -c /etc/sing-box/config.json
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;启动服务&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 设置开机自启
sudo systemctl enable sing-box
# 启动服务
sudo systemctl start sing-box
# 查看服务状态
sudo systemctl status sing-box
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;代理链接&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;vless://[UUID]@[服务器IP]:[端口]?type=tcp&amp;amp;encryption=none&amp;amp;security=reality&amp;amp;flow=xtls-rprx-vision&amp;amp;sni=www.cloudflare.com&amp;amp;fp=chrome&amp;amp;pbk=[公钥]&amp;amp;sid=[short-id]#节点名字
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用生成的公钥、uuid、服务器ip、sing-box端口、公钥、short-id替换[相关内容]&lt;/p&gt;
&lt;h2&gt;测试&lt;/h2&gt;
&lt;p&gt;在[V2rayN](&lt;a href=&quot;https://github.com/2dust/v2rayn&quot;&gt;2dust/v2rayN: A GUI client for Windows, Linux and macOS, support Xray and sing-box and others&lt;/a&gt;)软件里导入测试是否连通&lt;/p&gt;
</content:encoded></item></channel></rss>