Bu kılavuz, Odoo 19’u Ubuntu 24.04 LTS üzerinde sıfırdan, üretim ortamına uygun şekilde kurmanızı anlatır. Komutların tamamı kopyalanabilir. Her adımda ne yaptığınızı ve neden yaptığınızı da yazdık, çünkü sunucuya körlemesine komut yapıştırmak ilk hatada sizi yalnız bırakır.
Test edilen ortam
Ubuntu 24.04 LTS (Noble Numbat) · Odoo 19.0 (Community) · PostgreSQL 16 · Python 3.12 · Nginx 1.24
Son güncelleme: 21 Eylül 2026
Odoo 19 ile gelen en önemli kurulum değişikliği şudur: PostgreSQL’e pgvector eklentisi zorunlu hale geldi. Eski sürümlerin kurulum rehberlerini takip ederseniz bu adımı atlarsınız ve veritabanı oluşturma aşamasında hata alırsınız. Bu kılavuzda o adım yerinde duruyor.
Önce karar: paket mi, kaynak mı?
Odoo’yu kurmanın iki yolu var. Yanlış olanı seçmek sonradan ciddi zaman kaybettirir.
| Kriter | Depo paketi (.deb) | Kaynaktan (git) |
|---|---|---|
| Kurulum süresi | 10 dakika | 30-45 dakika |
| Güncelleme | apt upgrade ile |
git pull ile, kontrol sizde |
| Özel modül geliştirme | Mümkün ama hantal | Doğal yol |
| Çekirdek koda yama | Güncellemede kaybolur | Kalıcı |
| Kimin için | Standart kullanım, hızlı test | Geliştirme, özelleştirme |
Bu kılavuzda her iki yolu da anlatıyoruz. 1, 2, 3 ve 5’ten sonraki adımlar ikisinde de ortak.
Sunucu gereksinimleri
Aşağıdaki değerler saha deneyimine dayalı başlangıç noktalarıdır. Üretim yükü modül sayısına ve rapor yoğunluğuna göre değişir.
| Eşzamanlı kullanıcı | CPU | RAM | Disk |
|---|---|---|---|
| 1-5 (test) | 2 çekirdek | 4 GB | 40 GB SSD |
| 5-20 | 4 çekirdek | 8 GB | 80 GB SSD |
| 20-50 | 8 çekirdek | 16 GB | 160 GB SSD |
Adım 1: Sunucuyu hazırlayın
Taze bir Ubuntu 24.04 sunucusuna root ya da sudo yetkili kullanıcıyla bağlanın. Önce paketleri güncelleyin ve saat dilimini ayarlayın. Saat dilimi önemlidir, çünkü Odoo’daki zamanlanmış işlemler ve fatura tarihleri sunucu saatini temel alır.
sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Europe/Istanbul
sudo apt install -y git wget curl nano ufw
4 GB ve altı RAM’e sahip sunucularda takas alanı açmak, derleme adımlarında bellek yetmemesini önler.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Güvenlik duvarını açın. Odoo’nun 8069 portunu dışarıya açmayın, erişim Nginx üzerinden olacak.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable
Adım 2: PostgreSQL 16 ve pgvector
Ubuntu 24.04 depolarında PostgreSQL 16 bulunur, ayrı bir depo eklemenize gerek yoktur.
sudo apt install -y postgresql postgresql-client
sudo systemctl enable --now postgresql
psql --version
Odoo 19’a özel adım. Odoo 19, yapay zeka özellikleri için vektör alanları kullanır ve bu da PostgreSQL tarafında pgvector eklentisini zorunlu kılar. Resmi dokümantasyon eklentiyi kaynaktan derlemeyi anlatır, ancak Ubuntu 24.04’te hazır paket vardır. Derlemeye gerek yok:
sudo apt install -y postgresql-16-pgvector
Şimdi Odoo için veritabanı kullanıcısı oluşturun. Parolayı kendiniz belirleyin ve bir kenara not edin, yapılandırma dosyasında kullanacaksınız.
sudo -u postgres createuser -d -R -S odoo
sudo -u postgres psql -c "ALTER USER odoo WITH PASSWORD 'GucluBirParolaYazin';"
Buradaki parametreler şu anlama gelir: -d kullanıcının veritabanı oluşturabilmesini sağlar (Odoo yeni veritabanı açarken gerekir), -R rol oluşturamaz, -S süper kullanıcı değildir. Son ikisi güvenlik içindir.
Adım 3: Sistem bağımlılıkları ve wkhtmltopdf
PDF raporları (fatura, teklif, irsaliye) wkhtmltopdf ile üretilir. Odoo’nun üstbilgi ve altbilgileri doğru basabilmesi için tam olarak 0.12.6 sürümü gerekir. Ubuntu deposundaki sürüm bu işi doğru yapmaz, bu yüzden paketi elle kuruyoruz.
Burada bilmeniz gereken bir ayrıntı var: wkhtmltopdf projesinin resmi paketleri arasında Ubuntu 24.04 (noble) için hazırlanmış bir sürüm yok. Ubuntu 22.04 (jammy) paketi 24.04 üzerinde sorunsuz çalışır, bağımlılıkları karşılanır.
cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
sudo apt install -y ./wkhtmltox_0.12.6.1-3.jammy_amd64.deb
wkhtmltopdf --version
Çıktıda wkhtmltopdf 0.12.6.1 (with patched qt) yazmalıdır. “with patched qt” ifadesi kritiktir, bu ibare yoksa üstbilgi ve altbilgiler raporlarda görünmez.
Adım 4a: Depo paketiyle kurulum (hızlı yol)
Standart kullanım için önerilen yol budur. Odoo’nun resmi deposunu ekleyip paketi kurarsınız.
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/19.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt update
sudo apt install -y odoo
Kurulum sonunda servis kendiliğinden başlar. Durumu kontrol edin:
sudo systemctl status odoo --no-pager
sudo ss -ltnp | grep 8069
Bu yolu seçtiyseniz Adım 4b’yi atlayıp doğrudan Adım 5’e geçin. Yapılandırma dosyanız /etc/odoo/odoo.conf konumundadır.
Adım 4b: Kaynaktan kurulum (geliştirme yolu)
Özel modül yazacak ya da çekirdek davranışını değiştirecekseniz bu yolu seçin. Önce ayrı bir sistem kullanıcısı açın. Odoo’yu root ile çalıştırmayın.
sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
sudo apt install -y python3-pip python3-dev python3-venv build-essential \
libldap2-dev libpq-dev libsasl2-dev libxml2-dev libxslt1-dev libjpeg-dev \
libffi-dev zlib1g-dev node-less npm
sudo npm install -g rtlcss
Kaynak kodu 19.0 dalından çekin. --depth 1 parametresi tüm geçmişi indirmeyi önler, indirmeyi birkaç dakikadan saniyelere düşürür.
sudo -u odoo git clone https://github.com/odoo/odoo.git \
--branch 19.0 --single-branch --depth 1 /opt/odoo/odoo19
Python bağımlılıklarını sanal ortam içine kurun. Ubuntu 24.04, sistem genelinde pip kurulumunu engeller (PEP 668), bu yüzden sanal ortam tercih değil zorunluluktur.
sudo -u odoo python3 -m venv /opt/odoo/venv
sudo -u odoo /opt/odoo/venv/bin/pip install --upgrade pip wheel setuptools
sudo -u odoo /opt/odoo/venv/bin/pip install -r /opt/odoo/odoo19/requirements.txt
Özel modülleriniz için ayrı bir klasör açın. Kendi modüllerinizi Odoo’nun kendi addons klasörüne koymayın, güncellemede karışır.
sudo -u odoo mkdir -p /opt/odoo/custom-addons
sudo mkdir -p /var/log/odoo && sudo chown odoo:odoo /var/log/odoo
Adım 5: Yapılandırma dosyası
Yapılandırma dosyasını oluşturun. Paketle kurduysanız /etc/odoo/odoo.conf dosyasını düzenleyin, kaynaktan kurduysanız aynı yolda yeni dosya açın.
sudo nano /etc/odoo/odoo.conf
Aşağıdaki içeriği yapıştırın. Kaynaktan kurduysanız addons_path satırını kendi yollarınızla değiştirin.
[options]
admin_passwd = COK_GUCLU_BIR_ANA_PAROLA
db_host = localhost
db_port = 5432
db_user = odoo
db_password = GucluBirParolaYazin
addons_path = /opt/odoo/odoo19/addons,/opt/odoo/custom-addons
data_dir = /var/lib/odoo
logfile = /var/log/odoo/odoo.log
log_level = info
; Uretim guvenligi
list_db = False
db_filter = ^odoo_uretim$
proxy_mode = True
; Performans: workers = (cekirdek x 2) + 1
workers = 5
max_cron_threads = 2
limit_memory_soft = 2147483648
limit_memory_hard = 2684354560
limit_time_cpu = 600
limit_time_real = 1200
Bu ayarların üçü sık atlanır ve sonradan sorun çıkarır:
list_db = Falseveritabanı yöneticisi ekranını kapatır. Açık bırakırsanız internetteki herkes veritabanı listenizi görebilir ve ana parolayı deneyebilir.proxy_mode = TrueNginx arkasında çalışırken gerçek ziyaretçi IP’sinin doğru okunmasını sağlar. Bu satır olmadan tüm istekler sunucunun kendi IP’sinden geliyormuş gibi görünür.workerssıfır bırakılırsa Odoo tek iş parçacığıyla çalışır ve birkaç kullanıcıda tıkanır. Formül: çekirdek sayısı çarpı iki, artı bir. 2 çekirdekli sunucuda 5, 4 çekirdekte 9.
Dosyanın izinlerini kısıtlayın, içinde parolalar var:
sudo chown odoo:odoo /etc/odoo/odoo.conf
sudo chmod 640 /etc/odoo/odoo.conf
Adım 6: systemd servisi
Paketle kurduysanız servis dosyanız hazırdır, bu adımı atlayın. Kaynaktan kurduysanız servis dosyasını siz oluşturacaksınız.
sudo nano /etc/systemd/system/odoo.service
[Unit]
Description=Odoo 19
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/opt/odoo/venv/bin/python3 /opt/odoo/odoo19/odoo-bin -c /etc/odoo/odoo.conf
StandardOutput=journal+console
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now odoo
sudo journalctl -u odoo -f
Son komut günlükleri canlı gösterir. odoo.service: Succeeded ya da HTTP servisinin başladığını bildiren satırı görene kadar bekleyin, sonra Ctrl+C ile çıkın.
Adım 7: Nginx ters vekil ve SSL
Odoo’yu doğrudan 8069 portundan yayına almayın. Nginx hem SSL sonlandırması yapar hem statik dosyaları sizin yerinize sıkıştırır.
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/odoo
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
server {
listen 80;
server_name erp.alanadiniz.com;
client_max_body_size 100M;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://odoo;
proxy_redirect off;
}
location /websocket {
proxy_pass http://odoochat;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
gzip on;
gzip_min_length 1100;
gzip_types text/css text/plain application/javascript application/json;
}
/websocket bloğu Odoo 16 ile gelen yeni canlı bağlantı yoludur. Eski rehberlerdeki /longpolling bloğunu kopyalarsanız sohbet, bildirimler ve canlı güncellemeler çalışmaz.
sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
Şimdi ücretsiz SSL sertifikası alın. Alan adınızın A kaydı sunucunun IP’sine bakıyor olmalı.
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d erp.alanadiniz.com
sudo systemctl status certbot.timer --no-pager
Son komut otomatik yenilemenin açık olduğunu doğrular. Sertifika 90 günde bir kendiliğinden yenilenir.
Adım 8: İlk veritabanı ve güvenlik kontrolü
Yapılandırmada list_db = False yazdıysanız veritabanı oluşturma ekranı kapalıdır. İlk veritabanını komut satırından oluşturun.
sudo systemctl stop odoo
sudo -u odoo /opt/odoo/venv/bin/python3 /opt/odoo/odoo19/odoo-bin \
-c /etc/odoo/odoo.conf -d odoo_uretim -i base --without-demo=all --stop-after-init
sudo systemctl start odoo
--without-demo=all parametresi örnek verileri kurmaz. Üretim veritabanında demo verisi istemezsiniz, sonradan temizlemek zahmetlidir.
Kurulum bittiğinde şu üç kontrolü yapın:
curl -I http://127.0.0.1:8069komutu sunucu içinden yanıt vermeli.- Dışarıdan
http://sunucu-ip:8069adresine erişilememeli. Erişiliyorsa güvenlik duvarı kuralınız çalışmıyor demektir. - Tarayıcıda
https://erp.alanadiniz.com/web/database/manageradresi sizi giriş sayfasına yönlendirmeli, veritabanı listesi göstermemeli.
Adım 9: Yedekleme
Odoo yedeği iki parçadan oluşur ve ikisi birden alınmadan yedek işe yaramaz: veritabanı ve filestore (yüklenen dosyalar, ekler, logolar).
sudo nano /usr/local/bin/odoo-yedek.sh
#!/bin/bash
TARIH=$(date +%Y%m%d-%H%M)
HEDEF=/var/backups/odoo
VT=odoo_uretim
mkdir -p $HEDEF
sudo -u postgres pg_dump -Fc $VT > $HEDEF/$VT-$TARIH.dump
tar czf $HEDEF/filestore-$TARIH.tar.gz -C /var/lib/odoo/filestore $VT
find $HEDEF -type f -mtime +14 -delete
sudo chmod +x /usr/local/bin/odoo-yedek.sh
echo "0 3 * * * root /usr/local/bin/odoo-yedek.sh" | sudo tee /etc/cron.d/odoo-yedek
Son satır yedekleri 14 günden eskiyse siler. Yedeği başka bir sunucuya ya da nesne depolamaya kopyalamadıysanız, sunucu kaybında yedeğiniz de gitmiş olur. Yedeğin geri dönüp dönmediğini ayda bir test edin.
Sık karşılaşılan hatalar ve çözümleri
FATAL: role “odoo” does not exist
PostgreSQL kullanıcısı oluşturulmamış ya da yapılandırmadaki db_user değeriyle eşleşmiyor. Adım 2’deki createuser komutunu çalıştırın ve odoo.conf içindeki kullanıcı adını kontrol edin.
extension “vector” is not available
Odoo 19’a özgü hatadır, pgvector kurulu değildir. sudo apt install -y postgresql-16-pgvector komutunu çalıştırıp PostgreSQL’i yeniden başlatın: sudo systemctl restart postgresql.
Raporlarda üstbilgi ve altbilgi çıkmıyor
wkhtmltopdf sürümü yanlış. wkhtmltopdf --version çıktısında “with patched qt” ibaresi yoksa Ubuntu deposundan gelen sürüm kuruludur. Adım 3’teki paketi kurun.
502 Bad Gateway
Nginx çalışıyor ama Odoo çalışmıyor demektir. sudo systemctl status odoo ve sudo tail -50 /var/log/odoo/odoo.log ile gerçek hatayı görün. En sık sebepleri: yapılandırma dosyasında yazım hatası, veritabanı parolasının yanlış olması, 8069 portunun başka bir süreç tarafından kullanılması.
Sohbet ve bildirimler çalışmıyor
Nginx yapılandırmasında /websocket bloğu eksiktir ya da eski rehberlerden /longpolling kopyalanmıştır. Adım 7’deki bloğu kullanın ve workers değerinin sıfırdan büyük olduğundan emin olun. Tek iş parçacığı modunda canlı bağlantı çalışmaz.
error: externally-managed-environment
Ubuntu 24.04’ün pip korumasıdır. Sistem geneline pip ile paket kurmaya çalışıyorsunuz. Çözüm, Adım 4b’deki gibi sanal ortam kullanmaktır. --break-system-packages parametresiyle zorlamayın, sistem araçlarını bozar.
Sunucu belleği doluyor, servis kendini yeniden başlatıyor
workers değeri sunucu kapasitesinin üzerinde. Her işçi süreci yaklaşık 2 GB’a kadar bellek kullanabilir. 8 GB RAM’li bir sunucuda 9 işçi çalıştırırsanız sistem takasa düşer. Formüle sadık kalın ve limit_memory_soft değerini sunucunuza göre ayarlayın.
Giriş sayfası açılıyor ama stiller bozuk
Statik dosyalar derlenmemiştir. Genelde node-less ya da rtlcss eksikliğinden kaynaklanır. Adım 4b’deki paketleri kurun, ardından veritabanını -u base parametresiyle bir kez güncelleyin.
Kurulum sonrası: ilk hafta kontrol listesi
- Ana parolayı (
admin_passwd) ve veritabanı parolasını parola yöneticisine kaydedin. - Yedekleme betiğinin çalıştığını ilk sabah doğrulayın, dosya boyutlarına bakın.
- Bir yedeği test sunucusunda geri yükleyip açıldığını görün.
- Günlük dosyasının döndüğünden emin olun,
logrotatekuralı ekleyin. - Sunucuya sadece anahtar ile giriş açın, parola ile SSH girişini kapatın.
- Türkiye mevzuatı için e-Fatura ve tekdüzen hesap planı katmanını planlayın. Standart Odoo kurulumu bunları içermez.
Sık sorulan sorular
Odoo 19 hangi Python sürümünü ister?
Python 3.10 ve üzeri. Ubuntu 24.04 varsayılan olarak Python 3.12 ile gelir, ek bir işlem gerekmez.
Ubuntu 22.04 kullanıyorum, bu kılavuz işime yarar mı?
Adımların tamamı 22.04’te de çalışır. İki fark vardır: PostgreSQL 14 gelir ve pgvector paketinin adı postgresql-14-pgvector olur. wkhtmltopdf tarafında jammy paketi zaten doğal olarak uyumludur.
Enterprise sürümü nasıl kurulur?
Enterprise deposu özel erişim gerektirir ve Community ile birlikte klonlanır. Ardından addons_path içinde enterprise klasörü diğer yollardan önce yazılır. Aradaki farkları Community ve Enterprise karşılaştırmamızda ayrıntılı anlattık.
Tek sunucuda birden fazla Odoo çalıştırabilir miyim?
Evet. Her örnek için ayrı sistem kullanıcısı, ayrı yapılandırma dosyası, ayrı port (8069, 8079 gibi) ve ayrı systemd servisi tanımlayın. Nginx tarafında her biri için ayrı sunucu bloğu açarsınız.
Kurulum ne kadar sürer?
Paket yöntemiyle 10 ila 15 dakika, kaynaktan 30 ila 45 dakika. Bu süre yalnızca kurulumu kapsar. Modül yapılandırması, veri aktarımı ve eğitim ayrı bir süreçtir.
Sunucuyu kendim yönetmek istemiyorum, alternatif var mı?
Odoo Online ve Odoo.sh barındırma seçenekleri vardır, ikisi de Enterprise aboneliğiyle çalışır. Maliyet karşılaştırmasını Odoo fiyatları yazımızda bulabilirsiniz.
Yardıma ihtiyacınız olursa
Bu kılavuz kurulumu tamamlamanız için yeterli. Ancak üretim ortamında Odoo’nun asıl işi kurulumdan sonra başlar: Türkiye lokalizasyonu, e-Fatura entegrasyonu, veri aktarımı ve ekip eğitimi.
Resmi Odoo partneri olarak bu süreçleri uçtan uca yürütüyoruz. Odoo kurulum hizmetimizi inceleyebilir, kurulu bir ortamı önce denemek isterseniz ücretsiz demo talep edebilirsiniz.
Komutlar Ubuntu 24.04.3 LTS üzerinde Odoo 19.0 ile test edilmiştir. Sürüm gereksinimleri Odoo’nun resmi dokümantasyonundan (19.0, on-premise kurulum) doğrulanmıştır. Odoo yeni ara sürümlerde bağımlılıkları değiştirebilir, kurulum öncesi resmi dokümantasyonu kontrol etmenizi öneririz.