Giriş: code-server Nedir ve Neden Kullanmalıyız?
code-server, Coder tarafından geliştirilen açık kaynaklı bir projedir. Temelde, VS Code’un tüm özelliklerini (uzantılar, terminal, hata ayıklama vb.) bir web tarayıcısı üzerinden erişilebilir hale getirir. Bu, geliştiriciler ve sistem yöneticileri için birçok avantaj sunar:
* Uzaktan Erişim: Projelerinize dünyanın her yerinden, internet bağlantısı olan herhangi bir cihazla erişebilirsiniz.
* Donanım Bağımsızlığı: Geliştirme ortamınız sunucuda çalıştığı için, yerel bilgisayarınızın donanım özellikleri düşük olsa bile yüksek performanslı bir IDE deneyimi yaşarsınız.
* Tutarlılık: Tüm ekibinizin aynı geliştirme ortamını kullanmasını sağlayarak “benim makinemde çalışıyor” sorunlarını ortadan kaldırır.
* Kolay Kurulum ve Yönetim: Geliştirme ortamlarını tek bir merkezi sunucuda kurup yönetmek, bireysel makinelere kurulum yapmaktan daha kolaydır.
* Güvenlik: Hassas kod ve veriler yerel makinenizde depolanmak yerine güvenli bir sunucuda tutulur.
Bu rehberde, Ubuntu 22.04 sunucunuzu hazırlamaktan, code-server’ı kurmaya, temel yapılandırmayı yapmaya ve güvenliği sağlamak için HTTPS üzerinden ters proxy kurmaya kadar tüm adımları detaylı bir şekilde ele alacağız.
Ön Gereksinimler ve Sistem Hazırlığı
code-server kurulumuna başlamadan önce aşağıdaki gereksinimlerin karşılandığından emin olmanız gerekir:
* Ubuntu 22.04 Sunucusu: SSH erişimi olan, temiz bir Ubuntu 22.04 sunucusu.
* Sudo Ayrıcalıkları: sudo komutunu kullanabilen, root olmayan bir kullanıcı hesabına sahip olmalısınız.
* Minimum Donanım: code-server, özellikle birkaç uzantı ve açık proje ile kullanıldığında biraz kaynak tüketebilir. En az 2 GB RAM ve 2 CPU çekirdeği önerilir. Daha büyük projeler veya birden fazla kullanıcı için daha fazla kaynak gerekebilir.
* Alan Adı (İsteğe Bağlı ama Önerilir): Eğer HTTPS üzerinden güvenli erişim sağlamak istiyorsanız, sunucunuzun IP adresine yönlendirilmiş bir alan adına (örneğin, ide.alanadiniz.com) sahip olmanız şiddetle tavsiye edilir.
### Sistem Güncelleme ve Temel Paket Kurulumu
Kuruluma başlamadan önce sisteminizi güncelleyelim ve gerekli temel paketleri kuralım:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl wget git build-essential
* sudo apt update: Paket listelerini günceller.
* sudo apt upgrade -y: Mevcut paketleri yükseltir. -y bayrağı onay istemeden işlemleri tamamlar.
* sudo apt install -y curl wget git build-essential: curl ve wget indirme işlemleri için, git versiyon kontrolü için ve build-essential bazı derleme araçları için gereklidir.
code-server Kurulumu
code-server’ı kurmanın iki ana yolu vardır: resmi kurulum betiğini kullanmak (önerilen) veya manuel olarak .deb paketini kurmak.
### Yöntem 1: Resmi Kurulum Betiği ile Otomatik Kurulum (Önerilen)
Bu yöntem, code-server’ı kurmanın en kolay ve hızlı yoludur. Resmi kurulum betiği, code-server’ı indirir, sisteminize kurar ve otomatik olarak bir systemd servisi oluşturur.
Aşağıdaki komutu terminalinizde çalıştırın:
curl -fsSL https://code-server.dev/install.sh | sh
Bu komutun açıklaması:
* curl -fsSL https://code-server.dev/install.sh: code-server.dev adresindeki kurulum betiğini indirir.
* -f: HTTP hatasında sessiz ol ve çıktıyı gösterme.
* -s: Sessiz mod (ilerleme çubuğunu ve hata mesajlarını gösterme).
* -S: Hata oluşursa hatayı göster.
* -L: Yönlendirmeleri takip et.
* | sh: İndirilen betiği sh (shell) ile çalıştırır.
Kurulum betiği şunları yapacaktır:
1. code-server’ın en son sürümünü indirir.
2. ~/.local/bin dizinine kurar.
3. Kullanıcınız için bir systemd servisi (code-server@) oluşturur. Bu, code-server’ın sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlar.
4. Varsayılan yapılandırma dosyasını ~/.config/code-server/config.yaml konumuna yerleştirir.
Kurulum tamamlandıktan sonra, code-server servisi otomatik olarak başlamaz. Manuel olarak başlatmanız ve etkinleştirmeniz gerekir:
sudo systemctl enable --now code-server@$USER
* enable: Servisin sistem başlangıcında otomatik olarak başlamasını sağlar.
* --now: Servisi hemen başlatır.
* code-server@$USER: $USER değişkeni, o anki oturum açmış kullanıcı adınızı temsil eder. Bu, code-server’ın o kullanıcı için çalıştırılacağı anlamına gelir.
Servisin durumunu kontrol etmek için:
sudo systemctl status code-server@$USER
Eğer her şey yolundaysa, çıktıda “active (running)” ifadesini görmelisiniz.
### Yöntem 2: Manuel Kurulum (Daha Fazla Kontrol İçin)
Bu yöntem, belirli bir sürümü kurmak veya kurulum süreci üzerinde daha fazla kontrol sahibi olmak isteyenler içindir.
1. En Son Sürümü Bulun: code-server’ın GitHub yayınları sayfasını ziyaret edin: [https://github.com/coder/code-server/releases](https://github.com/coder/code-server/releases). En son sürümü bulun ve code-server_X.Y.Z_amd64.deb dosyasının indirme bağlantısını kopyalayın (X.Y.Z sürüm numarasını temsil eder).
2. Paketi İndirin: Sunucunuzda, kopyaladığınız bağlantıyı kullanarak .deb paketini indirin. Örneğin, 4.14.1 sürümü için:
wget https://github.com/coder/code-server/releases/download/v4.14.1/code-server_4.14.1_amd64.deb
3. Paketi Kurun: dpkg komutu ile paketi kurun:
sudo dpkg -i code-server_4.14.1_amd64.deb
(Sürüm numarasını indirdiğiniz dosya adına göre değiştirmeyi unutmayın.)
Bu işlem de code-server’ı kurar ve bir systemd servisi oluşturur. Yukarıdaki systemctl enable --now code-server@$USER komutuyla servisi başlatabilir ve etkinleştirebilirsiniz.
code-server Yapılandırması ve Güvenliği
Kurulum tamamlandıktan sonra, code-server’ı yapılandırmamız ve güvenliğini sağlamamız gerekir.
### Temel Yapılandırma
code-server’ın yapılandırma dosyası genellikle ~/.config/code-server/config.yaml konumunda bulunur. Bu dosyayı düzenleyerek code-server’ın davranışını değiştirebilirsiniz.
Yapılandırma dosyasını açın:
nano ~/.config/code-server/config.yaml
Varsayılan olarak dosya aşağıdaki gibi görünebilir:
bind-addr: 127.0.0.1:8080
auth: password
password: a_random_password_generated_by_code_server
cert: false
Önemli yapılandırma seçenekleri:
* bind-addr: code-server’ın hangi IP adresi ve port üzerinden dinleyeceğini belirtir.
* 127.0.0.1:8080: Yalnızca sunucunun kendi içinden (localhost) erişilebilir. Ters proxy kullanırken bu ayar idealdir.
* 0.0.0.0:8080: Tüm ağ arayüzlerinden erişilebilir. Ters proxy kullanmıyorsanız ve doğrudan IP adresi ile erişecekseniz bu ayarı kullanabilirsiniz, ancak güvenlik duvarı (UFW) ile erişimi kısıtlamanız önemlidir.
* auth: Kimlik doğrulama yöntemini belirler.
* password: Parola ile giriş yapılmasını gerektirir (önerilen).
* none: Kimlik doğrulaması olmadan erişime izin verir (kesinlikle önerilmez!).
* password: Giriş için kullanılacak parolayı belirler. İlk kurulumda otomatik olarak güçlü bir parola oluşturulur. Bu parolayı kendi güvenli parolanızla değiştirmelisiniz.
* cert: SSL/TLS sertifikası kullanılıp kullanılmayacağını belirtir. Eğer Nginx/Caddy gibi bir ters proxy ile SSL kullanacaksanız, bunu false olarak bırakın.
Örnek güvenli yapılandırma:
bind-addr: 127.0.0.1:8080 # Ters proxy kullanılıyorsa localhost'a bağla
auth: password
password: BenimGucluParolam123! # Kendi güçlü parolanızı buraya yazın
cert: false
disable-telemetry: true # İsteğe bağlı: Telemetriyi devre dışı bırakır
Yapılandırma dosyasını kaydettikten sonra (Ctrl+O, Enter, Ctrl+X), code-server servisini yeniden başlatmalısınız:
sudo systemctl restart code-server@$USER
### Güvenlik Duvarı (UFW) Ayarları
Eğer bind-addr ayarını 0.0.0.0:8080 olarak ayarladıysanız (yani doğrudan IP üzerinden erişim), code-server’ın çalıştığı portu (varsayılan 8080) güvenlik duvarınızda açmanız gerekir. Eğer ters proxy kullanıyorsanız, sadece 80 (HTTP) ve 443 (HTTPS) portlarını açmanız yeterli olacaktır.
# Sadece code-server portunu açmak istiyorsanız (doğrudan erişim için)
sudo ufw allow 8080/tcp
Ters proxy kullanıyorsanız sadece 80 ve 443 portlarını açın
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
SSH erişimi için 22. portu açık bırakın
sudo ufw allow OpenSSH
Güvenlik duvarını etkinleştirin (eğer etkin değilse)
sudo ufw enable
Güvenlik duvarı durumunu kontrol edin
sudo ufw status
### HTTPS için Ters Proxy Kurulumu (Önemli Güvenlik Adımı)
code-server’a doğrudan HTTP üzerinden erişmek güvenli değildir, çünkü veriler şifrelenmeden aktarılır. HTTPS üzerinden güvenli erişim sağlamak için bir ters proxy (Nginx veya Caddy gibi) kullanmanızı şiddetle tavsiye ederiz. Bu rehberde Nginx ve Let’s Encrypt ile ücretsiz SSL sertifikası kullanacağız.
#### 1. Nginx Kurulumu
sudo apt install nginx -y
sudo systemctl enable --now nginx
#### 2. Let’s Encrypt ile SSL Sertifikası Alımı (Certbot)
Certbot, Let’s Encrypt sertifikalarını otomatik olarak almanızı ve Nginx ile yapılandırmanızı sağlar.
sudo apt install certbot python3-certbot-nginx -y
Şimdi bir SSL sertifikası alalım. your_domain.com yerine kendi alan adınızı yazın:
sudo certbot --nginx -d your_domain.com
Certbot size birkaç soru sorabilir:
* E-posta adresi isteyecektir (yenileme bildirimleri için).
* Hizmet şartlarını kabul etmenizi isteyecektir.
* E-postanızı paylaşmak isteyip istemediğinizi soracaktır (isteğe bağlı).
* Nginx yapılandırmanızı otomatik olarak güncellemesini isteyip istemediğinizi soracaktır. “2” seçeneğini (Redirect – tüm HTTP trafiğini HTTPS’ye yönlendir) seçmeniz önerilir.
Başarılı olursa, Certbot sertifikayı alacak ve Nginx yapılandırmanızı otomatik olarak güncelleyecektir.
#### 3. Nginx Ters Proxy Yapılandırması
Certbot, temel bir Nginx yapılandırması oluştursa da, code-server için özel ayarlamalar yapmamız gerekir.
Yeni bir Nginx yapılandırma dosyası oluşturalım:
sudo nano /etc/nginx/sites-available/code-server.conf
Aşağıdaki içeriği dosyaya yapıştırın. your_domain.com kısmını kendi alan adınızla değiştirmeyi unutmayın.
server {
listen 80;
listen [::]:80;
server_name your_domain.com; # Kendi alan adınızı buraya yazın
# HTTP'den HTTPS'ye yönlendirme (Certbot bunu otomatik yapacaktır, bu blok çoğunlukla yedek içindir)
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain.com; # Kendi alan adınızı buraya yazın
# Certbot tarafından oluşturulan SSL sertifika yolları
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/your_domain.com/chain.pem;
# Güvenlik ayarları (isteğe bağlı ama önerilir)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Ters proxy ayarları
location / {
proxy_pass http://127.0.0.1:8080; # code-server'ın dinlediği adres ve port
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;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
Dosyayı kaydedin ve kapatın. Şimdi bu yapılandırma dosyasını etkinleştirelim ve Nginx’i yeniden başlatalım:
sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/
sudo nginx -t # Nginx yapılandırmasını test et
sudo systemctl reload nginx # Nginx'i yeniden yükle
Artık https://your_domain.com adresinden code-server’ınıza güvenli bir şekilde erişebilirsiniz. Unutmayın, code-server yapılandırma dosyasındaki bind-addr ayarını 127.0.0.1:8080 olarak ayarladığınızdan emin olun, böylece sadece Nginx üzerinden erişilebilir olur.
code-server Kullanımı ve Ek İpuçları
Tüm kurulum ve yapılandırma adımlarını tamamladıktan sonra, code-server’ınızı kullanmaya başlayabilirsiniz.
### Tarayıcıdan Erişim
Web tarayıcınızı açın ve yapılandırdığınız alan adını veya sunucunuzun IP adresini ve portunu (eğer ters proxy kullanmıyorsanız) girin. Örneğin: https://your_domain.com veya http://your_server_ip:8080.
Karşınıza code-server’ın giriş ekranı gelecektir. ~/.config/code-server/config.yaml dosyasında belirlediğiniz parolayı girerek oturum açın.
### VS Code Arayüzü
Giriş yaptıktan sonra, tanıdık VS Code arayüzü ile karşılaşacaksınız. Dosya gezgini, terminal, uzantılar, kaynak kontrolü ve hata ayıklama gibi tüm özellikler web tarayıcınız üzerinden kullanılabilir.
### Uzantılar
VS Code Marketplace’indeki hemen hemen tüm uzantıları code-server’da da kullanabilirsiniz. Sol taraftaki uzantılar simgesine tıklayarak uzantıları arayabilir ve kurabilirsiniz.
### Terminal
code-server, sunucunuzda çalışan bir terminale doğrudan erişim sağlar. Bu, sunucu komutlarını çalıştırmanıza, dosyaları yönetmenize ve geliştirme iş akışınızı doğrudan IDE içinden sürdürmenize olanak tanır.
### Dosya Yönetimi
Sol taraftaki dosya gezginini kullanarak sunucunuzdaki dosyaları ve klasörleri görüntüleyebilir, oluşturabilir, düzenleyebilir ve silebilirsiniz.
### Birden Fazla Kullanıcı İçin Yapılandırma
Eğer birden fazla kullanıcının kendi code-server örneklerine sahip olmasını istiyorsanız, her kullanıcı için ayrı bir systemd servisi ve yapılandırma dosyası oluşturmanız gerekir.
1. Her kullanıcı için sistemde bir hesap oluşturun: sudo adduser yeni_kullanici.
2. Her kullanıcı kendi oturumunda curl -fsSL https://code-server.dev/install.sh | sh komutunu çalıştırabilir. Bu, her kullanıcı için kendi ev dizininde code-server@kullanici_adi servisini ve ~/.config/code-server/config.yaml dosyasını oluşturur.
3. Her kullanıcının kendi config.yaml dosyasında farklı bir bind-addr (örneğin, 127.0.0.1:8081, 127.0.0.1:8082 vb.) ve parola kullanması gerekir.
4. Nginx’i, farklı alt alan adları (örneğin, kullanici1.alanadiniz.com, kullanici2.alanadiniz.com) veya farklı URL yolları (örneğin, alanadiniz.com/kullanici1, alanadiniz.com/kullanici2) üzerinden her kullanıcının code-server örneğine yönlendirecek şekilde yapılandırmanız gerekir. Bu, daha karmaşık bir Nginx yapılandırması gerektirir.
### Performans İpuçları
* Yeterli Kaynak: code-server’ın düzgün çalışması için yeterli RAM ve CPU ayırdığınızdan emin olun. Özellikle büyük projeler veya çok sayıda uzantı kullanıyorsanız bu önemlidir.
* SSD Kullanımı: Sunucunuzda SSD depolama kullanmak, dosya okuma/yazma hızlarını artırarak genel performansı iyileştirir.
* Gereksiz Uzantıları Devre Dışı Bırakma: Kullanmadığınız uzantıları devre dışı bırakmak, code-server’ın kaynak tüketimini azaltabilir.
* Tarayıcı Önbelleği: Tarayıcınızın önbelleğini düzenli olarak temizlemek, performans sorunlarını önleyebilir.
* Ağ Bağlantısı: Sunucunuz ile aranızdaki ağ bağlantısının stabil ve hızlı olması, gecikmeyi azaltacaktır.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, Ubuntu 22.04 sunucunuzda code-server Cloud IDE platformunu başarıyla kurmak, yapılandırmak ve güvenli hale getirmek için gerekli tüm adımları ayrıntılı olarak ele aldık. code-server, geliştirme iş akışınızı büyük ölçüde esnekleştiren ve verimliliğinizi artıran güçlü bir araçtır. Uzaktan erişim, donanım bağımsızlığı ve tutarlı geliştirme ortamları sayesinde, projeleriniz üzerinde daha etkin çalışabilirsiniz.
### Sıkça Sorulan Sorular (SSS)
#### Q1: code-server nedir?
A1: code-server, popüler Visual Studio Code (VS Code) editörünü web tarayıcınız üzerinden çalıştırmanıza olanak tanıyan açık kaynaklı bir platformdur. Bir sunucuya kurulur ve internet üzerinden herhangi bir cihazdan erişilebilir hale gelir.
#### Q2: Neden code-server kullanmalıyım?
A2: Uzaktan geliştirme, düşük donanımlı yerel cihazlardan erişim, ekip içinde tutarlı geliştirme ortamları sağlama ve hassas kodların güvenli bir sunucuda tutulması gibi birçok avantajı vardır.
#### Q3: Parolamı unuttum, ne yapmalıyım?
A3: ~/.config/code-server/config.yaml dosyasını düzenleyerek password alanını yeni bir parola ile değiştirebilirsiniz. Değişikliği yaptıktan sonra sudo systemctl restart code-server@$USER komutuyla code-server servisini yeniden başlatmayı unutmayın.
#### Q4: Uzantılar code-server’da çalışıyor mu?
A4: Evet, VS Code Marketplace’indeki çoğu uzantı code-server’da da sorunsuz bir şekilde çalışır. Doğrudan IDE içinden uzantıları arayabilir ve kurabilirsiniz.
#### Q5: code-server’ı farklı bir portta çalıştırmak mümkün mü?
A5: Evet, ~/.config/code-server/config.yaml dosyasındaki bind-addr ayarını değiştirerek code-server’ın dinleyeceği portu belirleyebilirsiniz (örneğin, 127.0.0.1:9000). Değişiklikten sonra servisi yeniden başlatmanız gerekir.
#### Q6: Birden fazla kullanıcı için code-server nasıl yapılandırılır?
A6: Her kullanıcı için ayrı bir sistem hesabı oluşturulmalı ve her kullanıcının kendi code-server örneğini kurması sağlanmalıdır. Her örnek farklı bir iç portta çalışmalı (örneğin, 8080, 8081, 8082) ve Nginx gibi bir ters proxy ile farklı alt alan adları veya URL yolları üzerinden yönlendirilmelidir.
#### Q7: Performans sorunları yaşıyorum, ne yapmalıyım?
A7: Sunucunuzun yeterli RAM ve CPU kaynaklarına sahip olduğundan emin olun. Gereksiz uzantıları devre dışı bırakın, tarayıcı önbelleğini temizleyin ve hızlı bir ağ bağlantısına sahip olduğunuzdan emin olun. SSD depolama kullanmak da performansı önemli ölçüde artırabilir.