The Visual Studio Code Cloud IDE is an online version of Microsoft’s popular Visual Studio Code (VS Code) editor, designed to provide a flexible and accessible development environment in the cloud. It allows developers to code directly from their web browsers without needing to install anything on their local machines. This cloud-based IDE integrates seamlessly with GitHub and other cloud services, enabling real-time collaboration, easy access to projects from any device, and the ability to work in distributed environments. With features like syntax highlighting, debugging, and extensions, the Visual Studio Code Cloud IDE offers a full development experience, making it a convenient solution for developers who need a powerful, portable coding environment that can be accessed from virtually anywhere.

This guide will show you how to install Visual Code-Server on the Ubuntu 24.04 server with Nginx as a reverse proxy.

Prerequisites

Before you begin, make sure you have the following:

  • An Ubuntu 24.05 server.
  • A non-root user with administrator privileges.
  • A domain name pointed to a server IP address.

Installing code-server with installer script

To install the code-server, you can download and run the code-server installer script. In this example, you’ll be installing a code-server as a non-root user. So make sure you’ve logged in to your user.

First, run the command below to ensure that the code-server can be installed on your system.

curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run

When code-server is installed on your system, you’ll see the following output:

<img alt="test install" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/1-test-install.png66c70a22a5ad6.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="387" loading="lazy" src="data:image/svg xml,” width=”750″>

Now install the code-server with the command below. Enter your sudo/administrator password when asked.

curl -fsSL https://code-server.dev/install.sh | sh

<img alt="install code-server" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/2-install-code-server.png66c70a22efae7.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="471" loading="lazy" src="data:image/svg xml,” width=”750″>

After the installation is complete, start and enable the code-server with the following ‘systemctl‘ command.

sudo systemctl enable --now code-server@$USER

Lastly, check the code-server service with the following to ensure that the service is running.

sudo systemctl status code-server@$USER

In this output, you can see the code-server is running, which runs on default port 8080.

<img alt="start and verify code-server" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/3-check-status.png66c70a2339165.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="271" loading="lazy" src="data:image/svg xml,” width=”750″>

Configuring code-server password

After installing the code-server, you’ll set up password authentication to secure the code-server environment.

Open the default code-server config file ~/.config/code-server/config.yaml with the ‘nano‘ editor.

nano ~/.config/code-server/config.yaml

Change the default password with your secure password.

bind-addr: 127.0.0.1:8080

auth: password

password: 0e0cb3af923c659366334664

cert: false

Save the file and exit the editor.

Now run the command below to restart the code-server and apply your changes.

sudo systemctl restart code-server@$USER

Setting up Nginx as a reverse proxy

Now that you’ve secure code-server, you’ll install Nginx and configure it as a reverse proxy. So make sure that you’ve your domain name pointed to a server IP address.

Install the Nginx web server with the following ‘apt‘ command. Enter ‘Y‘ to confirm the installation.

sudo apt install nginx -y

<img alt="install nginx" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/4-install-nginx.png66c70a23696f6.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="416" loading="lazy" src="data:image/svg xml,” width=”743″>

After the installation is complete, create a new server block configuration ‘/etc/nginx/sites-available/code-server.conf‘ with the ‘nano‘ editor.

sudo nano /etc/nginx/sites-available/code-server.conf

Insert the following configuration into the file and make sure to change the domain name ‘code.howtoforge.local‘.

server {

listen 80;

listen [::]:80;

server_name code.howtoforge.local;

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;

}

}

When finished, save the file and exit the editor.

Next, run the following command to activate the ‘code-server.conf‘ server block and verify your Nginx configuration.

sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/

sudo nginx -t

If you’re correct and have proper Nginx configuration, you’ll see an output ‘syntax is ok – test is successful’.

<img alt="check nginx" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/5-setup-nginx.png66c70a238745b.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="164" loading="lazy" src="data:image/svg xml,” width=”750″>

Now run the command below to restart the Nginx web server and apply the changes. Then, check the Nginx status to ensure that the web server is running.

sudo systemctl restart nginx

sudo systemctl status nginx

In the following output, you can see the Nginx web server is running as a reverse proxy for the code-server application.

<img alt="check nginx" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/6-check-nginx.png66c70a23b2fae.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="237" loading="lazy" src="data:image/svg xml,” width=”750″>

Setting up UFW (Uncomplicated Firewall)

To allow access to the code-server, you must open both HTTP and HTTPS ports through UFW (Uncomplicated Firewall).

Run the command below to enable the ‘Nginx Full‘ profile and allow HTTP and HTTPS traffic to your Nginx installation. Once added, you’ll see an output ‘Rule added’.

sudo ufw allow 'Nginx Full'

Now run the following command to check the UFW status. Make sure that the ‘Nginx Full’ profile is enabled to allow access from anywhere.

sudo ufw status

Securing code-server with HTTPS

In this section, you’ll secure the code-server with HTTPS by generating SSL/TLS certificates through certbot and letsencrypt.

Install ‘certbot’ and ‘python3-certbot-nginx’ packages with the following ‘apt’ command.

sudo apt install certbot python3-certbot-nginx

After the installation is complete, execute the ‘certbot’ command below to generate SSL/TLS certificates and secure your code-server installation. Make sure to change the domain name and email address with your information.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d code.howtoforge.local

When the process is complete, your code-server installation will be secured with HTTPS automatically. And your SSL/TLS certificates will be available in the ‘/etc/letsencrypt/live/code.howtoforge.local’ directory.

Accessing code-server

Open your web browser and visit https://code.howtoforge.local. If your installation is successful, you’ll be prompted for password authentication.

Input your password and click SUBMIT to confirm.

<img alt="login to code server" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/7-login.png66c70a23d6415.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="372" loading="lazy" src="data:image/svg xml,” width=”750″>

If you have the correct password, you’ll see the following code-server screen. Select your default theme, light or dark.

<img alt="change theme" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/8-code-server.png66c70a240bdb7.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="372" loading="lazy" src="data:image/svg xml,” width=”750″>

Now you’ll get the following live code-server on your web browser.

<img alt="code server" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/9-code-server-terminal.png66c70a2431826.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="371" loading="lazy" src="data:image/svg xml,” width=”750″>

Conclusion

Congratulations! You’ve completed the installation of VS code server on the Ubuntu 24.04 server. You’ve installed and secured a code server with password authentication and HTTPS and configured Nginx as a reverse proxy for your code server installation.