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 反向代理访问
  • 适合生产环境和企业内部使用
相关推荐
JiaWen技术圈16 小时前
nginx 安全响应头 介绍
运维·nginx·安全
阿里云云原生20 小时前
从 Nginx 堆溢出看网关安全:为什么说“指令式配置”正在成为攻击面的温床?
nginx
LN花开富贵20 小时前
Ubuntu aarch64 架构安装 NoMachine 远程控制 避坑与实战
linux·运维·笔记·学习·ubuntu·嵌入式
取经蜗牛20 小时前
Windows 11 WSL + Ubuntu 24.04 安装指南
linux·windows·ubuntu
00后程序员张1 天前
HTTPS单向认证、双向认证、抓包原理与反抓包策略详解
网络协议·http·ios·小程序·https·uni-app·iphone
bush41 天前
linux开发板连接virtualbox虚拟机ubuntu的usb网卡,访问外网方法。
linux·运维·ubuntu
m0_751018661 天前
docker 安装 nginx
vue.js·nginx·docker
大明者省1 天前
完整 Ubuntu 服务器 XFCE 桌面 + XRDP 远程桌面 部署使用全流程
运维·服务器·ubuntu
幽络源小助理1 天前
PS网页版源码_在线Photoshop源码_Nginx免环境部署_支持PSD
nginx·ui·photoshop
林三的日常1 天前
Nginx-Rift 漏洞
运维·nginx