Skip to content
Dokumentatsiya
Code Server

Code Server — Brauzerda VS Code

Kirish

code-server (opens in a new tab) — bu Visual Studio Code'ni serverda ishga tushirib, brauzer orqali foydalanish imkonini beruvchi open-source loyiha. Oddiy qilib aytganda, siz kuchli serverdagi VS Code'ga istalgan qurilmadan — noutbuk, planshet yoki hatto telefondan kirishingiz mumkin.

Oxirgi barqaror versiya: v4.108.2 (2026-yil 26-yanvar, VS Code 1.108.2 asosida)

Nima uchun code-server kerak?

  • Istalgan joydan kirish — internetga ulangan har qanday qurilmadan o'z development muhitingizga kirasiz. Uyda boshlagan ishni yo'lda davom ettirishingiz mumkin.
  • Server quvvatidan foydalanish — og'ir build, test va kompilyatsiya jarayonlari serverda bajariladi. Sizning local kompyuteringiz faqat brauzer ochadi.
  • Bir xil muhit — jamoangizning barcha a'zolari bir xil muhitda ishlaydi. "Mening kompyuterimda ishladi" muammosi yo'qoladi.
  • Batareya tejash — barcha hisoblash server tomonida amalga oshiriladi, qurilmangizning batareyasi uzoq yashaydi.
  • Xavfsizlik — kod serverda qoladi, local qurilmaga yuklanmaydi. Noutbuk yo'qolsa ham kod xavfsiz.

Minimal tizim talablari

ResursMinimalTavsiya etiladi
RAM1 GB2+ GB
CPU2 vCPU4+ vCPU
OSLinux (WebSocket qo'llab-quvvatlashi)Ubuntu 22.04+, Debian 12+
Disk5 GB20+ GB

O'rnatish usullari

1-usul: Install script (eng oson)

code-server'ning rasmiy install scripti tizimingiz uchun eng mos usulni avtomatik aniqlaydi.

Avval qanday buyruqlar bajarilishini ko'rish uchun dry-run rejimda ishga tushiring:

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

Hamma narsa to'g'ri bo'lsa, o'rnatishni boshlang:

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

O'rnatgandan so'ng systemd servisi yoqiladi:

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

Brauzerda http://127.0.0.1:8080 manzilga kiring. Parol ~/.config/code-server/config.yaml faylida joylashgan.

Install script qo'shimcha parametrlarni qo'llab-quvvatlaydi:

  • --method=standalone — tizim paket menejerisiz o'rnatadi
  • --prefix=/usr/local — o'rnatish papkasini belgilaydi
  • --version=4.108.2 — aniq versiya o'rnatadi

2-usul: Debian/Ubuntu (deb paket)

# Paketni yuklab olish (versiyani o'zgartiring)
export VERSION=4.108.2
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server_${VERSION}_amd64.deb
 
# O'rnatish
sudo dpkg -i code-server_${VERSION}_amd64.deb
 
# Serverni yoqish
sudo systemctl enable --now code-server@$USER

3-usul: Fedora/CentOS/RHEL (rpm paket)

export VERSION=4.108.2
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server-$VERSION-amd64.rpm
 
sudo rpm -i code-server-$VERSION-amd64.rpm
sudo systemctl enable --now code-server@$USER

4-usul: macOS (Homebrew)

brew install code-server
brew services start code-server

5-usul: Docker

mkdir -p ~/.config
 
docker run -it --name code-server \
  -p 127.0.0.1:8080:8080 \
  -v "$HOME/.local:/home/coder/.local" \
  -v "$HOME/.config:/home/coder/.config" \
  -v "$PWD:/home/coder/project" \
  -u "$(id -u):$(id -g)" \
  -e "DOCKER_USER=$USER" \
  codercom/code-server:latest

Volume'lar nima uchun kerak?

  • $HOME/.local — code-server'ning ichki ma'lumotlari (extension'lar va boshqalar)
  • $HOME/.config — konfiguratsiya fayllari (config.yaml, parol)
  • $PWD — sizning loyihangiz papkasi

6-usul: Docker Compose (tavsiya etiladi)

Serverda doimiy ishlatish uchun Docker Compose eng qulay usul.

mkdir -p ~/code-server && cd ~/code-server

docker-compose.yml faylini yarating:

docker-compose.yml
services:
  code-server:
    image: codercom/code-server:4.108.2
    container_name: code-server
    restart: unless-stopped
    user: "${UID:-1000}:${GID:-1000}"
    environment:
      - DOCKER_USER=${USER:-coder}
    volumes:
      - ./config:/home/coder/.config
      - ./local:/home/coder/.local
      - ./project:/home/coder/project
    ports:
      - "127.0.0.1:8080:8080"

LinuxServer.io image haqida:

Eski maqolalarda lscr.io/linuxserver/code-server image ishlatilgan. Bu image hali ham ishlaydi, lekin rasmiy codercom/code-server image'ni ishlatish tavsiya etiladi — u to'g'ridan-to'g'ri loyiha muallifi tomonidan qo'llab-quvvatlanadi va yangilanishlar tezroq keladi.

Ishga tushirish:

docker compose up -d

Konteyner holatini tekshirish:

docker compose ps
docker compose logs code-server

Dastlabki parolni ko'rish:

docker compose exec code-server cat /home/coder/.config/code-server/config.yaml

LinuxServer.io image bilan Docker Compose

Agar LinuxServer.io image'ni afzal ko'rsangiz:

docker-compose.yml
services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tashkent
      - PASSWORD=xavfsiz_parol_qoying
      - SUDO_PASSWORD=sudo_parol
      - DEFAULT_WORKSPACE=/config/workspace
    volumes:
      - ./config:/config
    ports:
      - "8443:8443"

Bu image'ning environment o'zgaruvchilari:

O'zgaruvchiTavsif
PUID / PGIDFoydalanuvchi va guruh ID — fayl huquqlari uchun
TZTimezone (masalan, Asia/Tashkent)
PASSWORDWeb interfeys paroli (ochiq matn)
HASHED_PASSWORDHashed password (PASSWORD o'rniga)
SUDO_PASSWORDTerminal ichida sudo paroli
PROXY_DOMAINReverse proxy domain
DEFAULT_WORKSPACEStandart ish papkasi

Konfiguratsiya

code-server barcha sozlamalarni ~/.config/code-server/config.yaml faylida saqlaydi. Birinchi ishga tushirishda bu fayl avtomatik yaratiladi.

config.yaml

~/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: sizning_parolingiz
cert: false

Asosiy parametrlar:

ParametrTavsifMisol
bind-addrListening address va port127.0.0.1:8080, 0.0.0.0:443
authAuthentication usulipassword yoki none
passwordKirish paroliPlain text parol
hashed-passwordHashed passwordargon2 hash
certHTTPS sertifikattrue, false yoki sertifikat fayl yo'li
cert-keyCertificate key/path/to/key.pem

Password hashing

Parolni plain text o'rniga hashed holda saqlash xavfsizroq:

# argon2 o'rnatish
sudo apt install argon2
 
# Parolni hash qilish
echo -n "sizning_parolingiz" | argon2 saltSOMESALT -e
 
# Natijani config.yaml ga qo'ying
# hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$..."

Buyruq qatori parametrlari

config.yaml o'rniga yoki unga qo'shimcha ravishda buyruq qatoridan ham sozlash mumkin:

# Boshqa portda ishga tushirish
code-server --bind-addr 0.0.0.0:9090
 
# Parolsiz (faqat reverse proxy bilan!)
code-server --auth none
 
# HTTPS bilan
code-server --cert /path/to/cert.pem --cert-key /path/to/key.pem

HTTPS sozlash

code-server'ni hech qachon HTTPS yoki autentifikatsiyasiz internetga ochmang! code-server orqali terminal va fayl tizimiga kirish mumkin — bu sizning serveringizga to'liq kirish demak.

Self-signed sertifikat

Eng oddiy usul — code-server'ning o'zi sertifikat yaratadi:

config.yaml
bind-addr: 0.0.0.0:443
auth: password
password: kuchli_parol
cert: true

Sertifikat ~/.local/share/code-server/self-signed.crt da saqlanadi.

443-portni ochish uchun qo'shimcha ruxsat berish kerak:

sudo setcap cap_net_bind_service=+ep /usr/lib/code-server/lib/node
sudo systemctl restart code-server@$USER

Self-signed sertifikat brauzerda ogohlantirish beradi. Bu test muhit uchun yetarli, lekin production uchun Let's Encrypt ishlatiladi.

Let's Encrypt bilan bepul HTTPS

Production muhitda Let's Encrypt sertifikat olish uchun Caddy yoki Nginx + Certbot ishlatiladi. Bu haqda keyingi bo'limda batafsil yozilgan.

Reverse Proxy sozlash

Production muhitda code-server to'g'ridan-to'g'ri internetga ochilmaydi. Uning o'rniga reverse proxy ishlatiladi — bu HTTPS, domain nomi va qo'shimcha xavfsizlikni ta'minlaydi.

Caddy bilan (eng oson)

Caddy avtomatik ravishda Let's Encrypt sertifikatini oladi va yangilaydi — hech qanday qo'shimcha sozlash kerak emas.

# Caddy o'rnatish (Ubuntu/Debian)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy

Caddyfile yarating:

/etc/caddy/Caddyfile
code.sizning-domain.uz {
    reverse_proxy 127.0.0.1:8080
}
sudo systemctl reload caddy

Tamom! Caddy avtomatik HTTPS sertifikat oladi va code.sizning-domain.uz manzilida code-server ochiladi.

Caddy bilan subpath ham ishlatish mumkin:

sizning-domain.uz {
    redir /code /code/ 308
    handle_path /code/* {
        reverse_proxy 127.0.0.1:8080
    }
}

Nginx + Let's Encrypt bilan

# Nginx va Certbot o'rnatish
sudo apt install nginx certbot python3-certbot-nginx

Nginx konfiguratsiya fayli:

/etc/nginx/sites-available/code-server
server {
    listen 80;
    listen [::]:80;
    server_name code.sizning-domain.uz;
 
    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }
}

WebSocket headerlari muhim! Upgrade va Connection headerlari bo'lmasa, code-server to'g'ri ishlamaydi. VS Code brauzerdagi real-time aloqa uchun WebSocket'lardan foydalanadi.

Konfiguratsiyani yoqish va sertifikat olish:

# Saytni yoqish
sudo ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/
 
# Konfiguratsiyani tekshirish
sudo nginx -t
 
# Nginx'ni qayta yuklash
sudo systemctl reload nginx
 
# Let's Encrypt sertifikat olish
sudo certbot --nginx -d code.sizning-domain.uz

Certbot avtomatik ravishda Nginx konfiguratsiyasini HTTPS'ga yangilaydi va sertifikatni har 90 kunda yangilab turadi.

SSH Port Forwarding

Agar domain yoki sertifikat sozlash imkoningiz bo'lmasa, eng xavfsiz va oddiy usul — SSH tunnel.

# Local kompyuterdan serverga tunnel ochish
ssh -N -L 8080:127.0.0.1:8080 user@server-ip

Endi brauzerda http://127.0.0.1:8080 manzilga kiring. Barcha trafik SSH orqali shifrlangan.

Doimiy SSH tunnel uchun ~/.ssh/config ga qo'shing:

~/.ssh/config
Host code-server
    HostName server-ip
    User sizning-foydalanuvchi
    LocalForward 8080 127.0.0.1:8080
    ServerAliveInterval 5
    ExitOnForwardFailure yes

Endi shunchaki quyidagi buyruqni bajaring:

ssh -N code-server

code-server'ni yangilash

Systemd o'rnatilgan bo'lsa

curl -fsSL https://code-server.dev/install.sh | sh
sudo systemctl restart code-server@$USER

Docker Compose bilan

cd ~/code-server
 
# Yangi image'ni tortish
docker compose pull
 
# Konteynerlarni qayta ishga tushirish
docker compose up -d
 
# Eski image'larni tozalash
docker image prune -f

Xavfsizlik bo'yicha tavsiyalar

Muhim xavfsizlik qoidalari:

  1. Hech qachon code-server'ni autentifikatsiya va shifrlanishsiz internetga ochmang. Terminal orqali serveringizga to'liq kirish mumkin.

  2. Kuchli parol ishlating. code-server parolni brute-force hujumdan himoya qiladi (daqiqada 2 ta, soatiga qo'shimcha 12 ta urinish), lekin kuchli parol barcha holatlarda muhim.

  3. HTTPS ishlatiladi — quyidagi usullardan birini tanlang:

    • Caddy (avtomatik Let's Encrypt)
    • Nginx + Certbot
    • SSH tunnel
    • cert: true (self-signed — faqat test uchun)
  4. Firewall sozlang. code-server portini (8080) faqat localhost yoki reverse proxy'ga oching.

# UFW bilan faqat SSH va HTTPS ochish
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable
  1. Tashqi autentifikatsiya qo'shimcha himoya sifatida ishlatilishi mumkin:

Foydali maslahatlar

Extension'lar o'rnatish

code-server VS Code extension'larini qo'llab-quvvatlaydi. Extension'larni VS Code ichidagi Extension paneli orqali yoki buyruq qatoridan o'rnatish mumkin:

# Extension o'rnatish
code-server --install-extension ms-python.python
code-server --install-extension dbaeumer.vscode-eslint
 
# O'rnatilgan extension'lar ro'yxati
code-server --list-extensions

code-server Open VSX (opens in a new tab) marketplace'dan foydalanadi (Microsoft marketplace emas). Ko'pchilik mashhur extension'lar mavjud, lekin ba'zilari faqat Microsoft marketplace'da bo'lishi mumkin.

Web service'larni proxy qilish

code-server ichida ishlab turgan web ilovalar (masalan, React dev server, API server) ga tashqaridan kirish uchun:

Subdomain usuli (tavsiya etiladi):

code-server --proxy-domain sizning-domain.uz

Endi 3000-portda ishlab turgan ilova 3000.sizning-domain.uz manzilida ochiladi.

Subpath usuli:

code-server avtomatik ravishda /proxy/<port>/ yo'lini taqdim etadi. Masalan, 3000-portda ishlab turgan ilova https://code.sizning-domain.uz/proxy/3000/ manzilida ochiladi.

Qo'shimcha