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 反向代理访问
  • 适合生产环境和企业内部使用
相关推荐
木头左15 小时前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
Linux-lucky15 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默15 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816316 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
没差c1 天前
winsw将jar、nginx等注册为Windows服务
windows·nginx·jar
FungLeo1 天前
成为全栈·基础补充·域名、DNS 与 HTTPS 证书
https·网络基础·网站部署·tls证书·成为全栈·域名 dns
David猪大卫2 天前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
且从容.2 天前
Ubuntu 安装 Docker
linux·ubuntu·docker
Lsetea3 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
承渊政道3 天前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll