code-server Bulut IDE Platformunu Ubuntu 18.04 Üzerine Kurulumu [Hızlı Başlangıç]
Günümüz yazılım geliştirme dünyasında esneklik ve erişilebilirlik, üretkenliğin anahtarları haline gelmiştir. Geliştiricilerin herhangi bir yerden, herhangi bir cihazdan projelerine erişebilmeleri, kesintisiz bir iş akışı sağlamak için kritik öneme sahiptir. İşte tam da bu noktada, popüler bir kod düzenleyici olan Visual Studio Code’un (VS Code) tarayıcı tabanlı bir versiyonu olan code-server devreye girer. Bu makalede, code-server‘ı Ubuntu 18.04 sunucunuz üzerine nasıl kuracağınızı ve güvenli bir şekilde nasıl yapılandıracağınızı adım adım, detaylı bir şekilde açıklayacağız.
Giriş: code-server Nedir ve Neden Kullanmalıyız?
code-server, Microsoft’un popüler ve açık kaynaklı kod düzenleyicisi Visual Studio Code’u bir sunucu üzerinde çalıştırmanıza ve web tarayıcınız aracılığıyla erişmenize olanak tanıyan bir projedir. Temel olarak, VS Code’un tüm özelliklerini (uzantılar, temalar, entegre terminal, hata ayıklayıcı vb.) bir bulut ortamında kullanmanızı sağlar. Bu, geliştirme ortamınızı yerel makinenizin kısıtlamalarından kurtarır ve size benzersiz bir esneklik sunar.
code-server kullanmanın başlıca avantajları şunlardır:
* Her Yerden Erişim: İnternet bağlantısı olan herhangi bir cihazdan (dizüstü bilgisayar, tablet, hatta akıllı telefon) geliştirme ortamınıza erişebilirsiniz.
* Tutarlı Geliştirme Ortamı: Tüm geliştiriciler aynı sunucu üzerinde çalıştığında, “benim makinemde çalışıyordu” sorunları ortadan kalkar. Herkes aynı araç setine, bağımlılıklara ve yapılandırmalara sahip olur.
* Kaynak Verimliliği: Daha az güçlü yerel cihazlarda bile, tüm yoğun işlem gerektiren görevler sunucu üzerinde gerçekleştirildiği için sorunsuz bir deneyim sunar. Bu, özellikle eski veya düşük özellikli bilgisayarlar kullanan geliştiriciler için büyük bir avantajdır.
* Güvenlik ve Yedekleme: Kodunuz ve geliştirme ortamınız merkezi bir sunucuda barındırıldığı için, yerel makine arızaları veya kayıpları durumunda veri kaybı riski azalır. Sunucu yedeklemeleri ile verileriniz daha güvende olur.
* Kolay İşbirliği: Birden fazla geliştirici aynı code-server örneğini kullanarak aynı proje üzerinde eş zamanlı çalışabilir (paylaşımlı bir oturum olmasa da aynı dosya sistemine erişebilirler).
* Hızlı Kurulum: Yeni bir geliştirme ortamı kurmak, sadece code-server‘a erişmek kadar kolaydır. Her yeni makineye ayrı ayrı VS Code ve uzantılarını kurmakla uğraşmanıza gerek kalmaz.
Bu makalede, Ubuntu 18.04 LTS (Long Term Support) sürümünü kullanarak code-server kurulumunu ele alacağız. Ubuntu 18.04, kararlılığı ve geniş topluluk desteği nedeniyle sunucu ortamları için popüler bir seçimdir. Kurulumu tamamladığınızda, kendi özel bulut tabanlı IDE’nize sahip olacak ve geliştirme sürecinizi bir üst seviyeye taşıyabileceksiniz.
Ön Koşullar ve Sistem Gereksinimleri
code-server kurulumuna başlamadan önce, bazı temel ön koşulları yerine getirmeniz ve sistem gereksinimlerini göz önünde bulundurmanız gerekmektedir.
Sunucu
* İşletim Sistemi: Ubuntu 18.04 (64-bit). Bu makale özellikle bu sürüme odaklanacaktır.
* Erişim: Sunucunuza SSH (Secure Shell) erişiminizin olması gerekmektedir. Genellikle, bir bulut sağlayıcısından (AWS, Google Cloud, DigitalOcean, Vultr vb.) bir Sanal Özel Sunucu (VPS) veya özel bir sunucu kiralayabilirsiniz.
* Kullanıcı Yetkileri: Kurulumu gerçekleştirmek için sudo yetkilerine sahip bir kullanıcı hesabına ihtiyacınız olacaktır. Genellikle, SSH ile bağlandığınız ilk kullanıcı bu yetkilere sahiptir.
Donanım Kaynakları
code-server‘ın performanslı çalışabilmesi için belirli miktarda donanım kaynağına ihtiyacı vardır. Gerekli kaynaklar, üzerinde çalışacağınız projelerin büyüklüğüne ve aynı anda kaç kullanıcının erişeceğine bağlı olarak değişir:
* CPU: Minimum 1 çekirdekli işlemci, ancak daha büyük projeler veya çoklu kullanıcılar için 2 veya daha fazla çekirdek önerilir.
* RAM: Minimum 1 GB RAM, ancak 2 GB veya daha fazlası daha iyi bir deneyim sunacaktır. Özellikle Java, Go, C++ gibi dillerde veya çok sayıda uzantı kullanıyorsanız daha fazla RAM faydalı olacaktır.
* Depolama: Minimum 10 GB boş disk alanı. Bu, işletim sistemi, code-server ve projeleriniz için yeterli olacaktır. SSD diskler, performans açısından HDD’lere göre çok daha iyi bir deneyim sunar.
Ağ Yapılandırması
* Güvenlik Duvarı (Firewall): Sunucunuzda bir güvenlik duvarı (örneğin UFW – Uncomplicated Firewall) etkinse, code-server‘ın varsayılan portu olan 8080’i ve daha sonra HTTPS için 80 ve 443 portlarını açmanız gerekecektir.
* Alan Adı (Domain Name): Güvenli bir HTTPS bağlantısı kurmak ve Let’s Encrypt sertifikası almak için bir alan adına sahip olmanız ve bu alan adını sunucunuzun IP adresine yönlendirmiş olmanız şiddetle tavsiye edilir.
Bu ön koşulları sağladıktan sonra, code-server kurulumuna geçmeye hazırız.
Adım 1: Sistemi Güncelleme ve Gerekli Bağımlılıkları Kurma
Herhangi bir yeni yazılım kurulumuna başlamadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, olası bağımlılık sorunlarını önler ve en son güvenlik yamalarına sahip olmanızı sağlar. Ayrıca, code-server‘ın sorunsuz çalışması için bazı temel araçlara ihtiyacımız olacak.
Sunucunuza SSH ile bağlandıktan sonra aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
* sudo apt update: Bu komut, yerel paket indeksinizi günceller. Yani, APT (Advanced Package Tool) paket yöneticisinin, mevcut paketlerin ve bunların sürümlerinin en son bilgilerini almasını sağlar. Bu, yeni yazılımları bulmak ve mevcut yazılımları güncellemek için gereklidir.
* sudo apt upgrade -y: Bu komut, update ile alınan bilgilere dayanarak, sisteminizdeki yüklü paketlerin yeni sürümleri varsa bunları yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar, böylece yükseltme işlemi kesintisiz devam eder.
Sisteminiz güncellendikten sonra, code-server kurulum betiğinin veya bazı bağımlılıkların ihtiyaç duyabileceği birkaç temel aracı kuralım:
sudo apt install curl wget git build-essential -y
* curl: Uzak sunuculardan veri indirmek için kullanılan bir komut satırı aracıdır. code-server kurulum betiğini indirmek için kullanılacaktır.
* wget: curl‘a benzer şekilde, web’den dosya indirmek için kullanılır.
* git: Versiyon kontrol sistemi. Geliştirme ortamınızda Git kullanmak isteyeceğiniz için şimdiden kurmak mantıklıdır.
* build-essential: Derleme araçları (GCC, G++ ve make gibi) içerir. Bazı Node.js modülleri veya diğer yazılımlar derleme gerektirebilir, bu paket bu tür durumlar için gereklidir.
Bu adımları tamamladıktan sonra, sisteminiz code-server kurulumuna hazırdır.
Adım 2: code-server Kurulumu
code-server‘ı kurmanın en kolay yolu, geliştiriciler tarafından sağlanan resmi kurulum betiğini kullanmaktır. Bu betik, doğru code-server sürümünü indirir, sisteminize kurar ve PATH’inize ekler.
Aşağıdaki komutu çalıştırarak code-server‘ı kurun:
curl -fsSL https://code-server.dev/install.sh | sh
Bu komutun ne anlama geldiğini açıklayalım:
* curl -fsSL https://code-server.dev/install.sh: curl komutunu kullanarak code-server‘ın resmi kurulum betiğini indirir.
* -f: HTTP hatalarında sessiz kalır (hata durumunda çıktı vermez).
* -s: Sessiz modda çalışır (ilerleme çubuğu veya hata mesajları göstermez).
* -S: -s ile birlikte kullanıldığında, eğer bir hata oluşursa yine de hata mesajlarını gösterir.
* -L: Yönlendirmeleri takip eder (URL değişse bile doğru adresi bulur).
* | sh: İndirilen betiği doğrudan sh (Bourne Shell) yorumlayıcısına yönlendirir ve çalıştırır. Bu, betiği önce diske kaydetmeden doğrudan çalıştırmanızı sağlar.
Kurulum betiği, code-server‘ın en son kararlı sürümünü indirir ve /usr/local/bin/code-server konumuna kurar. Ayrıca, Node.js ve diğer gerekli bağımlılıkları da otomatik olarak kurabilir veya güncelleyebilir.
Kurulum tamamlandıktan sonra, code-server‘ın doğru bir şekilde kurulup kurulmadığını ve erişilebilir olup olmadığını doğrulamak için sürümünü kontrol edebilirsiniz:
code-server --version
Bu komut, yüklü code-server sürümünü ve Node.js sürümünü göstermelidir. Örneğin:
3.11.1 528e67a0e8c894e77531c34a1795b8d29871589d
Node.js 14.15.4
Eğer bu çıktıyı görüyorsanız, code-server başarıyla kurulmuştur.
Adım 3: code-server’ı Başlatma ve Erişim
code-server başarıyla kurulduktan sonra, onu manuel olarak başlatabilir ve web tarayıcınızdan erişebilirsiniz. İlk çalıştırmada, code-server size bir şifre atayacak ve bu şifreyi kullanarak arayüze giriş yapmanız gerekecektir.
code-server‘ı başlatmak için basitçe aşağıdaki komutu çalıştırın:
code-server
Bu komutu çalıştırdığınızda, code-server varsayılan olarak 8080 portunda dinlemeye başlayacaktır. Konsolda, code-server‘a erişmek için kullanmanız gereken bir şifre göreceksiniz. Çıktı şöyle bir şeye benzeyecektir:
[INFO] code-server 3.11.1
[INFO] Using user-data-dir /home/youruser/.local/share/code-server
[INFO] Using config file /home/youruser/.config/code-server/config.yaml
[INFO] Starting code-server on 0.0.0.0:8080
[INFO] - Password: YOUR_GENERATED_PASSWORD
[INFO] - Using cert: no
[INFO] To use a self-signed HTTPS certificate, pass --cert
[INFO] To use your own certificate, pass --cert-key and --cert
Yukarıdaki çıktıda YOUR_GENERATED_PASSWORD yazan kısım, sizin için oluşturulan geçici şifredir. Bu şifreyi not alın.
Şimdi bir web tarayıcısı açın ve sunucunuzun IP adresini ve 8080 portunu kullanarak code-server‘a erişin:
http://SUNUCU_IP_ADRESINIZ:8080
Tarayıcınızda bir şifre ekranı belirecektir. Not aldığınız şifreyi girin ve “Submit” (Gönder) düğmesine tıklayın. Başarılı bir şekilde giriş yaptıktan sonra, tanıdık VS Code arayüzü tarayıcınızda açılacaktır.
Önemli Not: Şu anda code-server‘a HTTP üzerinden erişiyorsunuz, bu da bağlantınızın şifresiz olduğu anlamına gelir. Bu, özellikle hassas verilerle çalışırken veya genel internet üzerinden erişirken güvenlik riskleri taşır. Sonraki adımlarda bu güvenlik sorununu HTTPS kullanarak çözeceğiz.
code-server‘ı bu şekilde başlattığınızda, SSH oturumunuzu kapattığınızda veya komutu durdurduğunuzda code-server da kapanacaktır. Bunu önlemek ve code-server‘ın arka planda sürekli çalışmasını sağlamak için, onu bir sistem servisi olarak yapılandırmamız gerekecektir.
Adım 4: code-server’ı Bir Sistem Servisi Olarak Yapılandırma (systemd)
code-server‘ın sürekli çalışmasını sağlamak, sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlamak ve kaynak yönetimini kolaylaştırmak için onu bir systemd servisi olarak yapılandırmak en iyi yöntemdir.
systemd, Linux sistemlerinde sistem ve servis yöneticisidir. Bir servis dosyası oluşturarak systemd‘ye code-server‘ı nasıl başlatacağını, durduracağını, yeniden başlatacağını ve hata durumunda ne yapacağını söyleyebiliriz.
Öncelikle, code-server‘ın çalışacağı bir kullanıcı oluşturmak iyi bir güvenlik uygulamasıdır. code-server‘ı doğrudan root kullanıcısı altında çalıştırmak önerilmez. Bu örnekte mevcut kullanıcı adımızı kullanacağız, ancak dilerseniz code-server için özel bir kullanıcı oluşturabilirsiniz.
Aşağıdaki komutla yeni bir systemd servis dosyası oluşturalım:
sudo nano /etc/systemd/system/code-server.service
Açılan editöre aşağıdaki içeriği yapıştırın. YOUR_USERNAME yazan yerleri kendi kullanıcı adınızla, YOUR_PASSWORD yazan yeri ise güvenli bir şifre ile değiştirmeyi unutmayın.
[Unit]
Description=code-server
After=network.target
[Service]
Type=exec
User=YOUR_USERNAME
Group=YOUR_USERNAME
WorkingDirectory=/home/YOUR_USERNAME/
ExecStart=/usr/local/bin/code-server --bind-addr 127.0.0.1:8080 --auth password --password YOUR_PASSWORD
Restart=always
[Install]
WantedBy=multi-user.target
Yukarıdaki yapılandırma dosyasındaki önemli noktalar:
* [Unit] Bölümü:
* Description: Servisin ne işe yaradığını açıklar.
* After=network.target: code-server servisinin ağ bağlantısı kurulduktan sonra başlamasını sağlar.
* [Service] Bölümü:
* Type=exec: Servisin bir çalıştırılabilir dosya olduğunu belirtir.
* User=YOUR_USERNAME: code-server‘ın hangi kullanıcı altında çalışacağını belirtir. Bu alanı kendi kullanıcı adınızla değiştirin.
* Group=YOUR_USERNAME: code-server‘ın hangi grup altında çalışacağını belirtir. Bu alanı kendi kullanıcı adınızla değiştirin.
* WorkingDirectory=/home/YOUR_USERNAME/: code-server‘ın hangi dizinde çalışmaya başlayacağını belirtir. Bu, varsayılan olarak projelerinizi arayacağı dizin olacaktır. Bu alanı kendi kullanıcı adınızla değiştirin.
* ExecStart=/usr/local/bin/code-server --bind-addr 127.0.0.1:8080 --auth password --password YOUR_PASSWORD: code-server‘ı başlatmak için kullanılan komuttur.
* --bind-addr 127.0.0.1:8080: Bu önemli bir ayardır. code-server‘ın sadece yerel makineden (localhost) erişilebilir olmasını sağlar. Bu, daha sonra bir Nginx ters proxy’si kurduğumuzda, code-server‘ın doğrudan internete açık olmamasını ve sadece Nginx üzerinden erişilmesini garanti eder.
* --auth password: Kimlik doğrulama yönteminin şifre olduğunu belirtir.
* --password YOUR_PASSWORD: code-server‘a giriş yapmak için kullanılacak şifreyi belirler. Bu alanı güçlü ve güvenli bir şifre ile değiştirin.
* Restart=always: Servis herhangi bir nedenle durursa, systemd‘nin onu otomatik olarak yeniden başlatmasını sağlar.
* [Install] Bölümü:
* WantedBy=multi-user.target: Bu, sistem çok kullanıcılı modda başladığında servisin de başlamasını sağlar.
Dosyayı kaydedin ve kapatın (Nano’da CTRL+X, Y, Enter).
Şimdi, systemd‘ye yeni servisi tanıtmak ve onu etkinleştirmek için aşağıdaki komutları çalıştırın:
sudo systemctl daemon-reload
sudo systemctl enable code-server
sudo systemctl start code-server
* sudo systemctl daemon-reload: systemd‘nin yeni servis dosyasını okumasını sağlar.
* sudo systemctl enable code-server: code-server servisinin sistem başlangıcında otomatik olarak başlamasını sağlar.
* sudo systemctl start code-server: Servisi hemen başlatır.
Servisin durumunu kontrol etmek için:
sudo systemctl status code-server
Çıktıda Active: active (running) ifadesini görmelisiniz. Ayrıca, journalctl -u code-server komutu ile servisin loglarını görüntüleyebilir ve olası hataları kontrol edebilirsiniz.
Bu adımla birlikte, code-server artık arka planda sürekli çalışacak ve sunucunuz yeniden başlatıldığında otomatik olarak başlayacaktır. Ancak, --bind-addr 127.0.0.1:8080 ayarı nedeniyle, code-server‘a doğrudan IP adresiniz ve 8080 portu üzerinden dışarıdan erişemezsiniz. Bu, güvenlik için kasıtlı bir adımdır. Bir sonraki adımda, Nginx kullanarak güvenli HTTPS erişimi sağlayacağız.
Adım 5: Güvenliği Sağlama (HTTPS ve Ters Proxy – Nginx ile)
code-server‘a sadece yerel makineden erişilebilir hale getirdiğimiz için, ona dışarıdan güvenli bir şekilde erişmek için bir ters proxy (reverse proxy) kullanmamız gerekecek. Nginx, bu amaç için popüler ve yüksek performanslı bir web sunucusudur. Ayrıca, Let’s Encrypt ve Certbot kullanarak ücretsiz bir SSL/TLS sertifikası alarak HTTPS bağlantısını etkinleştireceğiz.
Nginx Kurulumu
Nginx’i sunucunuza kuralım:
sudo apt install nginx -y
Nginx kurulduktan sonra, otomatik olarak başlayacaktır. Durumunu kontrol edebilirsiniz:
sudo systemctl status nginx
Güvenlik Duvarını Yapılandırma (UFW)
Eğer UFW (Uncomplicated Firewall) kullanıyorsanız, Nginx’in HTTP (80) ve HTTPS (443) portlarından gelen bağlantılara izin vermesi için güvenlik duvarınızı yapılandırmanız gerekir:
sudo ufw allow 'Nginx Full'
sudo ufw reload
Eğer UFW etkin değilse ve etkinleştirmek istiyorsanız:
sudo ufw enable
SSL Sertifikası Alma (Let’s Encrypt ve Certbot)
HTTPS için bir SSL sertifikasına ihtiyacımız var. Let’s Encrypt, ücretsiz ve otomatik sertifikalar sağlayan bir sertifika yetkilisidir. Certbot ise Let’s Encrypt sertifikalarını kolayca alıp yönetmek için kullanılan bir araçtır.
Ubuntu 18.04’te Certbot’u Snap üzerinden kurmak en kolay yoldur:
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Şimdi Nginx ile uyumlu bir şekilde sertifika almak için Certbot’u çalıştırın. your_domain.com yerine kendi alan adınızı yazın:
sudo certbot --nginx -d your_domain.com
Certbot sizden bir e-posta adresi isteyecek (acil durumlar ve yenileme bildirimleri için) ve hizmet koşullarını kabul etmenizi isteyecektir. Ardından, Certbot Nginx yapılandırmanızı otomatik olarak algılayacak ve sertifikayı alıp Nginx’i HTTPS’i kullanacak şekilde yapılandıracaktır. Ayrıca, HTTP trafiğini HTTPS’e yönlendirip yönlendirmeme konusunda bir seçenek sunacaktır; genellikle “Redirect” (Yönlendir) seçeneğini (2) seçmek en iyisidir.
Nginx Ters Proxy Yapılandırması
Şimdi Nginx’i code-server‘a gelen istekleri yönlendirecek şekilde yapılandıralım. Yeni bir Nginx yapılandırma dosyası oluşturalım:
sudo nano /etc/nginx/sites-available/code-server
Aşağıdaki içeriği yapıştırın ve your_domain.com yazan yerleri kendi alan adınızla değiştirin. Certbot’un zaten otomatik olarak SSL yapılandırmasını eklemiş olması beklenir, ancak yine de temel ters proxy ayarlarını eklememiz gerekiyor.
server {
listen 80;
listen [::]:80;
server_name your_domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain.com;
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://localhost:8080/;
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;
}
}
Açıklamalar:
* İlk server bloğu, HTTP (80) üzerinden gelen tüm istekleri HTTPS’e (443) yönlendirir. Bu, Certbot tarafından otomatik olarak eklenmiş veya değiştirilmiş olabilir.
* İkinci server bloğu, HTTPS (443) isteklerini dinler.
* ssl_certificate ve ssl_certificate_key: Certbot tarafından oluşturulan SSL sertifikası ve anahtarının yollarını belirtir.
* location / {}: Tüm gelen isteklerin nasıl işleneceğini tanımlar.
* proxy_pass http://localhost:8080/;: Bu, Nginx’in gelen tüm istekleri code-server‘ın dinlediği yerel 8080 portuna yönlendirmesini sağlar.
* proxy_set_header ...: Bu başlıklar, code-server‘ın istemcinin gerçek IP adresi, ana bilgisayar adı ve protokolü gibi bilgilere erişmesini sağlar. Bu, özellikle loglama ve güvenlik için önemlidir.
Dosyayı kaydedin ve kapatın.
Yeni yapılandırmayı etkinleştirmek için bir sembolik bağlantı oluşturun:
sudo ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/
Varsayılan Nginx yapılandırmasını devre dışı bırakın, aksi takdirde çakışmalar yaşanabilir:
sudo rm /etc/nginx/sites-enabled/default
Nginx yapılandırmanızda bir hata olup olmadığını kontrol edin:
sudo nginx -t
Eğer syntax is ok ve test is successful mesajlarını görüyorsanız, her şey yolundadır. Şimdi Nginx’i yeniden başlatın:
sudo systemctl restart nginx
Artık web tarayıcınızı açın ve alan adınızı kullanarak code-server‘a erişin:
https://your_domain.com
Tarayıcınızın adres çubuğunda bir kilit simgesi görmelisiniz, bu da bağlantınızın HTTPS ile güvenli olduğunu gösterir. code-server sizden daha önce systemd servisinde belirlediğiniz şifreyi isteyecektir.
Adım 6: code-server Yapılandırması ve Özelleştirmeler
code-server‘ı kurduktan ve güvenli bir şekilde erişilebilir hale getirdikten sonra, deneyiminizi daha da iyileştirmek için bazı yapılandırma ayarları ve özelleştirmeler yapabilirsiniz.
Yapılandırma Dosyası
code-server‘ın ana yapılandırma dosyası genellikle kullanıcının ev dizinindeki .config/code-server/config.yaml yolunda bulunur. Bu dosyayı düzenleyerek code-server‘ın başlangıç davranışlarını kontrol edebilirsiniz.
nano ~/.config/code-server/config.yaml
Bu dosya, systemd servisinde ExecStart içinde belirttiğiniz komut satırı argümanlarının birçoğunu içerebilir. Örneğin, şifreyi veya dinleme adresini buradan da ayarlayabilirsiniz. Ancak, systemd servisinde belirttiğiniz argümanlar, bu yapılandırma dosyasındaki ayarları geçersiz kılacaktır. Bu nedenle, systemd servisi daha önceliklidir.
Eğer systemd servisinde şifre yerine yapılandırma dosyasını kullanmak isterseniz, ExecStart satırını aşağıdaki gibi düzenleyebilir ve şifreyi config.yaml dosyasına taşıyabilirsiniz:
code-server.service içinde (şifreyi kaldırın):
ExecStart=/usr/local/bin/code-server --bind-addr 127.0.0.1:8080
~/.config/code-server/config.yaml içinde (şifreyi buraya ekleyin):
bind-addr: 127.0.0.1:8080
auth: password
password: YOUR_SECURE_PASSWORD
Herhangi bir değişiklik yaptıktan sonra systemd servisini veya code-server‘ı yeniden başlatmayı unutmayın:
sudo systemctl restart code-server
VS Code Uzantıları ve Ayarları
code-server, standart VS Code uzantılarını ve ayarlarını destekler. Tarayıcınızdaki code-server arayüzünden sol taraftaki uzantılar simgesine tıklayarak uzantıları arayabilir, kurabilir ve yönetebilirsiniz.
Popüler uzantılar arasında:
* Dil Uzantıları: Python, JavaScript/TypeScript, Go, PHP, Java vb.
* GitLens: Git entegrasyonunu geliştirir.
* Docker: Docker konteynerleri ile çalışmayı kolaylaştırır.
* Prettier/ESLint: Kod biçimlendirme ve linting için.
* Remote – SSH: (Eğer başka sunuculara SSH ile bağlanmak isterseniz)
Ayrıca, VS Code’un sol alt köşesindeki dişli simgesine tıklayarak veya CTRL+, (Windows/Linux) / CMD+, (macOS) tuş kombinasyonuyla ayarlar menüsüne erişebilirsiniz. Burada temaları, yazı tiplerini, klavye kısayollarını ve diğer tüm VS Code ayarlarını kişiselleştirebilirsiniz. Bu ayarlar, code-server‘ın çalıştığı sunucu üzerinde saklandığı için, farklı cihazlardan eriştiğinizde bile ayarlarınız tutarlı kalır.
Sık Karşılaşılan Sorunlar ve Çözümleri
code-server kurulumu sırasında veya sonrasında karşılaşabileceğiniz bazı yaygın sorunlar ve bunların çözümleri aşağıda listelenmiştir:
1. Tarayıcıdan Erişilemiyor (Bağlantı Kurulamıyor)
* Güvenlik Duvarı: code-server‘a doğrudan erişmeye çalışıyorsanız (Nginx olmadan), sunucunuzun güvenlik duvarında 8080 portunun açık olduğundan emin olun (sudo ufw allow 8080). Eğer Nginx kullanıyorsanız, 80 ve 443 portlarının açık olduğundan emin olun (sudo ufw allow 'Nginx Full').
* code-server Çalışıyor mu?: sudo systemctl status code-server komutuyla servisin aktif ve çalışır durumda olduğunu doğrulayın. Eğer çalışmıyorsa, sudo systemctl start code-server ile başlatın ve journalctl -u code-server ile logları kontrol edin.
* Nginx Çalışıyor mu?: Eğer Nginx kullanıyorsanız, sudo systemctl status nginx ile Nginx’in çalıştığını doğrulayın.
* --bind-addr Ayarı: systemd servis dosyasında --bind-addr 127.0.0.1:8080 ayarını yaptıysanız, code-server sadece localhost üzerinden erişilebilir demektir. Bu durumda doğrudan IP:8080 üzerinden erişemezsiniz, Nginx ters proxy’si üzerinden erişmeniz gerekir.
2. Şifre Hatası
* Doğru Şifre: systemd servisinde YOUR_PASSWORD olarak belirlediğiniz şifreyi doğru girdiğinizden emin olun. Küçük/büyük harf duyarlıdır.
* Yapılandırma Dosyası: Eğer şifreyi config.yaml dosyasına taşıdıysanız, bu dosyayı kontrol edin ve doğru şifreyi girdiğinizden emin olun.
* Servisi Yeniden Başlatma: Şifreyi değiştirdiyseniz, sudo systemctl restart code-server komutuyla servisi yeniden başlattığınızdan emin olun.
3. Nginx Hataları (502 Bad Gateway veya Diğer Hatalar)
* Nginx Yapılandırma Testi: sudo nginx -t komutuyla Nginx yapılandırma dosyanızda sözdizimi hatası olup olmadığını kontrol edin.
* Nginx Yeniden Başlatma: Herhangi bir Nginx yapılandırma değişikliğinden sonra sudo systemctl restart nginx komutuyla Nginx’i yeniden başlattığınızdan emin olun.
* code-server Dinliyor mu?: code-server‘ın localhost:8080 üzerinde dinlediğinden emin olun. sudo ss -tulpn | grep 8080 komutuyla kontrol edebilirsiniz. code-server‘ın IP’ye değil, sadece localhost‘a bağlı olduğundan emin olun.
* Certbot Sertifikaları: SSL sertifikalarının geçerli ve doğru yollarda olduğundan emin olun. sudo certbot certificates komutuyla mevcut sertifikalarınızı listeleyebilirsiniz.
4. Performans Sorunları
* Sistem Kaynakları: Sunucunuzun CPU, RAM ve disk I/O kullanımını kontrol edin (htop, free -h, iostat). Yetersiz kaynaklar performansı düşürebilir.
* Uzantılar: Çok fazla uzantı kullanmak veya bazı uzantıların bellek sızıntıları olması performansı etkileyebilir. Gereksiz uzantıları devre dışı bırakmayı veya kaldırmayı deneyin.
* Ağ Bağlantısı: İnternet bağlantınızın hızı ve kararlılığı da code-server deneyiminizi etkiler. Yavaş veya dengesiz bir bağlantı gecikmelere neden olabilir.
5. Sertifika Yenileme Sorunları
* Certbot tarafından alınan Let’s Encrypt sertifikaları 90 gün geçerlidir. Certbot, sertifikaları otomatik olarak yenilemek için bir cron işi veya systemd zamanlayıcısı kurar.
* Yenileme işleminin düzgün çalıştığından emin olmak için test edebilirsiniz: sudo certbot renew --dry-run. Herhangi bir hata yoksa, otomatik yenileme çalışacaktır.
Bu sorun giderme adımları, karşılaşabileceğiniz çoğu problemi çözmenize yardımcı olacaktır. Eğer sorun devam ederse, journalctl -u code-server ve journalctl -u nginx gibi komutlarla sistem loglarını daha detaylı incelemek, sorunun kök nedenini bulmak için önemlidir.
Sonuç
Bu kapsamlı makalede, code-server bulut IDE platformunu Ubuntu 18.04 sunucunuza nasıl kuracağınızı, bir systemd servisi olarak nasıl yapılandıracağınızı ve Nginx ile güvenli HTTPS erişimini nasıl sağlayacağınızı adım adım öğrendiniz. Artık, internet bağlantısı olan herhangi bir cihazdan, tarayıcınız aracılığıyla tam teşekküllü bir VS Code geliştirme ortamına erişebilirsiniz.
code-server, geliştirme iş akışınıza esneklik, tutarlılık ve erişilebilirlik katarak üretkenliğinizi artırmanıza olanak tanır. Sunucu üzerindeki güçlü kaynakları kullanarak, yerel makinenizin kısıtlamalarından bağımsız olarak büyük projeler üzerinde çalışabilir, uzantılarla ortamınızı zenginleştirebilir ve her yerden kod yazma özgürlüğünü yaşayabilirsiniz.
Kurulum sürecinde dikkat edilmesi gereken en önemli noktalar, güvenlik duvarı ayarları, systemd servisi için doğru kullanıcı ve şifre yapılandırması, ve Nginx ters proxy’sinin doğru şekilde SSL sertifikaları ile entegre edilmesidir. Bu adımları titizlikle takip ederek, kendi kişisel veya ekip bulut IDE’nizi başarıyla devreye alabilirsiniz.
Geliştirme yolculuğunuzda code-server‘ın size sunduğu avantajlardan tam olarak yararlanmak için, farklı uzantıları keşfetmeyi, VS Code ayarlarınızı kişiselleştirmeyi ve projelerinizi bu yeni, güçlü ortamda denemeyi unutmayın. Mutlu kodlamalar!
