· DevOps · 4 min read
OpenClaw: Mac Mini Üzerinde Geliştirme ve Railway ile Deploy
OpenClaw projesini Mac Mini üzerinde nasıl çalıştırdığımı ve Railway platformuna deploy ettiğimi adım adım anlatıyorum.

OpenClaw Nedir?
OpenClaw, açık kaynaklı bir yapay zeka aracıdır ve özellikle hukuki dokümanları analiz etmek, sınıflandırmak ve işlemek için tasarlanmıştır. Doğal dil işleme (NLP) ve makine öğrenimi tekniklerini kullanarak büyük hacimli hukuki metinleri hızlı ve doğru bir şekilde analiz edebilir. Proje, hukuk profesyonellerinin ve araştırmacıların işlerini kolaylaştırmayı hedeflemektedir.
Neden Mac Mini?
Mac Mini, kompakt yapısı ve güçlü performansıyla lokal geliştirme ve test ortamı olarak mükemmel bir seçenek. OpenClaw gibi kaynak yoğun projeleri çalıştırırken şu avantajları sunuyor:
- Apple Silicon performansı: M serisi çipler, ML workload’ları için oldukça verimli.
- Düşük enerji tüketimi: 7/24 çalışan bir geliştirme sunucusu olarak idealdir.
- Sessiz çalışma: Ev ofis ortamında rahatsız etmeden çalışır.
- macOS ekosistemi: Docker Desktop ve Homebrew ile geliştirme araçlarına kolay erişim.
Mac Mini Üzerinde OpenClaw Kurulumu
Ön Gereksinimler
Mac Mini üzerinde OpenClaw’ı çalıştırmak için aşağıdaki araçların kurulu olması gerekiyor:
# Homebrew kurulumu (eğer yoksa)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Docker Desktop kurulumu
brew install --cask docker
# Git ve Node.js
brew install git node
# Python (eğer gerekiyorsa)
brew install python@3.11
Projeyi Klonlama ve Çalıştırma
# Repository'yi klonla
git clone https://github.com/freelawproject/openclaw.git
cd openclaw
# Bağımlılıkları yükle
pip install -r requirements.txt
# Ortam değişkenlerini ayarla
cp .env.example .env
# .env dosyasını düzenle ve gerekli API anahtarlarını ekle
# Docker ile çalıştır
docker-compose up -d
Lokal Test
Mac Mini üzerinde projeyi çalıştırdıktan sonra, lokal ortamda testleri gerçekleştirdim:
# Sağlık kontrolü
curl http://localhost:8000/health
# API endpoint testi
curl -X POST http://localhost:8000/api/analyze \
-H "Content-Type: application/json" \
-d '{"text": "Sample legal document text..."}'
Mac Mini’nin M serisi çipi sayesinde analiz işlemleri oldukça hızlı tamamlandı. Özellikle NLP modellerinin inference süresi, beklediğimden çok daha kısa sürdü.
Railway ile Deploy
Railway Nedir?
Railway, modern uygulamaları hızlıca deploy etmenizi sağlayan bir bulut platformudur. GitHub entegrasyonu, otomatik deploy, ortam değişkenleri yönetimi ve kolay ölçeklendirme gibi özellikler sunar. Özellikle Docker tabanlı projeler için mükemmel bir seçenektir.
Railway Hesabı ve Proje Oluşturma
- railway.app adresinden hesap oluşturun
- Dashboard’dan New Project butonuna tıklayın
- Deploy from GitHub repo seçeneğini seçin
- OpenClaw repository’sini bağlayın
Railway Konfigürasyonu
Railway’de projeyi deploy etmek için birkaç konfigürasyon adımı gerekiyor:
Dockerfile
Projede zaten bir Dockerfile mevcuttu, ancak Railway için birkaç optimizasyon yaptım:
FROM python:3.11-slim
WORKDIR /app
# Sistem bağımlılıkları
RUN apt-get update && apt-get install -y \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Python bağımlılıkları
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Uygulama kodunu kopyala
COPY . .
# Port ayarı (Railway $PORT değişkenini kullanır)
EXPOSE ${PORT:-8000}
# Uygulamayı başlat
CMD ["sh", "-c", "uvicorn main:app --host 0.0.0.0 --port ${PORT:-8000}"]
Ortam Değişkenleri
Railway dashboard’unda Variables sekmesinden aşağıdaki ortam değişkenlerini ekledim:
DATABASE_URL=postgresql://...
OPENAI_API_KEY=sk-...
SECRET_KEY=your-secret-key
ENVIRONMENT=production
railway.json (Opsiyonel)
{
"$schema": "https://railway.app/railway.schema.json",
"build": {
"builder": "DOCKERFILE",
"dockerfilePath": "Dockerfile"
},
"deploy": {
"startCommand": "uvicorn main:app --host 0.0.0.0 --port ${PORT}",
"healthcheckPath": "/health",
"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 3
}
}
Deploy Süreci
Railway’e deploy işlemi oldukça basit:
# Railway CLI kurulumu
npm install -g @railway/cli
# Giriş yap
railway login
# Projeyi bağla
railway link
# Deploy et
railway up
Alternatif olarak, GitHub’a push yaptığınızda Railway otomatik olarak deploy işlemini başlatır. Bu, CI/CD pipeline’ı kurmaya gerek kalmadan sürekli deploy yapmanızı sağlar.
Deploy Sonrası Kontroller
# Railway'den domain al
railway domain
# Sağlık kontrolü
curl https://your-app.up.railway.app/health
# Log takibi
railway logs
Karşılaştığım Sorunlar ve Çözümler
1. Port Binding Sorunu
Sorun: Railway, uygulamanın $PORT ortam değişkenini kullanmasını bekliyor, ancak OpenClaw varsayılan olarak 8000 portunu kullanıyordu.
Çözüm: Başlatma komutunu ${PORT:-8000} şeklinde güncelledim, böylece Railway’in atadığı portu kullanırken lokal ortamda da 8000 portunda çalışmaya devam etti.
2. Memory Limitleri
Sorun: NLP modelleri yüklenirken Railway’in ücretsiz planındaki bellek limitlerine takıldım.
Çözüm: Railway’in Pro planına geçerek bellek limitini artırdım. Ayrıca modelleri lazy loading ile yükleyerek başlangıç bellek kullanımını optimize ettim.
3. Docker Build Süresi
Sorun: İlk build süresi oldukça uzundu çünkü tüm Python bağımlılıkları her seferinde yeniden yükleniyordu.
Çözüm: Dockerfile’da multi-stage build ve layer caching kullanarak build süresini önemli ölçüde kısalttım. requirements.txt dosyasını ayrı bir layer olarak kopyalamak, bağımlılıkların cache’lenmesini sağladı.
4. Mac Mini ve Railway Arasındaki Ortam Farkları
Sorun: Mac Mini’de (ARM64) çalışan bazı paketler Railway’de (AMD64) farklı davranıyordu.
Çözüm: Dockerfile’da --platform=linux/amd64 flag’ini kullanarak tutarlı bir build ortamı sağladım. Ayrıca Mac Mini’de de cross-platform test yaparak uyumluluk sorunlarını önceden tespit ettim.
Sonuç ve Öneriler
OpenClaw’ı Mac Mini üzerinde geliştirip Railway’e deploy etmek, modern bir geliştirme workflow’u için harika bir kombinasyon oldu. İşte öğrendiğim temel dersler:
- Lokal geliştirme için Mac Mini mükemmel: Düşük enerji tüketimi ve yüksek performans ile 7/24 çalışan bir geliştirme sunucusu olarak kullanılabilir.
- Railway deploy sürecini kolaylaştırıyor: GitHub entegrasyonu ve otomatik deploy ile CI/CD pipeline’ı kurmaya gerek kalmıyor.
- Docker tutarlılık sağlıyor: Aynı Dockerfile ile hem lokal hem de production ortamında tutarlı bir çalışma ortamı elde edebilirsiniz.
- Ortam değişkenlerini doğru yönetin: Railway’in Variables özelliği, hassas bilgileri güvenli bir şekilde saklamanızı sağlar.
Railway’in sunduğu kolay deploy süreci ve Mac Mini’nin güçlü lokal geliştirme ortamı, özellikle küçük ve orta ölçekli projeler için ideal bir kombinasyon. Siz de benzer bir setup kurmak isterseniz, yukarıdaki adımları takip edebilirsiniz.
Sorularınız varsa bana Upwork üzerinden veya LinkedIn üzerinden ulaşabilirsiniz! 🚀



