在 Ubuntu 服务器上装图形界面(GUI),这事儿得看你的具体场景。是临时远程桌面调试?还是长期作为轻量级工作站使用?亦或是为了跑某些带 GUI 的 Linux 软件(如数据库管理工具、开发环境等)?
不同的需求,对应的“姿势”完全不同。别一上来就 apt install ubuntu-desktop,那玩意儿包太大,依赖太多,服务器资源浪费严重,而且容易把系统搞崩。
下面分几种常见方案,从轻量到重量级,按推荐程度排序:
方案一:VNC + 轻量级桌面(最推荐,适合运维/开发日常使用)
这是最经典、最稳定、资源占用最低的方案。核心思路是:不安装完整的 Ubuntu Desktop 桌面环境,只安装一个轻量级的窗口管理器 + VNC Server。
适用场景:需要偶尔用鼠标操作、运行简单 GUI 程序、不想消耗过多内存和 CPU。
1. 安装轻量级桌面环境
这里推荐 XFCE 或 LXDE。XFCE 功能更全一点,LXDE 更轻。我们以 XFCE 为例:
sudo apt update
sudo apt install xfce4 xfce4-goodies -y
2. 安装 VNC Server
推荐 TigerVNC 或 xrdp(如果你习惯用 Windows 远程桌面客户端)。这里以 TigerVNC 为例,因为它配置相对简单,且安全性可控。
sudo apt install tigervnc-standalone-server tigervnc-common -y
3. 配置 VNC
首次启动 VNC 会生成配置文件和密钥:
vncserver :1
此时它会让你设置一个密码(注意:VNC 密码限制8位,超过部分会被截断,建议设个简单的测试密码,生产环境记得改强密码或通过 SSH 隧道连接)。
然后你需要编辑配置文件,确保每次重启都能自动启动,或者通过 systemd 管理。但更简单的做法是直接写入启动脚本,或者使用 ~/.vnc/xstartup 来指定启动 XFCE。
编辑 ~/.vnc/xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
赋予执行权限:
chmod +x ~/.vnc/xstartup
然后杀掉之前的进程,重新启动:
vncserver -kill :1
vncserver :1
现在,你可以用任何 VNC Viewer(如 RealVNC, TightVNC, TigerVNC)连接服务器的 IP 和端口(默认 5901)了。
优点:资源占用极低(内存可能只有几百 MB),启动快,稳定性好。
缺点:没有完整的桌面体验,多用户支持弱。
方案二:XRDP(适合习惯 Windows 远程桌面的用户)
如果你家里有一台 Windows 电脑,想直接用它自带的“远程桌面连接”连到 Ubuntu 服务器,那就选 XRDP。
适用场景:Windows 用户为主,需要完整的桌面体验,对安全性要求不高(需配合防火墙)。
1. 安装 XRDP
sudo apt update
sudo apt install xrdp -y
2. 安装图形界面(同上)
XRDP 需要一个图形后端,所以你还是得装一个桌面环境。同样推荐 XFCE,因为 GNOME 和 Unity 与 XRDP 兼容性有时会有问题(比如黑屏、闪退)。
sudo apt install xfce4 xfce4-goodies -y
3. 配置 XRDP 使用 XFCE
创建 .xsessionrc 文件,告诉 XRDP 启动时加载 XFCE:
echo "startxfce4" > ~/.xsessionrc
4. 启动服务并设置开机自启
sudo systemctl enable xrdp
sudo systemctl start xrdp
5. 防火墙设置
确保 3389 端口开放:
sudo ufw allow 3389/tcp
现在,你可以在 Windows 上打开“远程桌面连接”,输入服务器 IP,选择 RDP 协议连接即可。
优点:无缝集成 Windows 远程桌面体验,支持剪贴板共享、打印机重定向等。
缺点:XRDP 在某些版本下与 GNOME 兼容性问题较多;安全性需注意,建议不要直接暴露公网,最好通过 SSH 隧道转发 3389 端口。
方案三:完整 Ubuntu Desktop(不推荐用于纯服务器)
如果你非要装完整的 ubuntu-desktop,那就是以下命令:
sudo tasksel install ubuntu-desktop
或者手动安装:
sudo apt install ubuntu-desktop-minimal
强烈不建议这样做,除非你明确知道自己在做什么。原因如下:
- 资源浪费:GNOME 桌面非常吃内存(通常启动后就要 1GB+ RAM),对于云服务器来说,这是巨大的成本浪费。
- 安全风险:图形界面引入了更多的攻击面。
- 维护困难:更新频繁,依赖复杂,容易与其他服务器软件冲突。
- 无必要:大多数服务器任务都可以通过命令行完成。
关键注意事项(避坑指南)
-
安全!安全!安全!
- 永远不要将 VNC 或 XRDP 的端口直接暴露在公网上!
- 正确做法:使用 SSH 端口转发(Port Forwarding)。
- VNC 示例:
ssh -L 5901:localhost:5901 user@your_server_ip - XRDP 示例:
ssh -L 3389:localhost:3389 user@your_server_ip
- VNC 示例:
- 这样,你只需要在本机浏览器或客户端访问
localhost:5901或localhost:3389,流量经过加密的 SSH 通道,极其安全。
-
云厂商的安全组
- 如果你在阿里云、腾讯云、AWS 等云平台,记得在控制台的安全组(Security Group)中放行相应端口(如果不用 SSH 隧道的話)。但再次强调,推荐使用 SSH 隧道,安全组里只开 22 端口。
-
字体问题
- 刚装完 GUI,可能会发现中文显示为方块。这是因为缺少中文字体。
- 安装字体:
sudo apt install fonts-noto-cjk fonts-wqy-zenhei -y - 刷新字体缓存:
fc-cache -fv
-
性能优化
- 如果服务器配置很低(如 1核1G),建议使用 LXDE 而不是 XFCE,甚至可以考虑只用
x11vnc连接已有的物理显示器(如果有),但这在云服务器上不现实。 - 避免在 GUI 环境下运行重型应用(如 IDE、视频编辑),CLI 才是服务器的王道。
- 如果服务器配置很低(如 1核1G),建议使用 LXDE 而不是 XFCE,甚至可以考虑只用
总结
- 轻度使用/运维调试 → XFCE + VNC(通过 SSH 隧道)
- Windows 用户/需要完整桌面 → XFCE + XRDP(通过 SSH 隧道)
- 其他情况 → 别装 GUI,命令行真香。
记住,服务器上的图形界面只是“工具”,不是“目的”。用得越少,系统越稳,越安全。
云技术博客