Ubuntu 使用 systemd + Nginx 部署 code-server(含 HTTPS)

一、code-server 简介

code-server 是 Coder 团队开源的项目,它可以让你在浏览器中运行 VS Code,实现远程开发环境的统一管理,适用于:

  • 云服务器远程开发
  • 内网 / 局域网开发
  • CI / 开发机统一环境
  • 无法安装 VS Code 客户端的场景

GitHub 官方仓库:

👉 https://github.com/coder/code-server


二、下载 code-server(指定版本 v4.108.1)

本教程 不使用一键安装脚本 ,而是直接从 GitHub Releases 下载指定版本,方便版本锁定和生产环境部署。

1️⃣ 下载二进制包

以 Linux x86_64 为例:

bash 复制代码
cd /tmp

wget https://github.com/coder/code-server/releases/download/v4.108.1/code-server-4.108.1-linux-amd64.tar.gz

如果你的服务器是 ARM 架构,请下载对应版本(如 linux-arm64)。


2️⃣ 解压并安装

bash 复制代码
tar -zxvf code-server-4.108.1-linux-amd64.tar.gz
sudo mv code-server-4.108.1-linux-amd64 /opt/code-server

创建软链接,方便全局使用:

bash 复制代码
sudo ln -s /opt/code-server/bin/code-server /usr/bin/code-server

验证安装:

bash 复制代码
code-server --version

输出类似:

复制代码
4.108.1

三、使用 systemd 创建 code-server 服务

1️⃣ 创建 systemd 服务文件

使用 echo 命令自动创建服务文件:

bash 复制代码
echo "[Unit]
Description=code-server
After=network.target

[Service]
Type=exec
ExecStart=/usr/bin/code-server
User=ubuntu
Restart=always

[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/code-server.service > /dev/null

📌 说明:

  • User=ubuntu:使用普通用户运行,更安全
  • ExecStart=/usr/bin/code-server:指向刚才创建的软链接
  • Restart=always:异常自动重启

2️⃣ 重新加载 systemd

bash 复制代码
sudo systemctl daemon-reload

3️⃣ 设置开机自启并启动

bash 复制代码
sudo systemctl enable code-server
sudo systemctl start code-server

4️⃣ 查看服务状态

bash 复制代码
sudo systemctl status code-server

四、code-server 默认端口说明

code-server 默认监听:

复制代码
127.0.0.1:8080

只监听本地地址,必须通过反向代理或 SSH 隧道访问,安全性更好。


五、使用 Nginx 反向代理 code-server(HTTPS)

下面示例使用 mkcert 生成的本地证书,生产环境可替换为正规 CA 证书。


1️⃣ Nginx 配置示例

nginx 复制代码
server {
    listen 443 ssl;
    http2 on;
    server_name 192.168.31.142;

    ssl_certificate     /root/shiyan/localhost+3.pem;
    ssl_certificate_key /root/shiyan/localhost+3-key.pem;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    location / {
        proxy_pass http://localhost:8080/;

        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }
}

⚠️ 注意:

  • WebSocket 相关 Header 必须配置,否则编辑器无法正常使用
  • proxy_pass 地址需与 code-server 监听端口一致

2️⃣ 重载 Nginx

bash 复制代码
sudo nginx -t
sudo systemctl reload nginx

六、访问 code-server

浏览器访问:

复制代码
https://192.168.31.142

首次登录需要输入 code-server 密码,密码位置:

bash 复制代码
~/.config/code-server/config.yaml

示例内容:

yaml 复制代码
bind-addr: 127.0.0.1:8080
auth: password
password: your_password_here

七、常见问题排查

1️⃣ 服务启动失败

查看日志:

bash 复制代码
journalctl -u code-server -f

重点检查:

  • ExecStart 路径是否正确
  • User=ubuntu 是否存在
  • /opt/code-server 权限是否正确

2️⃣ 页面能打开但无法编辑

👉 99% 是 Nginx WebSocket 头未配置完整


八、总结

本文演示了:

  • 从 GitHub Releases 下载 指定版本 v4.108.1
  • 使用 systemd 管理 code-server
  • 普通用户运行,安全可靠
  • Nginx + HTTPS 反向代理访问
  • 适合生产环境和企业内部使用
相关推荐
xixingzhe27 小时前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
荒--8 小时前
Ubuntu软件包查询,弹框下载文件
运维·服务器·ubuntu
闲云自留地9 小时前
CentOS 搬 Ubuntu 24.04:yum 变 apt、防火墙、SELinux、root 全差异避坑
linux·ubuntu·centos
北风toto10 小时前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元12 小时前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
xiaobobo333013 小时前
Ubuntu 26.04环境中如何使用中文man手册以及man手册默认中文显示
ubuntu·中文man手册·man手册默认中文显示·简化man·cheat
菜菜的院子13 小时前
WSL2 运行 Ubuntu 26.04 完整 GNOME 桌面(WSLg Wayland)
linux·运维·ubuntu·wsl
小小龙学IT14 小时前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源
青瓦梦滋14 小时前
【在线五子棋对战】游戏匹配模块
网络·c++·网络协议·http·https
KIDULT°15 小时前
Kubeadm 部署 Kubernetes v1.30.2 实战:Ubuntu24.04 三节点集群 + 排坑记录
ubuntu·云原生·容器·kubernetes·k8s