Ubuntu Server Docker NetBox Kurulumu için hazırladığım bu rehberde, işletim sistemi ve uygulama verilerini birbirinden bağımsız iki ayrı diske ayırarak adım adım kurulum sürecini anlatıyorum. XFS formatlı veri diski, Docker veri dizini yapılandırması ve systemd ile otomatik başlatma konularını kapsıyor.
Altyapı ve Hedef
Ağ altyapısını belgelemek ve yönetmek amacıyla bu yazıda NetBox’ı Docker üzerinde kurmaya karar verdim. Kurulumu daha sağlıklı ve sürdürülebilir hale getirmek için öncelikle işletim sistemi ve uygulama verilerini iki ayrı diske ayırdım. Böylece olası bir OS sorunu yaşandığında uygulama verileri güvende kalıyor; bunun yanı sıra disk genişletme ve yedekleme işlemleri de çok daha kolaylaşıyor.
| Bileşen | Detay |
|---|---|
| İşletim Sistemi | Ubuntu Server 25.10 |
| 1. Disk (OS) | 40 GB — Ubuntu kurulumu |
| 2. Disk (Veri) | 100 GB — Docker ve NetBox verileri (XFS) |
| Sunucu IP | 10.x.x.x |
| NetBox Erişim Portu | 8080 |
| NetBox Sürümü | v4.5 |
Ubuntu Server Kurulumu ve Disk Yapılandırması
Ubuntu Server kurulumunda Storage configuration ekranında dikkat edilmesi gereken nokta, tüm diskin kullanılmasını sağlamaktır. FILE SYSTEM SUMMARY bölümünde free space görüyorsanız bu alanı LVM volume group’a eklemeniz gerekiyor.
Free space’i LVM’e ekle
AVAILABLE DEVICES altındaki free space satırına gir → Add as LVM Physical Volume seç.
ubuntu-lv boyutunu maksimuma çek
USED DEVICES altında ubuntu-lv satırına gir → Edit → Size alanını max yap. FILE SYSTEM SUMMARY’de / mount noktasının tüm diski göstermesi gerekiyor.
Sudo yetkisi
Kurulum sonrası yönetici kullanıcıya şifresiz sudo yetkisi vermek için /etc/sudoers dosyasına aşağıdaki satırı ekleyin.
# Kullanıcıya şifresiz sudo yetkisi ver echo "ServiceUser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # Disk durumunu doğrula df -h lsblk
2. Diski XFS Olarak Hazırlama ve Mount Etme
Sanal makineye 100 GB’lık ikinci diski ekledikten sonra sıradaki adımda bu diski XFS formatında hazırlıyoruz. Özellikle büyük dosya sistemleri ve yüksek I/O yükü için iyi bir seçim olan XFS; aynı zamanda Docker volume’ları ve PostgreSQL veritabanı için de uygun performans sağlıyor.
Partition Oluşturma
# Diskleri listele — sdb görünmeli lsblk # GPT partition tablosu oluştur parted /dev/sdb --script mklabel gpt parted /dev/sdb --script mkpart primary xfs 0% 100% partprobe /dev/sdb # Doğrula — sdb1 görünmeli lsblk /dev/sdb
XFS Format ve Mount
# XFS formatla mkfs.xfs -f -L netbox-data /dev/sdb1 # Mount noktası oluştur ve bağla mkdir -p /mnt/netbox-data mount -t xfs /dev/sdb1 /mnt/netbox-data # Doğrula df -h | grep netbox-data # /dev/sdb1 100G 2.0G 98G 2% /mnt/netbox-data
Kalıcı Mount (fstab)
Reboot sonrasında disk otomatik mount edilsin diye UUID’yi alıp /etc/fstab‘a ekliyoruz.
nofail parametresi, disk takılı olmasa bile sistemin açılmasını sağlıyor.
# UUID al blkid -s UUID -o value /dev/sdb1 # 7447494b-xxxx-xxxx-xxxx-edc9efb33db5 # fstab'a ekle (UUID'yi kendinize göre değiştirin) nano /etc/fstab # UUID=7447494b-xxxx-xxxx /mnt/netbox-data xfs defaults,nofail 0 0 # Test et umount /mnt/netbox-data mount -a df -h | grep netbox-data # /dev/sdb1 100G 2.0G 98G 2% /mnt/netbox-data systemctl daemon-reload
Docker Kurulumu ve Veri Dizinini 2. Diske Taşıma
İlk olarak Docker’ı resmi script ile kuruyoruz. Ardından tüm Docker verilerinin (image, container, volume) 2. disk üzerinde tutulması için daemon.json ile veri dizinini yönlendiriyoruz. Bu sayede OS diski gereksiz yere dolmuyor ve veriler güvende kalıyor.
# Docker'ı resmi script ile kur curl -fsSL https://get.docker.com | sh # Versiyon doğrula docker --version # Docker version 29.4.1, build 055a478
Varsayılan olarak Docker tüm verilerini /var/lib/docker altına, yani OS diskine yazar. Bunu değiştirmezsek 2. diski eklememiş olmaktan farkı kalmaz. daemon.json ile bunu 2. diske yönlendiriyoruz.
# Docker veri dizinini 2. diske yönlendir mkdir -p /mnt/netbox-data/docker cat > /etc/docker/daemon.json <<'EOF' { "data-root": "/mnt/netbox-data/docker" } EOF # Docker'ı yeniden başlat ve doğrula systemctl restart docker docker info | grep "Docker Root Dir" # Docker Root Dir: /mnt/netbox-data/docker
NetBox Kurulumu
Kurulum Dizini ve Repo
Bir sonraki adımda NetBox Docker dosyalarını 2. disk üzerindeki dizine klonluyoruz. Böylece tüm uygulama dosyaları ve veritabanı OS diskinden bağımsız kalıyor; dolayısıyla olası bir sistem arızasında veriler etkilenmiyor.
# Kurulum dizini oluştur ve repo'yu klonla
mkdir -p /mnt/netbox-data/netbox
cd /mnt/netbox-data/netbox
git clone -b release https://github.com/netbox-community/netbox-docker.git .Port Yapılandırması
NetBox’ın varsayılan docker-compose.yml dosyası portu dışarıya açmaz. Bu nedenle bunu bir override dosyasıyla çözüyoruz. Özellikle bu yöntem, orijinal compose dosyasını değiştirmeden özelleştirme yapmamızı sağlıyor; böylece güncellemelerde herhangi bir çakışma da olmuyor.
cat > docker-compose.override.yml <<'EOF'
services:
netbox:
ports:
- "8080:8080"
EOFÇalıştırma
# Container'ları ayağa kaldır docker compose up -d # Durum izle — healthy yazısını bekle (~2-3 dk) watch docker compose ps # Port dinleniyor mu kontrol et ss -tlnp | grep 8080 # LISTEN 0 4096 0.0.0.0:8080 0.0.0.0:*
docker compose ps çıktısında PORTS sütunu boşsa override dosyası oluşturulmamış demektir. docker-compose.override.yml dosyasını oluşturup docker compose down && docker compose up -d komutunu tekrar çalıştırın.
Admin Kullanıcısı Oluşturma
# Admin kullanıcısı oluştur docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser # Superuser created successfully. # Erişim # http://SUNUCU_IP:8080
Reboot Sonrası Otomatik Başlatma
Son olarak sunucu yeniden başladığında NetBox’ın otomatik olarak ayağa kalkması için bir systemd servisi oluşturuyoruz.
cat > /etc/systemd/system/netbox.service <<'EOF' [Unit] Description=Netbox Docker After=docker.service Requires=docker.service [Service] WorkingDirectory=/mnt/netbox-data/netbox ExecStart=/usr/bin/docker compose up ExecStop=/usr/bin/docker compose down Restart=always [Install] WantedBy=multi-user.target EOF # Servisi etkinleştir systemctl daemon-reload systemctl enable netbox # Created symlink ... → /etc/systemd/system/netbox.service
After=docker.service ve Requires=docker.service direktifleri sayesinde NetBox, Docker servisi hazır olmadan başlamaya çalışmaz. Reboot sırasındaki sıralama sorunu bu şekilde önleniyor.
Güncelleme
cd /mnt/netbox-data/netbox docker compose pull docker compose up -d docker image prune -f
Sonuç
OS ve veri disklerini ayırmak kritik — olası bir OS arızasında uygulama verileriniz güvende kalıyor ve yeniden kurulum çok daha hızlı oluyor.
Docker veri dizinini yapılandırmayı unutmayın — varsayılan olarak tüm Docker verileri OS diskine yazılır, daemon.json ile bunu değiştirmek şart.
Port override dosyası zorunlu — netbox-docker repo’su varsayılan olarak portu dışarıya açmaz, docker-compose.override.yml olmadan arayüze erişilemez.
Özet
Bu yazıda, Ubuntu Server Docker NetBox Kurulumu sürecini adım adım ele aldık. İşletim sistemi ve uygulama verilerini birbirinden bağımsız iki ayrı diske ayırdık; OS için 40 GB, uygulama verileri için XFS formatlı 100 GB’lık bir disk yapılandırdık. Ardından Docker’ın veri dizinini daemon.json ile 2. diske yönlendirdik ve netbox-docker reposunu bu disk üzerine kurduk. Buna ek olarak port yapılandırması için docker-compose.override.yml dosyasının zorunlu olduğunu, varsayılan kurulumda portun dışarıya açılmadığını da gördük. Son olarak systemd servisi ile reboot sonrası otomatik başlatmayı sağladık.
Umarım bu rehber, Ubuntu üzerinde Docker ile NetBox kurmak isteyenlere yol gösterici olmuştur. Bunun yanı sıra karşılaştığınız sorunlarda bu yazıyı referans olarak kullanabilirsiniz. Sorularınız veya eklemek istedikleriniz varsa iletişim bölümünde buluşalım. Bir sonraki makalede tekrar görüşmek dileğiyle!


