
什么是 Code-Server?
code-server
是一个可以在远程服务器上运行的 VS Code 版本,你可以在浏览器中访问它。这意味着你可以在任何设备(笔记本电脑、平板电脑、甚至手机)上获得完整的 VS Code 开发体验,而无需在本地安装任何东西,并且你的计算资源集中在服务器上。
准备工作 (Prerequisites)
在开始之前,请确保你具备以下条件:
- 一台 Linux 服务器: (例如 Ubuntu 20.04+, Debian 10+, CentOS 7+)。
sudo
权限: 用于执行系统级命令。- SSH 访问: 你需要通过 SSH 连接到你的服务器。
- 开放端口: 确保服务器防火墙允许外部连接到
code-server
使用的端口 (默认 8080) 和 HTTPS 端口 (443)。 - 一个域名 (可选但强烈推荐): 如果你想配置 HTTPS 和易于记忆的访问地址,需要一个指向你服务器 IP 地址的域名。
步骤一:更新系统并安装基本工具
首先,连接到你的 Linux 服务器,并更新你的软件包列表,然后安装一些常用的工具。
对于 Ubuntu/Debian 系统:
sudo apt updatesudo apt upgrade -ysudo apt install -y curl wget git unzip ufw
对于 CentOS/RHEL 系统:
sudo yum update -ysudo yum install -y curl wget git unzipsudo systemctl enable --now firewalld # 确保firewalld运行
步骤二:安装 Code-Server
安装 code-server
最简单的方法是使用其官方提供的一键安装脚本。这个脚本会下载最新版本的 code-server
,并将其安装到你的用户目录下。
-
切换到你的用户目录: 通常,
code-server
会安装到当前用户的~/.local/bin
目录。我们建议以非 root 用户身份运行code-server
以提高安全性。Terminal window cd ~ -
运行安装脚本:
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.serviceTo start code-server:systemctl --user enable --now code-serverTo check status:systemctl --user status code-serverTo configure:~/.config/code-server/config.yaml - 这个脚本会下载
步骤三:配置 Code-Server
code-server
的配置文件位于 ~/.config/code-server/config.yaml
。你需要在这里设置密码和监听地址。
-
编辑配置文件:
Terminal window nano ~/.config/code-server/config.yaml -
修改配置: 找到文件中的
password
和bind-addr
配置项。Terminal window bind-addr: 127.0.0.1:8080 # 默认监听本地回环地址,只能本地访问。# 若要外部访问,需改为 0.0.0.0:8080auth: passwordpassword: # 在这里设置你的强密码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:8080auth: passwordpassword: YourStrongSecurePassword123!cert: false# 其他默认配置...保存并退出 (Nano 编辑器:
Ctrl + O
,回车,Ctrl + X
)。 - 将
步骤四:管理 Code-Server 服务
安装脚本已经为你创建了一个 systemd
用户服务。你需要启用并启动这个服务,让 code-server
在后台运行并开机自启。
-
启用并启动 Code-Server 服务:
Terminal window systemctl --user enable --now code-server--user
参数表示这是针对当前用户的服务,而不是系统级别的服务。enable
会让服务开机自启。--now
会立即启动服务。
-
检查 Code-Server 状态:
Terminal window systemctl --user status code-server如果一切正常,你会看到
active (running)
的状态。 按q
退出状态查看。 -
查看日志 (如果有问题):
Terminal window journalctl --user -u code-server -f这会显示
code-server
的实时日志,有助于排查问题。按Ctrl + C
退出。
步骤五:配置服务器防火墙
现在 code-server
已经在服务器上运行了,但是你可能需要调整防火墙设置以允许外部访问。默认的 code-server
端口是 8080
。
对于 Ubuntu/Debian (UFW 防火墙):
-
允许 8080 端口:
Terminal window sudo ufw allow 8080/tcp -
检查 UFW 状态 (确保已启用):
Terminal window sudo ufw status如果 UFW 未启用,请启用它:
Terminal window sudo ufw enable(注意:启用 UFW 前请确保已允许 SSH 端口 22,否则你可能会断开连接!)
对于 CentOS/RHEL (Firewalld 防火墙):
-
允许 8080 端口:
Terminal window sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent -
重新加载 Firewalld 配置:
Terminal window sudo firewall-cmd --reload
步骤六:通过浏览器访问 Code-Server
现在你可以通过浏览器访问你的 code-server
了。
- 打开你的网页浏览器。
- 在地址栏输入:
http://你的服务器IP地址:8080
- 你会被要求输入之前在
config.yaml
中设置的密码。 - 输入密码后,你将看到熟悉的 VS Code 界面!
步骤七:通过 Nginx 配置 HTTPS 访问 (强烈推荐!)
直接通过 http://你的IP:8080
访问是不安全的,因为它没有加密且直接暴露端口。强烈建议通过 Nginx 或 Caddy 等反向代理来配置 HTTPS 访问。
本教程以 Nginx 为例,并使用 Certbot 自动签发 Let’s Encrypt 证书。
7.1 安装 Nginx 和 Certbot
对于 Ubuntu/Debian:
sudo apt install -y nginx certbot python3-certbot-nginx
对于 CentOS/RHEL:
sudo yum install -y nginxsudo systemctl enable --now nginx
# 安装 EPEL 仓库获取 Certbotsudo yum install -y epel-releasesudo yum install -y certbot python3-certbot-nginx
7.2 配置 Nginx
创建一个新的 Nginx 配置文件来代理 code-server
。
-
创建 Nginx 配置文件:
Terminal window sudo nano /etc/nginx/sites-available/code-server -
粘贴以下配置内容,并替换
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 / {# 永久重定向到 HTTPSreturn 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;}}保存并退出。
-
创建符号链接,启用配置:
Terminal window sudo ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/ -
测试 Nginx 配置:
Terminal window sudo nginx -t如果显示
syntax is ok
和test is successful
,则配置无误。 -
重新加载 Nginx:
Terminal window sudo systemctl reload nginx
7.3 配置防火墙允许 HTTP/HTTPS
你需要确保防火墙允许 Nginx 使用的 80 (HTTP) 和 443 (HTTPS) 端口。
对于 Ubuntu/Debian (UFW 防火墙):
sudo ufw allow 'Nginx Full' # 允许 HTTP 和 HTTPS# 或者分别允许:# sudo ufw allow http# sudo ufw allow httpssudo ufw reload
对于 CentOS/RHEL (Firewalld 防火墙):
sudo firewall-cmd --zone=public --add-service=http --permanentsudo firewall-cmd --zone=public --add-service=https --permanentsudo firewall-cmd --reload
7.4 签发 Let’s Encrypt 证书
现在使用 Certbot 为你的域名签发免费的 SSL/TLS 证书。
sudo certbot --nginx -d your_domain.com
- Certbot 会询问你的邮箱地址(用于接收证书过期提醒)。
- 同意服务条款。
- 它会自动检测 Nginx 配置并修改它以包含证书路径。
- Certbot 会询问是否将所有 HTTP 请求重定向到 HTTPS。选择 2 (Redirect) ,推荐重定向。
如果一切顺利,你会看到成功的消息,并且你的证书已经签发并配置到 Nginx 中。
7.5 再次通过浏览器访问
现在,在浏览器中输入你的域名,例如:https://your_domain.com
。
你将看到一个安全的 HTTPS 连接,并且会要求你输入 code-server
的密码。
步骤八:其他常用操作和提示
-
Code-Server 的更新: 定期运行安装脚本可以更新
code-server
到最新版本:Terminal window curl -fsSL https://code-server.dev/install.sh | shsystemctl --user restart code-server -
安装 VS Code 扩展: 在
code-server
界面中,像普通 VS Code 一样点击左侧的“Extensions”图标 (或Ctrl+Shift+X
),然后搜索并安装你需要的扩展。 -
停止/重启 Code-Server 服务:
- 停止:
systemctl --user stop code-server
- 重启:
systemctl --user restart code-server
- 禁用开机自启:
systemctl --user disable code-server
- 停止:
-
目录和文件权限:
code-server
会以你登录的用户身份运行。这意味着它只能访问该用户有权限的目录和文件。如果你需要编辑其他用户的文件,请确保当前用户有适当的读取/写入权限。 -
资源使用:
code-server
在运行时会占用服务器的内存和 CPU。如果你的服务器资源有限,开启太多扩展或同时打开大量文件可能会导致性能下降。
恭喜!
你已成功在 Linux 服务器上搭建了 code-server
,并配置了安全的 HTTPS 访问。现在,你可以在任何地方通过浏览器享受强大的 VS Code 开发体验了!