易於在 Ubuntu 20.04 上安裝代碼服務器

易於在 Ubuntu 20.04 上安裝代碼服務器

在本文中,我們將指導您在 Ubuntu 20.04 上安裝 Code-Server。

Code-server 是一個開源服務器應用程序,它可以在任何地方的任何機器上為 VS Code 提供服務,並在瀏覽器中訪問它。它允許利用強大的雲服務器來加速編譯和測試,並在旅途中節省電池。

先決條件

  • 一個 Ubuntu 20.04 安裝了 VPS,最小。推薦:4GB RAM,2 vCPU。
  • 指向 VPS 的有效域名。
  • root 用戶訪問權限或具有管理權限的普通用戶。

在 Ubuntu 20.04 上安裝 Code-Server

1.更新服務器

使服務器保持最新。

# apt update -y

# apt upgrade -y

2. 安裝代碼服務器

使用以下命令從官方存儲庫下載代碼服務器:

# cd /home
# wget https://github.com/cdr/code-server/releases/download/v3.11.0/code-server-3.11.0-linux-amd64.tar.gz

使用以下命令提取tar文件並使用代碼服務器重命名:

# tar xzf code-server-3.11.0-linux-amd64.tar.gz && rm code-server-3.11.0-linux-amd64.tar.gz
# mv code-server-3.11.0-linux-amd64 code-server

使代碼服務器二進制可執行文件。

# cd code-server

運行代碼服務器。

./code-server --port 8000

打開您的計算機瀏覽器並導航到 http://YOUR_IP_ADDRESS:8000。系統將提示您輸入密碼。使用 SSH 終端中顯示的密碼。Visual Studio Code 界面將打開。要停止服務器,請 在 SSH 終端中按 CTRL + C。

3. 創建系統啟動服務

我們可以使用 Linux 的systemd服務管理器創建一個服務。按著這些次序:

使用以下命令創建一個名為code-server.service的新文件:

# vi /lib/systemd/system/code-server.service

複製並粘貼以下內容並替換為您要設置的密碼。這將是您用於登錄代碼服務器的密碼。

[Unit]
Description=Code Server Service
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=10
WorkingDirectory=/home/code-server
Environment='PASSWORD='
ExecStart=/home/code-server/code-server --port 8000
StandardOutput=file:/var/log/code-server-output.log
StandardError=file:/var/log/code-server-error.log

[Install]
WantedBy=multi-user.target

保存並關閉文件。

現在,使用以下命令啟動並啟用code-server.service

# systemctl daemon-reload

# systemctl start code-server

# systemctl enable code-server

打開您的計算機瀏覽器並導航到 http://YOUR_IP_ADDRESS:8000。系統將提示您輸入密碼。使用您在code-server.service文件中提到的密碼。

4. 安裝和配置 Nginx

為了通過域名訪問安裝並添加 SSL 證書,建議設置反向代理。出於此演示目的,我們使用 Nginx Web 服務器作為反向代理。

要安裝 Nginx,請使用以下命令:

# apt-get install nginx -y

禁用默認的 Nginx 站點配置文件。

# rm /etc/nginx/sites-enabled/default

為代碼服務器創建一個新的 Nginx 站點配置文件。

# vi /etc/nginx/sites-available/code-server

將以下代碼段粘貼到文件中,將 example.com 替換為您自己的域名。

server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

啟用配置並重新啟動 Nginx Web 服務器。

# ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/

測試 Nginx 配置文件。

# nginx -t

如果沒有報錯,重啟nginx服務。

# systemctl restart nginx

如果您使用 UFW 作為防火牆,請允許 SSH 和 Nginx 連接通過防火牆,並啟用防火牆。這將確保代碼服務器安裝只能通過 Nginx 反向代理訪問。

# ufw allow ssh
# ufw allow 'Nginx Full'
# ufw enable

導航到您的域名以測試安裝。

5. 安裝 Let's Encrypt SSL

保持服務器和最終用戶之間的連接安全,強烈建議安裝 SSL 證書。Let's Encrypt 是一個免費的 SSL 證書,有效期為 90 天,每 90 天更新一次。我們正在使用certbot來安裝 SSL 證書。

下載並安裝 Certbot。

# apt-get install python3-certbot-nginx

執行以下命令啟動 Certbot 的命令行安裝程序,將 example.com 替換為您自己的域名。

# certbot --nginx -d example.com

繼續執行交互式安裝程序。當詢問是否將 HTTP 流量重定向到 HTTPS 時,選擇重定向。

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/code-server
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/code-server

6.安裝fail2ban(推薦)

Fail2ban 是一種解析日誌以檢測和減輕對服務器的自動攻擊的應用程序。當檢測到預定義數量的不成功登錄嘗試時,fail2ban 將更改服務器的 iptables 以在預定義的時間內阻止攻擊者。

安裝安裝工具。這是安裝fail2ban所必需的。

# apt-get install python3-setuptools -y

下載並安裝fail2ban。

git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python3 setup.py install
cp build/fail2ban.service /lib/systemd/system/fail2ban.service
cd .. && rm -rf fail2ban

將默認配置文件 jails.conf 複製到 jails.local 並在文本編輯器中打開復制的文件。

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local

將以下代碼段粘貼到文件底部。您可以更改 maxretry、findtime 和 bantime 參數。

[code-server]
enabled = true
logpath = /var/log/code-server-output.log
# maxretry: The amount of unsuccessful login attempts after which a ban is issued.
maxretry = 5
# findtime: The amount of time within which the login attempts must occur.
findtime = 10m
# bantime: The amount of time for which an IP is banned from accessing the server.
bantime = 10m

創建一個新的過濾器配置文件來定義過濾器模式以在代碼服務器日誌中查找不成功的登錄嘗試。

# vi /etc/fail2ban/filter.d/code-server.conf

將以下代碼段粘貼到文件中。

[Definition]
failregex = Failed login attempt {\'xForwardedFor\':\'\'.*
ignoreregex =
datepattern = "timestamp':{EPOCH}}$

重啟rsyslog服務並啟用和啟動fail2ban服務。

# systemctl restart rsyslog.service

# systemctl start fail2ban.service
# systemctl enable fail2ban.service

就是這樣。安裝成功完成。

在本文中,我們向您解釋瞭如何在 Ubuntu 20.04 上安裝 Code-Server


如何使用 Python 作為命令行計算器

如何使用 Python 作為命令行計算器

雖然您可以在計算機上使用圖形計算器,但 Python 編程語言解釋器可以兼作桌面計算器。它在 Python 社區中非常流行,以至於官方教程中都提到了它。下面介紹如何將 Python 用作計算器。

面向程序員的 8 個最佳 Java 博客

面向程序員的 8 個最佳 Java 博客

作為程序員,你應該接受挑戰才能生存,並在開發或編程領域創造一些奇蹟。因此,如果您正在尋求學習高級編程語言以提高您的職業技能,Java 是最好的前景之一。

初學者開始使用 Python 的 7 個重要命令

初學者開始使用 Python 的 7 個重要命令

如果您有一個全面的路線圖,詳細說明初學者應學習哪些概念以及如何進一步進步以達到下一個里程碑,那麼學習 Python 等新編程語言將變得輕而易舉。即使是中級程序員也應該經常複習他們的基礎知識,為自己打下堅實的基礎。

響應式網頁設計原則

響應式網頁設計原則

如今,構建一個根據瀏覽器或設備調整其用戶界面的網站或應用程序是一種常見的做法。有兩種方法可以實現這一目標。第一個涉及為不同的設備創建不同版本的網站或應用程序。但它效率低下,並可能導致不可預測的錯誤。

如何使用 C++、Python 和 JavaScript 計算數字中的位數

如何使用 C++、Python 和 JavaScript 計算數字中的位數

處理數字是編程的一個組成部分。每種編程語言都支持以多種不同方式操作數字。在本文中,您將學習如何使用迭代、基於日誌和基於字符串的方法查找整數中的總位數。

用於容器管理的 9 個最佳 Docker 替代方案

用於容器管理的 9 個最佳 Docker 替代方案

容器對於虛擬環境中的軟件開發、部署和管理非常有益。Docker 在容器化過程中很有用,但它不是唯一的平台。如果您正在尋找 Docker 的替代品,那就別無所求。此列表展示了一些功能豐富且高效的 Docker 替代方案,可用於您的下一個項目。

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

如何在您的 WordPress 帖子中嵌入推文

如何在您的 WordPress 帖子中嵌入推文

在您的 WordPress 帖子中嵌入第三方服務是一種吸引訪問者興趣的令人興奮的方式。嵌入的內容還提供了使掃描更容易的視覺提示。WordPress 使添加此類內容變得容易。

如何使用 npkill 刪除節點模塊文件夾

如何使用 npkill 刪除節點模塊文件夾

Node.js 是一個 JavaScript 運行時環境,允許您在 Web 瀏覽器之外運行 JavaScript,使其成為開發各種應用程序的流行選擇。它的流行部分是由於大量的 NPM 包可以簡化開發人員的體驗。

如何編寫和編譯你的第一個 Solidity 代碼

如何編寫和編譯你的第一個 Solidity 代碼

Solidity 是以太坊區塊鏈上智能合約使用的編程語言。它是一種靜態類型的、面向對象的編程語言。