Odoo 19 w Dockerze: Kompletna instrukcja instalacji dla Ubuntu 24.04 (Community & Enterprise)
Wprowadzenie
Wdrażanie systemu ERP często wydaje się zniechęcającym zadaniem, ale konteneryzacja zmienia ten proces w usprawniony przepływ pracy. W tym przewodniku pokażemy, jak skonfigurować Odoo 19 na świeżej instancji Ubuntu 24.04.
Główną zaletą tej metody jest jej wszechstronność. Definiujemy architekturę, która pozwala zacząć od darmowej wersji Community, zachowując jednocześnie możliwość natychmiastowej aktualizacji do wersji Enterprise poprzez proste skopiowanie modułów. Brak hacków konfiguracyjnych "w locie" - tylko czyste zarządzanie kontenerami i automatyczny SSL za pośrednictwem Caddy.
Stos techniczny (zweryfikowany):
- System operacyjny: Ubuntu 24.04 LTS (ponieważ jest to instalacja Docker, metoda ta dotyczy również innych dystrybucji Linuksa).
- Konteneryzacja: Docker 29.1.5 + Docker Compose
- Serwer WWW: Caddy (automatyczny HTTPS)
- Baza danych: PostgreSQL 18
- Specyfikacje maszyny wirtualnej: 2 vCPU, 4 GB RAM, 40 GB NVMe
Krok 0: Instalacja Dockera
Zainstaluj Dockera z oficjalnego repozytorium:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Dodaj swojego użytkownika do grupy docker:
sudo usermod -aG docker $USER newgrp docker
Włącz i uruchom Dockera:
sudo systemctl enable docker sudo systemctl start docker
Zweryfikuj instalację:
docker ps
Krok 1: Konfiguracja struktury projektu
Utwórz katalog roboczy i niezbędne foldery:
mkdir odoo-stack && cd odoo-stack mkdir -p addons enterprise
Krok 2: Utwórz plik docker-compose.yml
Utwórz nowy plik Docker Compose:
nano docker-compose.yml
Wklej poniższą konfigurację (zastąp odoo_secure_password w sekcjach db environment i odoo environment swoim rzeczywistym hasłem):
YAML
services: db: image: postgres:18 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo_secure_password - POSTGRES_USER=odoo - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata restart: unless-stopped odoo: image: odoo:19.0 depends_on: - db volumes: - odoo-web-data:/var/lib/odoo - ./addons:/mnt/extra-addons - ./enterprise:/mnt/enterprise-addons środowisko: - HOST=db - USER=odoo - PASSWORD=odoo_secure_password polecenie: > --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/mnt/enterprise-addons,/mnt/extra-addons --proxy-mode restart: unless-stopped caddy: image: caddy:latest ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy-data:/data restart: unless-stopped wolumeny: odoo-web-data: odoo-db-data: caddy-data:
Krok 3: Utwórz plik Caddy
Utwórz plik konfiguracyjny Caddy:
nano Caddyfile
Wklej poniższą konfigurację (zastąp :80 swoją domeną dla automatycznego SSL):
# Replace :80 with YOUR_DOMAIN for automatic SSL :80 { # Increase client max body size for file uploads request_body { max_size 300MB } # Longpolling for chats and notifications reverse_proxy /longpolling/* odoo:8072 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {scheme} } # Główny ruch reverse_proxy odoo:8069 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {scheme} } }
Krok 4: Uruchomienie stosu
Uruchom stos:
docker compose up -d
Sprawdź status (wszystkie 3 kontenery powinny być "Up"):
docker compose ps
Sprawdź logi, aby upewnić się, że nie ma żadnych błędów:
docker compose logs odoo
Krok 5: Wstępna konfiguracja
Otwórz przeglądarkę i przejdź do:
- Via IP: http://YOUR_SERVER_IP
- Przez domenę: https://YOUR_DOMAIN (jeśli skonfigurowano w pliku Caddyfile)
Wypełnij formularz tworzenia bazy danych:
- Hasło główne: Hasło główne zostanie zasugerowane przy pierwszym logowaniu (zapisz to hasło, jest krytyczne).
- Nazwa bazy danych: np. mycompany.
- Email: Twój dostępny adres e-mail (będzie to Twój login).
- Password: hasło logowania do systemu.
- Język: Wybierz preferowany język.
- Kraj: Wybierz swój kraj.
- Dane demonstracyjne: Pozostaw niezaznaczone dla czystej produkcyjnej bazy danych.
Kliknij Utwórz bazę danych i poczekaj na zakończenie procesu (1-2 minuty).

Aktualizacja z wersji Community do Enterprise
Aby przejść z wersji Community do Enterprise, wystarczy umieścić moduły w wyznaczonym katalogu.
Krok 1. Uzyskaj moduły Enterprise (poprzez subskrypcję Odoo).
Krok 2. Rozpakuj je do folderu ./enterprise/.
Krok 3. Uruchom ponownie kontener:
docker compose restart odoo
Krok 4. Zainstaluj wymagane moduły Enterprise za pośrednictwem interfejsu użytkownika.
Nie są potrzebne żadne zmiany w plikach konfiguracyjnych - ścieżka do modułów Enterprise jest już wstępnie skonfigurowana.
Konfiguracja zapory sieciowej
Jeśli używasz UFW, uruchom następujące polecenie:
sudo ufw allow ssh/tcp && \ sudo ufw allow 80/tcp && \ sudo ufw allow 443/tcp && \ sudo ufw default deny incoming && \ sudo ufw default allow outgoing && \ sudo ufw --force enable
Przydatne polecenia
Zatrzymaj wszystko:
docker compose down
Uruchom ponownie tylko Odoo:
docker compose restart odoo
Wyświetlanie dzienników:
docker compose logs -f odoo docker compose logs -f db docker compose logs -f caddy
Kopia zapasowa bazy danych:
docker compose exec db pg_dumpall -U odoo > backup_$(date +%Y%m%d).sql
Przywracanie bazy danych:
cat backup_20240125.sql | docker compose exec -T db psql -U odoo
Całkowite czyszczenie (uwaga!):
docker compose down -v rm -rf addons enterprise Caddyfile
Używanie nazwy domeny
Aby uzyskać automatyczny certyfikat SSL od Let's Encrypt:
Krok 1. Skonfiguruj DNS: Skieruj rekord A z YOUR_DOMAIN na adres IP serwera.
Krok 2. Zaktualizuj plik Caddyfile: Zamień :80 na YOUR_DOMAIN.
Krok 3. Uruchom ponownie Caddy:
docker compose restart caddy
Caddy automatycznie dostarczy certyfikat SSL.
Krok 4. Uzyskaj dostęp do Odoo przez https://YOUR_DOMAIN.
Zweryfikuj wydanie certyfikatu:
docker compose logs caddy | grep certificate