debain 下轻量桌面¶
background¶
事儿是这么开始的..
有一系列项目哈, 可以使用某个学校的内部机房资源, 当然, 这种内部主机必须进行合理的安全隔离;
所以, 俺想上去部署, 调试, 就得走 VPN 了;
但是, 同时, 日常使用各种墙外死活也得科学上网..
goal¶
问题来了..
- 国外资源, 走的是小火箭, 根据规则将相关请求从海外主机代理
- 校内资源, 走的是专线VPN, 也就是将当前主机拉到一个虚拟局域网
- 必须两种网络要求同时满足, 并不影响 VSCode 使用 SSH 远程工程能力, 直接打开远程主机目录进行调试..
logging¶
最简单粗暴的方法...
既然网络配置复杂到不是一般人能搞定的, 那就不折腾:
- MBP 本身还是小火箭经典翻越
- 访问校内资源的开发行为, 迁移到另外一台 home server 即可..
所以, 问题的解决就变成了如何在另外一台 mini PC 上部署合适的桌面以及 VPN 来完成可以随时从 MBP 桌面进入本地内网另外一个开发桌面中?
现成的: ASUS UN65U
$ neofetch
_,met$$$$$gg. zoomq@debian500
,g$$$$$$$$$$$$$$$P. ---------------
,g$$P" """Y$$.". OS: Debian GNU/Linux 12 (bookworm) x86_64
,$$P' `$$$. Host: UN65U
',$$P ,ggs. `$$b: Kernel: 6.1.0-28-amd64
`d$$' ,$P"' . $$$ Uptime: 1 day, 15 hours, 3 mins
$$P d$' , $$P Packages: 1612 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.2.15
$$; Y$b._ _,d$P' Terminal: /dev/pts/0
Y$$. `.`"Y$$$$P"' CPU: Intel i3-7100U (4) @ 2.400GHz
`$$b "-.__ GPU: Intel HD Graphics 620
`Y$$ Memory: 1790MiB / 7812MiB
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""
资源足够, 嘦:
- 安装桌面
- 安装 VNC 类似服务
- 安装 WireGuard 平替服务
- 安装 VSCode
- 配置好相关的一切...
桌面¶
当然是小巧的 Xfce
检验当前桌面环境:
# 查看当前显示管理器状态
systemctl status display-manager
# 查看已安装的桌面环境会话
ls /usr/share/xsessions/
# 检查当前运行的桌面环境
echo $XDG_CURRENT_DESKTOP
# 查看 X Server 是否运行
ps aux | grep -E 'X|Wayland'
# 检查已安装的桌面包
dpkg -l | grep -E 'desktop|xfce|gnome|kde|lxde|lxqt|mate|cinnamon'
技巧: 一定要先配置好加速的软件仓库镜像 ..netselect-apt 是一个轻量工具,可自动测试 Debian 镜像源的速度,并生成最优的 sources.list 配置文件。
sudo apt update && sudo apt install netselect-apt -y
# 测试并生成最快源配置
sudo netselect-apt bookworm
# 替换系统源配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 备份
sudo cp sources.list /etc/apt/sources.list # 替换为最快源配置
sudo apt update # 更新缓存生效
..apt-select 是另一个命令行工具,支持手动选择测试的镜像源区域(如仅国内源),并生成配置文件。
sudo apt install python3-pip -y
sudo pip3 install apt-select
sudo apt-select --country CN # 仅测试中国的镜像源
# 按提示选择最快的源,自动生成 sources.list..
安装 Xfce 轻量级桌面管理系统(WM)
# 更新软件包列表
sudo apt update
# 升级已安装的包
sudo apt upgrade -y
## 用 tasksel 安装 XFCE
# 安装 tasksel 工具
sudo apt install tasksel -y
# 运行 tasksel 并选择 XFCE
sudo tasksel
# 或直接安装 XFCE(不进入交互界面)
sudo apt install task-xfce-desktop -y
## 用 apt 直接安装
# 最小化安装
sudo apt install xfce4 -y
# 完整安装(包含额外工具)
sudo apt install xfce4 xfce4-goodies -y
VNC 为远程桌面服务¶
但是, 日常有各种粘贴问题..
# 安装 TightVNC
sudo apt install tightvncserver -y
# 设置 VNC 密码
vncpasswd
# 创建 VNC 启动配置
nano ~/.vnc/xstartup
# 添加以下内容:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
# 设置执行权限
chmod +x ~/.vnc/xstartup
# 启动 VNC 服务器
vncserver -geometry 1280x720 -depth 24
注意, 要根据本地显示器分辨率来启动合适的桌面大小
比如俺用的:
$ vncserver -geometry 1920x1080 -depth 24
New 'X' desktop is debian500:1
Starting applications specified in /home/zoomq/.vnc/xstartup
Log file is /home/zoomq/.vnc/debian500:1.log
对应常用管理指令:
# 1. 查看命令
vncserver -list # 列出当前用户的会话
ps aux | grep -i vnc # 查看所有 VNC 进程
ls ~/.vnc/*.pid # 查看 PID 文件
lsof -i :5901 # 查看端口占用
# 2. 启动命令
vncserver :1 # 启动显示 :1
vncserver :1 -geometry 1920x1080 # 指定分辨率
vncserver :1 -depth 24 # 指定色深
vncserver :1 -localhost no # 允许远程连接
# 3. 停止命令
vncserver -kill :1 # 停止显示 :1
vncserver -kill :* # 停止所有(某些版本支持)
killall Xvnc # 终止所有 VNC 进程
# 4. 清理命令
vncserver -clean # 清理锁文件(某些版本)
rm -f ~/.vnc/*.pid # 手动清理 PID 文件
rm -f /tmp/.X1-lock # 清理 X 锁文件
rm -f /tmp/.X11-unix/X1 # 清理 Unix socket
记住,显示号 :1 对应端口 5901,:2 对应 5902,以此类推
使用 SSH 隧道(最安全):
# 在客户端创建 SSH 隧道
ssh -L 3389:localhost:3389 user@server_ip
然后用 VNC 客户端连接到 localhost:3389
TODO:双向剪贴板共享¶
配置 macOS 端 RealVNC Viewer 确保客户端启用剪贴板共享,否则无法接收 / 发送剪贴板内容:
- 打开 RealVNC Viewer,连接到 Debian 的 TightVNC 服务(IP:5901,如 192.168.1.100:5901)。
- 连接成功后,点击顶部菜单栏 Connection → Properties(属性)。
- 切换到 Options 标签,找到 Clipboard 选项,选择 Share clipboard with remote(与远程共享),并确认方向为 Bidirectional(双向)。
- 关闭窗口,无需重新连接(实时生效)。
测试双向剪贴板是否生效
- 本地 → 远程:在 macOS 复制一段文本(Ctrl+C 或 Cmd+C),在 Debian 桌面的文本编辑器(如 gedit、Mousepad)中粘贴(Ctrl+V)。
- 远程 → 本地:在 Debian 复制文本(Ctrl+C),在 macOS 文本工具(如备忘录、终端)中粘贴(Cmd+V)。
# 测试 CLIPBOARD 剪贴板(Ctrl+C 复制的内容)
echo "测试远程→本地" | xclip -selection clipboard # 写入剪贴板
xclip -selection clipboard -o # 读取剪贴板,若输出内容则正常
# 测试 PRIMARY 剪贴板(选中即复制的内容)
echo "测试选中复制" | xsel -p # 写入 PRIMARY
xsel -p -o # 读取,正常则输出内容
WireGuard 平替¶
..Debian 12 上 WireGuard 的最佳替代就是 WireGuard 本身
sudo apt update && sudo apt install wireguard -y
# 生成密钥对
wg genkey | tee privatekey | wg pubkey > publickey
sudo nano /etc/wireguard/wg0.conf
配置模板:
[Interface]
PrivateKey = <你的私钥>
Address = 10.0.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = <对端公钥>
Endpoint = <对端IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
启用:
sudo wg-quick up wg0
# ✅ 检查连接状态
sudo wg show
# 🧪 检验是否代理成功
curl ifconfig.me
wg-quick 脚本默认使用 resolvconf 来管理 DNS 设置
sudo apt update
sudo apt install resolvconf -y
sudo systemctl enable --now resolvconf
TODO:WireGuard Web UI
wg-easy(Docker 版,5 分钟上桌)¶
准备 Docker:
curl -fsSL https://get.docker.com | sudo bash
sudo usermod -aG docker $USER && newgrp docker
一键拉起 wg-easy
docker run -d \
--name=wg-easy \
-e WG_HOST=`curl -s ifconfig.me` \
-e PASSWORD=SupStrong@2025 \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl net.ipv4.conf.all.src_valid_mark=1 \
--sysctl net.ipv4.ip_forward=1 \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy:15
放行端口(如启用了 nftables/ufw)
sudo ufw allow 51820/udp && sudo ufw allow 51821/tcp
- 浏览器访问 http://<服务器IP>:51821 → 输入密码即可进入。
- 点击「New Client」→ 生成二维码/配置文件 → 手机 WireGuard App 扫码导入。
- 客户端连接后刷新页面,能看到「Last seen」及实时流量,说明隧道已通 。
VSCode¶
原先想用 Zed 来替代的, 结果无法安装..
M$ 的产品, 别的不说, 软件工程至少是过关的, 安装很流畅, 立即就能使用;
只是, 字体是个大问题, 要小心折腾一下:
# 查阅所有已安装字体
fc-list
# 查阅所有等宽字体
fc-list :monospace
一般而言对于编程友好的字体, 没有中文支持, 有中文支持的不一定有 Nerd 符号..
而所有都吻合期待的非常少,可以随时下载到并长期维护有保证的,
推荐: 更纱黑体 Mono SC Nerd (等宽简体中文版本,带 Nerd Font 图标补丁)
以及官方推荐的中国镜像:
- TUNA (CN): https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Sarasa-Gothic
- NJU (CN): https://mirror.nju.edu.cn/github-release/be5invis/Sarasa-Gothic
# 创建临时目录存放字体
mkdir -p ~/sarasa-nerd-font && cd ~/sarasa-nerd-font
# 下载最新版本的更纱黑体 Nerd Font 包(以当前最新版本为例,可替换为实际最新版)
# 版本号可在 https://github.com/be5invis/Sarasa-Gothic/releases 查看
wget https://github.com/be5invis/Sarasa-Gothic/releases/download/v0.41.5/sarasa-gothic-nerd-fonts-v0.41.5.zip
# 解压
unzip sarasa-gothic-nerd-fonts-v0.41.5.zip
# 查看包含的 Mono SC Nerd 字体(文件名通常包含 "SarasaMonoSC-Nerd")
ls | grep "SarasaMonoSC-Nerd"
# 创建用户级字体目录(如果不存在)
mkdir -p ~/.local/share/fonts/sarasa-mono-sc-nerd
# 复制筛选出的字体文件到该目录
cp SarasaMonoSC-Nerd-*.ttf ~/.local/share/fonts/sarasa-mono-sc-nerd/
fc-cache -f -v ~/.local/share/fonts # 用户级安装,更新用户字体缓存
# 系统级安装则运行:sudo fc-cache -f -v /usr/local/share/fonts
# 最后检验安装成果
$ fc-list | grep "Sarasa"
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-LightItalic.ttf: 等距更纱黑体 SC,Sarasa Mono SC,Sarasa Mono SC Light,等距更纱黑体 SC Light:style=Light Italic,Italic
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-Italic.ttf: 等距更纱黑体 SC,Sarasa Mono SC:style=Italic
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-ExtraLightItalic.ttf: 等距更纱黑体 SC,Sarasa Mono SC,Sarasa Mono SC XLight,等距更纱黑体 SC XLight:style=ExtraLight Italic,Italic
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-BoldItalic.ttf: 等距更纱黑体 SC,Sarasa Mono SC:style=Bold Italic
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-Regular.ttf: 等距更纱黑体 SC,Sarasa Mono SC:style=Regular
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-Light.ttf: 等距更纱黑体 SC,Sarasa Mono SC,Sarasa Mono SC Light,等距更纱黑体 SC Light:style=Light,Regular
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-Bold.ttf: 等距更纱黑体 SC,Sarasa Mono SC:style=Bold
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-ExtraLight.ttf: 等距更纱黑体 SC,Sarasa Mono SC,Sarasa Mono SC XLight,等距更纱黑体 SC XLight:style=ExtraLight,Regular
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-SemiBoldItalic.ttf: 等距更纱黑体 SC,Sarasa Mono SC,Sarasa Mono SC SemiBold,等距更纱黑体 SC SemiBold:style=SemiBold Italic,Italic
/usr/local/share/fonts/sarasa-mono-sc/SarasaMonoSC-SemiBold.ttf: 等距更纱黑体 SC,Sarasa Mono SC,Sarasa Mono SC SemiBold,等距更纱黑体 SC SemiBold:style=SemiBold,Regular
小结¶
- 直接问 LLM 比一个个钻官方文档靠谱的多, 只是要注意, 具体指令还是得先对比一下官方文档, 毕竟有时差
- 字体是个大问题..所以, 解决 Linux 中的中文字体, 不如, 直接从 macOS 上远程进入 Linux 本地主机, 再继续 SSH 到校内主机, 进行双重远程..
- RustDesk 很时尚, 但是, 无论客户端还是本地服务, 都不是那么简单可以安装配置成功的, 使用传统 VNC 就好
- 其它还有推荐的:
- NoMachine 太丑
- TeamViewer 收费
- xrdp 只能 windows
- AnyDesk Linux 上安装不能
refer.¶
tracing¶
- 251112 DAMA pub
- 251111 DAMA init.
nn 6020
_~∽*`~_
() / ^ ◴ \ (/
'_ v _'
| '--⌄--' )
...act by ferris-actor v0.2.4 (built on 23.0303.201916)
旧[utteranc.es]注释: