Hızlı özet

Dotfiles, kişisel çalışma ortamının tarif defteridir. Yeni bir makine kurduğunda tek tek ayar yapmak yerine kendi terminal düzenini, Git ayarlarını, alias’larını, editör tercihlerini ve scriptlerini Git tabanlı bir sistemden geri yükleyebilirsin.

Bu yazıda neler var?

  • Dotfiles nedir ve neden önemlidir?
  • Hangi dosyalar dotfiles içine alınabilir?
  • Alias, function, Git, SSH ve editör ayarları
  • Symlink, GNU Stow ve chezmoi yaklaşımı
  • Bootstrap script ile yeni makineyi hızlı hazırlama
  • Güvenlik: repoya asla konmaması gereken bilgiler
Ana fikir: Dotfiles, yeni bir makineye geçtiğinde “benim terminalim nerede, alias’larım nerede, Git ayarlarım nerede?” derdini ortadan kaldıran küçük ama güçlü bir kişisel otomasyon alışkanlığıdır.

Dotfiles Nedir?

Dotfiles, Unix/Linux dünyasında genellikle nokta ile başlayan kişisel ayar dosyalarına verilen isimdir. Örneğin .bashrc, .zshrc, .gitconfig, .vimrc gibi dosyalar dotfiles mantığının en bilinen örnekleridir.

Bu dosyalar ilk bakışta küçük görünebilir. Fakat zamanla terminaldeki alışkanlıklarını, kısa yollarını, Git davranışlarını, editör tercihlerini, SSH bağlantı düzenini ve günlük iş akışını taşır hale gelir. Yani aslında dotfiles, bilgisayarının ya da sunucunun görünmeyen kişisel çalışma hafızasıdır.

Bir geliştirici, sistem yöneticisi veya VPS ile sık çalışan biri için asıl zaman kaybı çoğu zaman işletim sistemini kurmak değildir. Asıl zaman kaybı, “ben bunu eskiden nasıl ayarlamıştım?” diye tekrar tekrar uğraşmaktır. Dotfiles bu dağınıklığı düzenli bir sisteme çevirir.

Dotfiles, yeni makine kurulumunu ezbere yapılan yorucu bir iş olmaktan çıkarıp tekrar edilebilir bir kişisel otomasyona dönüştürür.

Neden Her Geliştiricinin Bir Dotfiles Deposu Olmalı?

Çünkü modern çalışma ortamı tek bir cihazdan ibaret değil. Bir gün yerel Linux makinede çalışırsın, başka bir gün VPS’e bağlanırsın, sonra macOS üzerinde terminal açarsın, ardından Docker container içinde küçük bir bakım yaparsın. Her ortamda sıfırdan ayar yapmak hem vakit kaybettirir hem de tutarsızlık üretir.

Dotfiles deposu bu problemi çözer. Kişisel ayarlarını bir Git deposunda tutarsın. Yeni makinede depoyu klonlar, gerekli bağlantıları kurar ve birkaç dakika içinde alıştığın terminal ortamına geri dönersin. Bu yapı hem yedekleme hem senkronizasyon hem de kişisel standart oluşturma sağlar.

Dotfiles’ın bir başka güzel tarafı da öğrenme etkisidir. Kendi ayarlarını dosyalara böldükçe terminalde ne kullandığını daha iyi anlarsın. Gereksiz alias’ları temizlersin, tekrar eden komutları fonksiyona çevirirsin, yeni makine kurulumlarını standartlaştırırsın.

Üç Seviyeli Dotfiles Yaklaşımı

Dotfiles yönetimi tek bir doğru yoldan ibaret değildir. Yeni başlayan biri için basit bir Git deposu yeterli olabilir. Daha düzenli çalışan biri GNU Stow ile sembolik bağlantıları otomatikleştirebilir. Birden fazla makine, farklı işletim sistemleri ve gizli değerler devreye girdiğinde ise chezmoi gibi daha gelişmiş araçlar anlamlı hale gelir.

Seviye
Yaklaşım
Kimler için uygun?
Basit
Dotfiles klasörü + Git repo
Yeni başlayanlar, birkaç ayar dosyasını yedeklemek isteyenler.
Orta
Symlink mantığı + GNU Stow
Düzenli Linux/macOS kullanıcıları, terminal ortamını standartlaştırmak isteyenler.
İleri
chezmoi + template + secret yönetimi
Birden fazla makine kullanan geliştiriciler, ekipmanlar arası kontrollü senkronizasyon isteyenler.

Hangi Dosyalar Dotfiles İçine Alınabilir?

Dotfiles deposuna alınabilecek dosyalar, kullandığın araçlara göre değişir. Ama amaç her şeyi körlemesine yedeklemek değil; çalışma ortamını yeniden kurmak için gerçekten gerekli olan ayarları toplamaktır.

.bashrc / .zshrc

Shell açıldığında çalışan ayarlar, alias’lar, function’lar, PATH düzenlemeleri ve terminal davranışları burada tutulabilir.

.gitconfig

Git kullanıcı adı, e-posta, varsayılan branch adı, alias’lar, merge/diff tercihleri ve global Git ayarları burada durabilir.

.vimrc / Neovim ayarları

Editör davranışı, tema, eklenti ayarları, kısayollar ve kişisel yazma alışkanlıkları dotfiles ile taşınabilir.

.ssh/config

Sunucu bağlantı kısayolları, host takma adları, port bilgileri ve kullanıcı tercihleri düzenli şekilde saklanabilir. Ancak private key dosyaları repoya konmamalıdır.

Terminal tema ayarları

Prompt düzeni, renk teması, starship veya benzeri terminal prompt konfigürasyonları dotfiles içinde yönetilebilir.

scripts/ klasörü

Sık kullanılan bakım, backup, güncelleme, log kontrolü veya proje başlatma scriptleri merkezi şekilde taşınabilir.

Alias ve Function Mantığı: Terminalde Kendi Kısa Yollarını Oluşturmak

Dotfiles’ın en hızlı geri dönüş sağlayan kısmı alias ve function’lardır. Her gün tekrar ettiğin uzun komutları kısa, hatırlanabilir ve güvenli komutlara dönüştürebilirsin. Bu sadece hız kazandırmaz; hata yapma ihtimalini de azaltır.

Örnek alias yapısı
alias ll='ls -lah'
alias gs='git status'
alias gp='git pull'
alias dc='docker compose'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias update='sudo apt update && sudo apt upgrade -y'

Alias kısa komutlar için güzeldir. Daha karmaşık işlerde function kullanmak daha doğru olur. Örneğin belirli bir klasöre gidip logları izlemek, Docker servislerini kontrol etmek veya proje ortamını başlatmak için function yazabilirsin.

Örnek function yapısı
mkcd() {
  mkdir -p "$1" && cd "$1"
}

extract() {
  if [ -f "$1" ]; then
    case "$1" in
      *.tar.gz) tar xzf "$1" ;;
      *.zip) unzip "$1" ;;
      *.gz) gunzip "$1" ;;
      *) echo "Bu dosya tipi desteklenmiyor: $1" ;;
    esac
  else
    echo "Dosya bulunamadı: $1"
  fi
}
Pratik bakış: Dotfiles deposu, terminal alışkanlıklarını “kafamda duruyor” seviyesinden çıkarıp yazılı, taşınabilir ve geliştirilebilir hale getirir.

GitHub veya GitLab Üzerinde Private Dotfiles Repo Oluşturmak

Dotfiles deposu public de olabilir private da. Yeni başlayanlar için private repo daha güvenli bir tercihtir. Çünkü ilk aşamada fark etmeden kişisel host adları, e-posta adresleri, IP bilgileri veya hassas dosya yolları ekleme ihtimali vardır.

Basit bir başlangıç yapısı şöyle olabilir:

Örnek dotfiles klasör yapısı
dotfiles/
├── bash/
│   └── .bashrc
├── zsh/
│   └── .zshrc
├── git/
│   └── .gitconfig
├── ssh/
│   └── .ssh/
│       └── config
├── nvim/
│   └── .config/
│       └── nvim/
├── scripts/
│   └── update-system.sh
└── bootstrap.sh

Bu yapıda her araç kendi klasöründe tutulur. Böylece Git ayarlarını, shell ayarlarını, SSH config dosyasını ve editör ayarlarını birbirine karıştırmadan yönetebilirsin.

Symlink Mantığı: Dosyayı Kopyalamak Yerine Bağlamak

Dotfiles yönetiminde en önemli kavramlardan biri symlink, yani sembolik bağlantıdır. Normalde .bashrc dosyası ev dizininde durur. Ama dotfiles deposunda takip etmek istiyorsan bu dosyayı depoda tutup ev dizinine sembolik bağlantı verebilirsin.

Basit symlink örneği
ln -s ~/dotfiles/bash/.bashrc ~/.bashrc

Bu komuttan sonra gerçek dosya dotfiles deposunda durur; sistem ise onu ev dizinindeymiş gibi görür. Dosyayı düzenlediğinde Git deposundaki sürüm de güncellenir. Böylece ayar dosyalarını hem sistemin beklediği yerde kullanır hem de Git ile takip edersin.

Ancak symlink’leri elle yönetmek zamanla yorucu olabilir. Her dosya için ayrı bağlantı kurmak, eski bağlantıları temizlemek ve klasör yapısını korumak dikkat ister. İşte burada GNU Stow devreye girer.

GNU Stow ile Dotfiles Yönetimi

GNU Stow, sembolik bağlantı yönetimini kolaylaştıran sade ve güçlü bir araçtır. Dotfiles dünyasında popüler olmasının sebebi, klasörleri paket gibi ele alıp hedef dizine otomatik symlink oluşturabilmesidir.

Örneğin dotfiles klasöründe git/.gitconfig dosyan varsa, Stow bunu ev dizinine ~/.gitconfig olarak bağlayabilir. Aynı mantıkla bash, zsh, nvim, ssh ve scripts klasörleri de yönetilebilir.

GNU Stow ile örnek kullanım
cd ~/dotfiles

stow bash
stow git
stow ssh
stow nvim

Bu yaklaşımın güzelliği düzenli klasör yapısında saklıdır. Her araç kendi klasöründe durur. Sen sadece hangi aracı aktif edeceğini seçersin. Yeni makinede aynı dotfiles deposunu klonlayıp birkaç stow komutuyla çalışma ortamını ayağa kaldırabilirsin.

GNU Stow kimin için iyi? Tek veya birkaç Linux/macOS makinede çalışan, dosya yapısını temiz tutmak isteyen ve dotfiles yönetimini basit ama profesyonel yapmak isteyenler için çok uygundur.

chezmoi ile Çok Makineli Dotfiles Yönetimi

Chezmoi, dotfiles yönetimini daha ileri seviyeye taşıyan bir araçtır. Tek bir makinede değil, farklı makinelerde farklı ayarlarla çalışmak istediğinde daha güçlü hale gelir. Örneğin ev bilgisayarında farklı Git e-postası, iş makinesinde farklı SSH hostları, VPS’te daha sade shell ayarları kullanmak isteyebilirsin.

Chezmoi’nin güçlü tarafı template, koşullu yapılandırma ve secret yönetimi gibi gelişmiş senaryoları desteklemesidir. Böylece her makineye birebir aynı dosyayı körlemesine kopyalamak yerine, makineye göre değişen ayarlar üretebilirsin.

chezmoi ile temel akış
chezmoi init
chezmoi add ~/.bashrc
chezmoi add ~/.gitconfig
chezmoi cd
git status
git add .
git commit -m "Initial dotfiles"
git push

Yeni bir makinede ise dotfiles deposunu çekip uygulayabilirsin. Bu yaklaşım özellikle laptop, masaüstü, VPS ve test sunucuları arasında tutarlı ama esnek bir ortam isteyen kullanıcılar için güçlüdür.

Yeni makinede chezmoi mantığı
chezmoi init git@github.com:kullanici/dotfiles.git
chezmoi diff
chezmoi apply

Buradaki önemli nokta, diff adımıdır. Değişiklikleri uygulamadan önce neyin nereye yazılacağını görmek güvenlik ve kontrol açısından çok değerlidir.

Bootstrap Script: Yeni Makineyi Tek Komutla Hazırlamak

Dotfiles deposunun en pratik parçalarından biri bootstrap.sh dosyasıdır. Bu dosya yeni makinede temel paketleri kurabilir, klasörleri oluşturabilir, dotfiles bağlantılarını hazırlayabilir ve kişisel çalışma ortamını otomatik hale getirebilir.

Bootstrap script yazarken dikkatli olmak gerekir. Bu dosya sistemi değiştireceği için her komut okunabilir, güvenli ve mümkünse tekrar çalıştırılabilir olmalıdır. Yani script ikinci kez çalıştırıldığında sistemi bozmamalıdır.

Basit bootstrap örneği
#!/usr/bin/env bash

set -e

echo "Paket listesi güncelleniyor..."
sudo apt update

echo "Temel paketler kuruluyor..."
sudo apt install -y git curl wget htop unzip stow

echo "Dotfiles bağlantıları kuruluyor..."
cd "$HOME/dotfiles"

stow bash
stow git
stow ssh

echo "Scripts klasörü PATH için hazırlanıyor..."
mkdir -p "$HOME/bin"

echo "Kurulum tamamlandı."

Bu örnek sadece başlangıçtır. İleride Docker, terminal prompt aracı, Neovim, güvenlik araçları veya kişisel scriptlerin de bu akışa eklenebilir. Ama ilk kural şudur: Bootstrap script önce küçük başlamalı, sonra ihtiyaç oldukça büyümelidir.

Yeni VPS’i 10 Dakikada Kişisel Çalışma Ortamına Çevirmek

Dotfiles’ın gerçek değeri yeni bir VPS kurduğunda ortaya çıkar. Normalde temel paketleri kurmak, Git ayarlarını yapmak, SSH config düzenlemek, alias’ları yazmak, terminali alıştığın hale getirmek ve script klasörlerini taşımak zaman alır. Dotfiles ile bu süreci standart bir akışa indirebilirsin.

1

Depoyu klonla

Yeni makinede private dotfiles deponu güvenli şekilde çek.

2

Bootstrap çalıştır

Temel paketleri, klasörleri ve symlink bağlantılarını otomatik hazırla.

3

Kontrol et

Git, SSH, alias, shell ve editör ayarlarının doğru çalıştığını test et.

Örnek yeni makine akışı
sudo apt update
sudo apt install -y git

git clone git@github.com:kullanici/dotfiles.git ~/dotfiles

cd ~/dotfiles
chmod +x bootstrap.sh
./bootstrap.sh

Bu akışın sonunda yeni makine artık “boş bir sunucu” gibi hissettirmez. Kendi komutların, kendi Git davranışın, kendi terminal kısayolların ve kendi çalışma düzenin gelir. Küçük görünen bu fark, teknik işlerde ciddi hız kazandırır.

Güvenlik: Dotfiles Deposuna Asla Konmaması Gerekenler

Dotfiles konusu ne kadar kullanışlıysa, güvenlik tarafı da o kadar önemlidir. Çünkü ayar dosyaları bazen farkında olmadan hassas bilgiler içerebilir. Özellikle public repo kullanıyorsan bu konuya ekstra dikkat etmek gerekir.

Kesin kural: API key, access token, SSH private key, veritabanı şifresi, .env dosyası, kişisel IP/host bilgileri, müşteri bilgileri ve gizli proje ayarları dotfiles reposuna konmamalıdır.

.ssh/config dosyası dotfiles içinde tutulabilir; fakat id_rsa, id_ed25519 gibi private key dosyaları kesinlikle repoya eklenmemelidir. Aynı şekilde .env dosyaları da dotfiles içinde takip edilmemelidir.

Örnek .gitignore
.env
*.pem
*.key
id_rsa
id_ed25519
secrets.*
private.*
tokens.*
credentials.*

Daha profesyonel kullanımda gizli değerler için parola yöneticisi, sistem secret yöneticisi veya chezmoi’nin secret entegrasyonları değerlendirilebilir. Ama başlangıç seviyesinde bile şu alışkanlık şarttır: Repoya eklemeden önce mutlaka git status ve git diff kontrolü yapılmalıdır.

Public mi Private mı?

Public dotfiles deposu kullanmanın bir kültürü vardır. İnsanlar birbirlerinin terminal ayarlarından, Vim/Neovim yapılandırmalarından, Git alias’larından ve scriptlerinden öğrenebilir. Bu yönüyle dotfiles paylaşımı geliştirici kültüründe ciddi bir bilgi alışverişi alanıdır.

Ancak güvenlik açısından private repo daha risksizdir. Özellikle yeni başlıyorsan private repo ile başlamak daha sağlıklı olur. Zamanla dosyalarını temizleyip hassas bilgi içermediğinden emin olduğunda public paylaşımı ayrıca değerlendirebilirsin.

Benim önerim: İlk dotfiles depon private olsun. Sistem olgunlaştıktan, dosya yapısı temizlendikten ve güvenlik kontrolleri yerleştikten sonra public sürüm düşünülür.

Dotfiles Deposunu Nasıl Düzenli Tutarsın?

Dotfiles deposu zamanla büyür. İlk başta sadece .bashrc ile başlarsın. Sonra Git alias’ları gelir, ardından SSH config, sonra Neovim, sonra Docker scriptleri, sonra bootstrap dosyası. Bu yüzden baştan küçük ama düzenli bir klasör yapısı kurmak önemlidir.

İyi bir dotfiles deposunda şu prensipler işe yarar:

Modüler klasör yapısı

Bash, Git, SSH, editör ve script dosyaları ayrı klasörlerde tutulursa yönetim kolaylaşır.

README dosyası

Yeni makinede ne yapılacağını anlatan kısa bir kurulum notu uzun vadede çok zaman kazandırır.

İdempotent scriptler

Scriptler tekrar çalıştırıldığında sistemi bozmamalı; var olan klasörü tekrar oluşturmaya çalışırken hata üretmemelidir.

Güvenlik kontrolü

Her commit öncesi gizli bilgi, token, private key veya kişisel veri eklenmediği kontrol edilmelidir.

Başlangıç İçin En Mantıklı Yol

Dotfiles’a başlamak için mükemmel sistemi beklemeye gerek yok. İlk gün chezmoi, template, secret yönetimi ve gelişmiş bootstrap akışı kurmaya çalışmak gereksiz karmaşa yaratabilir. En mantıklı başlangıç, küçük bir Git deposu oluşturup en sık kullandığın birkaç dosyayı oraya almaktır.

Örneğin ilk aşamada sadece şunlarla başlayabilirsin:

Başlangıç listesi
~/.bashrc
~/.gitconfig
~/.ssh/config
~/bin/
~/scripts/

Sonra ihtiyaç oldukça GNU Stow eklersin. Birden fazla makine kullanmaya başladığında veya farklı makinelerde farklı ayarlar gerektiğinde chezmoi’ye geçebilirsin. Böylece dotfiles sistemi seni yormaz; seninle birlikte büyür.

Dotfiles Kültürü: Küçük Dosyalar, Büyük Alışkanlık

Dotfiles, dışarıdan bakınca birkaç konfigürasyon dosyasından ibaret gibi görünebilir. Ama geliştirici alışkanlığı olarak bakınca çok daha büyük bir anlam taşır. Kendi çalışma ortamını tanımanı, standartlaştırmanı, yedeklemeni ve tekrar üretilebilir hale getirmeni sağlar.

Bu kültürün GitHub dünyasında bu kadar yaygın olmasının sebebi de budur. İnsanlar dotfiles depolarıyla sadece ayarlarını yedeklemez; nasıl çalıştıklarını, hangi araçları tercih ettiklerini ve terminalde nasıl düşündüklerini de paylaşırlar.

Dotfiles, geliştiricinin kişisel atölyesidir. Çekiç nerede, tornavida nerede, ışık nasıl yanıyor; hepsi orada tariflidir.

Sonuç: Yeni Makine Kurmak Değil, Kendi Ortamını Geri Çağırmak

Dotfiles’ın en güzel tarafı, teknik olarak basit ama etkisi büyük bir alışkanlık olmasıdır. Bir klasör, birkaç ayar dosyası, biraz Git disiplini ve istersen GNU Stow ya da chezmoi gibi araçlarla yeni bir makineyi çok daha hızlı kişisel çalışma ortamına çevirebilirsin.

Bu yaklaşım özellikle Linux, VPS, Docker, n8n, WireGuard, portal kurulumları ve benzeri teknik işlerde çok değerlidir. Çünkü bu işlerde zaman kazandıran şey sadece komutları bilmek değildir. Asıl hız, kendi alıştığın ortamı her yerde aynı güvenle kurabilmektir.

Başlangıç için büyük düşünmeye gerek yok. Önce .bashrc, .gitconfig ve birkaç alias ile başla. Sonra symlink mantığını ekle. Daha düzenli hale gelince GNU Stow kullan. Birden fazla makineye geçtiğinde chezmoi’yi değerlendir.

Dotfiles’ın asıl mesajı basit: Yeni makineye geçtiğinde sıfırdan başlamana gerek yok. Kendi çalışma ortamını yanında taşıyabilirsin.