Update to code-server 4.129.0, which bundles VS Code 1.129.0.
VS Code 1.129 changed how the built-in GitHub Copilot extension is
handled: it is now built from source during the reh-web build instead
of being fetched as a prebuilt VSIX. This requires a few build-time
workarounds:
- The copilot extension postinstall expects a platform package for the
host. A Copilot CLI SDK distfile is provided and placed as
@github/copilot-freebsd-x64 so the postinstall passes. GitHub Copilot
is closed-source and not usable on FreeBSD; this only lets the build
complete.
- The reh-web build calls ensureCopilotPlatformPackage(), which runs
"npm pack" and thus needs network access (unavailable in poudriere).
Providing @github/copilot-linux-x64 in remote/node_modules makes the
function find it locally and skip the network fetch.
- Copilot bundles prebuilt Linux rg/tgrep binaries. These are replaced
with native FreeBSD binaries from textproc/ripgrep and textproc/tgrep
so that no Linux ELF binaries ship in the package.
Additional changes:
- Add ONLY_FOR_ARCHS=amd64; only a linux-x64 vscode-reh-web distfile is
provided.
- Drop test/* entries from VSCODE_NODE_MODULES; test suites do not
belong in the server package.
- Add a code_server_shell rc variable (default /bin/sh) so the built-in
terminal works when the service runs as nobody, whose login shell is
/usr/sbin/nologin.
- Fix ${PREFIX} expansion in pkg-message.
Sponsored by: Netzkommune GmbH
code-server on FreeBSD
Overview
code-server allows Visual Studio Code to run on a remote FreeBSD system and be accessed through a web browser.
After installation, code-server can be started either manually or through the provided rc.d service.
Service Management
Enable automatic startup at boot:
sysrc code_server_enable=YES
Start the service:
service code-server start
Stop the service:
service code-server stop
Restart the service:
service code-server restart
Check service status:
service code-server status
Accessing code-server
By default, code-server listens on TCP port 8080.
Open the following URL in a web browser:
http://<server>:8080/
Replace with the hostname or IP address of your FreeBSD system.
If a firewall is enabled, ensure that the configured port is reachable from the client system.
Configuration
When code-server is started manually, it uses the configuration file of the current user, usually:
~/.config/code-server/config.yaml
When code-server is started through the rc.d service, the configuration file is created and used at:
/usr/local/etc/code-server/config.yaml
The configuration file contains settings such as:
- listen address
- TCP port
- authentication settings
- password
Example:
bind-addr: 0.0.0.0:8080
auth: password
password: my-secret-password
Password
During the first startup, code-server generates a configuration file and a random password.
When running as a service, the password can be displayed using:
grep '^password:' /usr/local/etc/code-server/config.yaml
When started manually, the password can be displayed using:
grep '^password:' ~/.config/code-server/config.yaml
Changing the Listening Address
The listening address and port can be changed in the configuration file.
Example:
bind-addr: 0.0.0.0:8443
After changing the configuration, restart the service:
service code-server restart
Extensions
code-server supports many Visual Studio Code extensions.
Extension availability and compatibility depend on the individual extension, the extension marketplace used, and whether the extension relies on features that are not available in code-server.
Not all Visual Studio Code extensions are compatible with code-server.
For information about extension compatibility and limitations, see:
https://coder.com/docs/code-server/FAQ
https://code.visualstudio.com/api/advanced-topics/remote-extensions
Resource Requirements
Building code-server requires substantially more memory than typical FreeBSD ports.
Systems with insufficient RAM or swap may fail during the build process.
Running code-server generally requires significantly less memory than building it, but available RAM should still be considered when hosting multiple users or large development workloads.