Kısıtlı (Jailed) SSH Ortamında Node.js ve PM2 Kurulumu: Kesin Çözüm Rehberi

Paylaşımlı hosting sunucularında veya KeyHelp, cPanel, Plesk gibi kontrol panellerinde kısıtlı (Jailed) SSH erişimi ile Node.js uygulaması barındırmak genellikle kabusa dönüşebilir. Sunucu yöneticileri güvenlik amacıyla “Root” yetkilerini kapattığında, standart npm install, derleme (build) işlemleri ve pm2 komutları ardı ardına EACCES (Yetki Reddedildi) veya ERR_DLOPEN_FAILED hataları vermeye başlar.

Bu kapsamlı rehberde; Keyhel Panel’de Jailed SSH ortamında güvenlikten ödün vermeden, gerekli izinleri ayarlamayı, NVM (Node Version Manager) kullanarak Node.js kurmayı ve uygulamalarınızı PM2 ile 7/24 kesintisiz nasıl çalıştıracağınızı adım adım anlatıyoruz.


1. Adım: Ön Hazırlık – “Ek İkili Dosyalar” ve Kütüphane İzinleri

Jailed SSH (Hapishane) ortamı, kullanıcıyı sadece belli başlı komutlarla sınırlandırır. NPM’in paketleri indirebilmesi, zipli dosyaları açabilmesi ve özellikle Vite/Rollup gibi modern araçların Linux çekirdek kütüphanelerine ulaşıp derleme (build) yapabilmesi için sunucu panelinizden bazı komutlara izin vermeniz gerekir.

Hosting panelinizden (Örn: KeyHelp’te Yapılandırma > Sınırlandırılmış SSH > Ek İkili Dosyalar bölümüne) aşağıdaki listeyi eksiksiz olarak ekleyin ve kaydedin:

Plaintext

/usr/bin/node
/usr/bin/npm
/usr/local/bin/pm2
/usr/bin/sed
/usr/bin/awk
/usr/bin/tr
/usr/bin/uname
/usr/bin/tar
/usr/bin/gzip
/usr/bin/xz
/usr/bin/sort
/usr/bin/grep
/usr/bin/tail
/usr/bin/head
/usr/bin/cut
/usr/bin/wc
/usr/bin/dirname
/usr/bin/find
/usr/bin/tee
/usr/bin/sha256sum
/usr/bin/rm
/usr/bin/cp
/usr/bin/mv
/lib/x86_64-linux-gnu/librt.so.1
/usr/lib/x86_64-linux-gnu/librt.so.1
/lib64/librt.so.1

Not: Listenin sonundaki librt.so.1 yolları, Vite ve Rollup kullanan projelerde derleme sırasında alınan Error: librt.so.1: cannot open shared object file (ERR_DLOPEN_FAILED) hatasının kesin çözümüdür.


2. Neden Jailed SSH’ta Standart Node.js Kurulumu Çöker?

İzinleri verdikten sonra bile, sistem sizi genellikle /www veya /home/kullaniciadi gibi bir dizine hapseder. Ancak Node.js ve NPM, kurulum ve önbellek (cache) işlemleri için ana sunucu dizinlerine (/.npm) erişmeye çalışır.

Bu durum karşılaştığımız en meşhur hatayı doğurur: Error: EACCES: permission denied, mkdir '/.npm'

Çözüm: Uygulamaları “Root” düzeyinde değil, tamamen kullanıcının kendi izole alanında (Kapsayıcı mantığıyla) kurmaktır.


3. Adım Adım NVM ile Özel Node.js Motoru Kurmak

Her müşteriye veya projeye kendi bağımsız Node.js motorunu atamak için NVM kullanıyoruz. Bu sayede aynı sunucuda bir proje Node 18 ile çalışırken diğeri Node 20 ile çakışmadan çalışabilir.

Terminalinize giriş yapın ve ortamı uyandırmak için şu komutları sırasıyla girin (NVM kurulu değilse standart cURL komutuyla kurabilirsiniz):

Bash

# NVM'in yolunu belirleyin
export NVM_DIR="/www/.nvm"

# NVM'i aktif edin
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# İstediğiniz Node sürümünü kurun ve kullanın (Örn: v20)
nvm install 20
nvm use 20

4. NPM EACCES (Yetki) Hatalarını Tamamen Aşmak

NPM’in sunucu kök dizinlerine dosya yazmaya çalışmasını engellemek için ona “Ev” dizininin neresi olduğunu söylemeliyiz. Aşağıdaki komut, NPM’in tüm önbellek dosyalarını kısıtlı alanımız olan /www içerisine yazmasını sağlar:

Bash

export HOME="/www"

Sürüm Çakışmalarını (ERESOLVE) Gidermek

Projelerinizde paket sürümleri uyuşmazlığı (npm error ERESOLVE) yaşıyorsanız, NPM’e eski tip bağımlılık çözümlemeyi kullanmasını söyleyerek kurulumu zorlayabilirsiniz:

Bash

npm install --legacy-peer-deps

5. Jailed Ortamda PM2 Kurulumu ve “module_conf.json” Hatası Çözümü

Uygulamanızı arka planda sürekli çalıştıracak olan PM2’yi kurmak, yetki sorunlarının en çok yaşandığı yerdir. PM2 logları ve PID dosyalarını ana dizindeki /.pm2 içine yazmaya çalışır. Bunu önlemek için PM2’nin çalışma alanını yeniden yönlendiriyoruz:

Bash

# PM2'ye yeni bir ev gösteriyoruz
export PM2_HOME="/www/.pm2"

# PM2'yi global olarak kuruyoruz
npm install -g pm2

Kurulumun başarılı olup olmadığını test etmek için:

Bash

pm2 status

Bu komut size boş da olsa o meşhur PM2 tablosunu vermelidir.


6. Uygulamayı Başlatmak ve PM2’yi Kalıcı Hale Getirmek

Tüm altyapımız hazır. Şimdi Node.js veya derlenmiş (build edilmiş) projemizi canlıya alalım.

1. Uygulamanızın klasörüne girin:

Bash

cd /www/

2. PM2 ile uygulamayı başlatın: Birden fazla uygulama barındırıyorsanız --name parametresi ile isimleri birbirinden ayırmayı unutmayın.

Bash

pm2 start index.js --name "proje-adi" --cwd /www/

3. İşlemi Kaydedin: Sunucu herhangi bir sebeple yeniden başlatıldığında uygulamanızın otomatik olarak tekrar açılması için listeyi kaydedin:

Bash

pm2 save

Bonus: SSH Her Açıldığında Ayarları Korumak (.bashrc Otomasyonu)

Jailed SSH ortamları çok “unutkandır”. Terminali kapatıp açtığınızda pm2 status veya npm komutları tekrar hata verebilir. Çünkü girdiğimiz export komutları hafızadan silinir.

Her girişinizde tek bir kelimeyle ortamı hazırlamak için kendinize bir kısayol (alias) oluşturun:

Bash

echo 'alias start="export HOME=/www && export PM2_HOME=/www/.pm2 && export NVM_DIR=/www/.nvm && [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" && nvm use 20"' >> /www/.bashrc
source /www/.bashrc

Artık SSH’a her bağlandığınızda sadece start yazıp Enter’a basmanız yeterlidir. Tüm NVM ve PM2 yollarınız saniyeler içinde arka planda hazır hale gelecektir.


Özet

Kısıtlı SSH izinleri, modern web uygulamaları geliştirmek için bir engel değildir. Doğru yapılandırılmış NVM ortamları, çekirdek librt izinleri ve export yönlendirmeleri ile ana sunucuya hiçbir zarar vermeden (Root yetkisi kullanmadan) tamamen izole, güvenli ve yüksek performanslı Node.js barındırma altyapıları kurabilirsiniz. Başarılar dileriz!

İlginizi Çekebilir:WooCommerce Neden Çok Yavaş? wp_options Darboğazı ve Redis Object Cache ile Kesin Çözüm (2026)
share Paylaş facebook pinterest whatsapp x print

Benzer İçerikler

CWP’de Log Dosyalarını Temizleme ve Disk Alanı Optimizasyonu: Adım Adım Rehber
Swap Memory Doluyor: Nedenleri, Teşhis Adımları ve Kalıcı Çözümler (Linux Sunucular için)
PHP 8.5’in Web Sitelerine Etkisi: Sürüm Yükseltmek Gerçekten Hızlandırır mı?
CWP Üzerine Roundcube 1.5.11 – Modern, Güvenli ve Güncel
CWP Roundcube 1.5.11 Kurulumu: Adım Adım Güncelleme Rehberi
TTFB (İlk Bayt Süresi) Nedir? Google SEO İçin Sunucu Yanıt Süresi Nasıl Düşürülür?
Hosting’te En Sık Hatalar ve Çözüm Akışları (cPanel • Plesk • CWP)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Saviorhost İnternet Hizmetleri | © 2026 |