2114 字
11 分钟
在 Linux 服务器上搭建 Code-Server
2025-09-26

什么是 Code-Server?#

code-server 是一个可以在远程服务器上运行的 VS Code 版本,你可以在浏览器中访问它。这意味着你可以在任何设备(笔记本电脑、平板电脑、甚至手机)上获得完整的 VS Code 开发体验,而无需在本地安装任何东西,并且你的计算资源集中在服务器上。

准备工作 (Prerequisites)#

在开始之前,请确保你具备以下条件:

  1. 一台 Linux 服务器: (例如 Ubuntu 20.04+, Debian 10+, CentOS 7+)。
  2. sudo 权限: 用于执行系统级命令。
  3. SSH 访问: 你需要通过 SSH 连接到你的服务器。
  4. 开放端口: 确保服务器防火墙允许外部连接到 code-server 使用的端口 (默认 8080) 和 HTTPS 端口 (443)。
  5. 一个域名 (可选但强烈推荐): 如果你想配置 HTTPS 和易于记忆的访问地址,需要一个指向你服务器 IP 地址的域名。

步骤一:更新系统并安装基本工具#

首先,连接到你的 Linux 服务器,并更新你的软件包列表,然后安装一些常用的工具。

对于 Ubuntu/Debian 系统:

Terminal window
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl wget git unzip ufw

对于 CentOS/RHEL 系统:

Terminal window
sudo yum update -y
sudo yum install -y curl wget git unzip
sudo systemctl enable --now firewalld # 确保firewalld运行

步骤二:安装 Code-Server#

安装 code-server 最简单的方法是使用其官方提供的一键安装脚本。这个脚本会下载最新版本的 code-server,并将其安装到你的用户目录下。

  1. 切换到你的用户目录: 通常,code-server 会安装到当前用户的 ~/.local/bin 目录。我们建议以非 root 用户身份运行 code-server 以提高安全性。

    Terminal window
    cd ~
  2. 运行安装脚本:

    Terminal window
    curl -fsSL https://code-server.dev/install.sh | sh
    • 这个脚本会下载 code-server 的最新发布版本。
    • 它将 code-server 可执行文件放置在 ~/.local/bin/ 目录下。
    • 它还会设置一个 systemd 用户服务,方便你管理 code-server 的启动和停止。

    安装完成后,你可能会看到类似以下输出:

    Terminal window
    code-server is installed!
    systemd service created: ~/.config/systemd/user/code-server.service
    To start code-server:
    systemctl --user enable --now code-server
    To check status:
    systemctl --user status code-server
    To configure:
    ~/.config/code-server/config.yaml

步骤三:配置 Code-Server#

code-server 的配置文件位于 ~/.config/code-server/config.yaml。你需要在这里设置密码和监听地址。

  1. 编辑配置文件:

    Terminal window
    nano ~/.config/code-server/config.yaml
  2. 修改配置: 找到文件中的 passwordbind-addr 配置项。

    Terminal window
    bind-addr: 127.0.0.1:8080 # 默认监听本地回环地址,只能本地访问。
    # 若要外部访问,需改为 0.0.0.0:8080
    auth: password
    password: # 在这里设置你的强密码
    cert: false

    重要更改:

    • bind-addr: 127.0.0.1:8080 改为 bind-addr: 0.0.0.0:8080 以允许从外部 IP 访问。
    • password: 后设置一个强密码。例如:password: YourStrongSecurePassword123!

    修改后的示例:

    Terminal window
    bind-addr: 0.0.0.0:8080
    auth: password
    password: YourStrongSecurePassword123!
    cert: false
    # 其他默认配置...

    保存并退出 (Nano 编辑器:Ctrl + O,回车,Ctrl + X)。

步骤四:管理 Code-Server 服务#

安装脚本已经为你创建了一个 systemd 用户服务。你需要启用并启动这个服务,让 code-server 在后台运行并开机自启。

  1. 启用并启动 Code-Server 服务:

    Terminal window
    systemctl --user enable --now code-server
    • --user 参数表示这是针对当前用户的服务,而不是系统级别的服务。
    • enable 会让服务开机自启。
    • --now 会立即启动服务。
  2. 检查 Code-Server 状态:

    Terminal window
    systemctl --user status code-server

    如果一切正常,你会看到 active (running) 的状态。 按 q 退出状态查看。

  3. 查看日志 (如果有问题):

    Terminal window
    journalctl --user -u code-server -f

    这会显示 code-server 的实时日志,有助于排查问题。按 Ctrl + C 退出。

步骤五:配置服务器防火墙#

现在 code-server 已经在服务器上运行了,但是你可能需要调整防火墙设置以允许外部访问。默认的 code-server 端口是 8080

对于 Ubuntu/Debian (UFW 防火墙):

  1. 允许 8080 端口:

    Terminal window
    sudo ufw allow 8080/tcp
  2. 检查 UFW 状态 (确保已启用):

    Terminal window
    sudo ufw status

    如果 UFW 未启用,请启用它:

    Terminal window
    sudo ufw enable

    (注意:启用 UFW 前请确保已允许 SSH 端口 22,否则你可能会断开连接!)

对于 CentOS/RHEL (Firewalld 防火墙):

  1. 允许 8080 端口:

    Terminal window
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
  2. 重新加载 Firewalld 配置:

    Terminal window
    sudo firewall-cmd --reload

步骤六:通过浏览器访问 Code-Server#

现在你可以通过浏览器访问你的 code-server 了。

  1. 打开你的网页浏览器。
  2. 在地址栏输入:http://你的服务器IP地址:8080
  3. 你会被要求输入之前在 config.yaml 中设置的密码。
  4. 输入密码后,你将看到熟悉的 VS Code 界面!

步骤七:通过 Nginx 配置 HTTPS 访问 (强烈推荐!)#

直接通过 http://你的IP:8080 访问是不安全的,因为它没有加密且直接暴露端口。强烈建议通过 Nginx 或 Caddy 等反向代理来配置 HTTPS 访问。

本教程以 Nginx 为例,并使用 Certbot 自动签发 Let’s Encrypt 证书。

7.1 安装 Nginx 和 Certbot#

对于 Ubuntu/Debian:

Terminal window
sudo apt install -y nginx certbot python3-certbot-nginx

对于 CentOS/RHEL:

Terminal window
sudo yum install -y nginx
sudo systemctl enable --now nginx
# 安装 EPEL 仓库获取 Certbot
sudo yum install -y epel-release
sudo yum install -y certbot python3-certbot-nginx

7.2 配置 Nginx#

创建一个新的 Nginx 配置文件来代理 code-server

  1. 创建 Nginx 配置文件:

    Terminal window
    sudo nano /etc/nginx/sites-available/code-server
  2. 粘贴以下配置内容,并替换 your_domain.com 为你的实际域名:

    server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com; # 替换为你的域名
    # Certbot 挑战,用于 Let's Encrypt 证书申请
    location /.well-known/acme-challenge/ {
    root /var/www/html;
    }
    location / {
    # 永久重定向到 HTTPS
    return 301 https://$host$request_uri;
    }
    }
    # 这是一个占位符,Certbot 会自动生成 HTTPS 的 server 块
    # 但我们先把它写下来,Certbot 会帮我们填充证书路径
    server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name your_domain.com; # 替换为你的域名
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; # Certbot 会自动填充
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; # Certbot 会自动填充
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    ssl_prefer_server_ciphers on;
    # 增加一些安全头部
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    location / {
    proxy_pass http://localhost:8080/; # code-server 监听的本地地址和端口
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Accept-Encoding gzip;
    # 兼容 Websocket (VS Code 扩展需要)
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }
    }

    保存并退出。

  3. 创建符号链接,启用配置:

    Terminal window
    sudo ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/
  4. 测试 Nginx 配置:

    Terminal window
    sudo nginx -t

    如果显示 syntax is oktest is successful,则配置无误。

  5. 重新加载 Nginx:

    Terminal window
    sudo systemctl reload nginx

7.3 配置防火墙允许 HTTP/HTTPS#

你需要确保防火墙允许 Nginx 使用的 80 (HTTP) 和 443 (HTTPS) 端口。

对于 Ubuntu/Debian (UFW 防火墙):

Terminal window
sudo ufw allow 'Nginx Full' # 允许 HTTP 和 HTTPS
# 或者分别允许:
# sudo ufw allow http
# sudo ufw allow https
sudo ufw reload

对于 CentOS/RHEL (Firewalld 防火墙):

Terminal window
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

7.4 签发 Let’s Encrypt 证书#

现在使用 Certbot 为你的域名签发免费的 SSL/TLS 证书。

Terminal window
sudo certbot --nginx -d your_domain.com
  • Certbot 会询问你的邮箱地址(用于接收证书过期提醒)。
  • 同意服务条款。
  • 它会自动检测 Nginx 配置并修改它以包含证书路径。
  • Certbot 会询问是否将所有 HTTP 请求重定向到 HTTPS。选择 2 (Redirect) ,推荐重定向。

如果一切顺利,你会看到成功的消息,并且你的证书已经签发并配置到 Nginx 中。

7.5 再次通过浏览器访问#

现在,在浏览器中输入你的域名,例如:https://your_domain.com

你将看到一个安全的 HTTPS 连接,并且会要求你输入 code-server 的密码。

步骤八:其他常用操作和提示#

  1. Code-Server 的更新: 定期运行安装脚本可以更新 code-server 到最新版本:

    Terminal window
    curl -fsSL https://code-server.dev/install.sh | sh
    systemctl --user restart code-server
  2. 安装 VS Code 扩展:code-server 界面中,像普通 VS Code 一样点击左侧的“Extensions”图标 (或 Ctrl+Shift+X),然后搜索并安装你需要的扩展。

  3. 停止/重启 Code-Server 服务:

    • 停止:systemctl --user stop code-server
    • 重启:systemctl --user restart code-server
    • 禁用开机自启:systemctl --user disable code-server
  4. 目录和文件权限: code-server 会以你登录的用户身份运行。这意味着它只能访问该用户有权限的目录和文件。如果你需要编辑其他用户的文件,请确保当前用户有适当的读取/写入权限。

  5. 资源使用: code-server 在运行时会占用服务器的内存和 CPU。如果你的服务器资源有限,开启太多扩展或同时打开大量文件可能会导致性能下降。

恭喜!#

你已成功在 Linux 服务器上搭建了 code-server,并配置了安全的 HTTPS 访问。现在,你可以在任何地方通过浏览器享受强大的 VS Code 开发体验了!

在 Linux 服务器上搭建 Code-Server
https://www.yn65.com/posts/a9/
作者
晨平安
发布于
2025-09-26
许可协议
CC BY-NC-SA 4.0
封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00