Instalacja Odoo 19 w Dockerze na Ubuntu 24.04: Kompletny przewodnik (Community & Enterprise) | INTROSERV

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


VAT

  • Other

    Other

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    %
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • Other
  • canada
  • poland
  • european-union
  • france
  • germany
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria