序章

Odoo は、Pythonで記述されたオープンソースのエンタープライズリソースプランニング(ERP)ツールです。 経理、給与、在庫管理など、さまざまな種類のビジネスニーズに対応する多数のプラグインをサポートしています。

このチュートリアルでは、Docker Composeを使用してOdooとPostgreSQLデータベースをインストールし、次にNginxをインストールしてOdooサイトのリバースプロキシとして機能させます。 最後に、Certbotを使用して Let’s Encrypt Certificate Authority からTLS証明書をダウンロードして構成することにより、安全なHTTPS接続を有効にします。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • 2つ以上のCPUを搭載したUbuntu20.04サーバー、sudoアクセス権を持つ非rootユーザー、およびファイアウォール。 これを設定するには、 Ubuntu20.04を使用したサーバーの初期設定チュートリアルに従ってください。
  • Dockerがインストールされています。 Ubuntu 20.04にDockerをインストールして使用する方法のステップ1およびステップ2に従って、Dockerをインストールしてroot以外のユーザーを構成します実行できるようにする docker コマンド。

注: DigitalOceanのワンクリックDockerイメージを使用している場合は、これらの前提条件をスキップできます。 このイメージは、Docker、Docker Compose、およびUFWで事前構成されています。

選択したリージョンで新しいDockerイメージを起動し、 root ユーザーとしてログインして、チュートリアルを続行します。

最後に、TLSを有効にするには、サーバーのパブリックIPアドレスを指すドメイン名が必要です。 これは次のようなものでなければなりません example.com また odoo.example.com. DigitalOceanを使用している場合は、コントロールパネルでドメインリソースを作成する方法について、DNSクイックスタートを参照してください。

すべての前提条件が整ったら、ステップ1 に進み、ここでインストールします。 docker-compose パッケージ。

ステップ1—DockerComposeをインストールする

をインストールするには docker-compose コマンドラインツールを使用してパッケージリストを更新し、を使用してパッケージをインストールします apt:

  1. sudo apt update
  2. sudo apt install docker-compose

:Ubuntu20.04に含まれているものよりも新しいDockerComposeパッケージをインストールすることもできます。 これを行うには、 Ubuntu20.04にDockerComposeをインストールして使用する方法のステップ1に従います。

このバージョンのDockerComposeを使用する場合は、代わりに使用する必要があります docker compose の代わりにコマンドとして docker-compose.

次のコマンドを実行して、パッケージがインストールされていることを確認できます。

  1. docker-compose –version

次のような出力を受け取るはずです。

Output
docker-compose version 1.25.0, build unknown docker-py version: 4.1.0 CPython version: 3.8.10

Docker Composeがサーバーにインストールされていることを確認したら、このチュートリアルの次のステップで、DockerComposeを使用してOdooとPostgreSQLを構成して起動します。

ステップ2—DockerComposeでOdooとPostgreSQLを実行する

OdooおよびPostgreSQLコンテナの作成を開始するには、次のディレクトリを作成します。 odoo このチュートリアルで作成するファイルを保存するために、ホームディレクトリに保存します。 このディレクトリを使用して、Odooを実行するために必要なすべてのファイルを保存します。

次のコマンドを実行してディレクトリを作成してから、 cd それに:

  1. mkdir ~/odoo
  2. cd ~/odoo

次に、という新しい空のYAMLファイルを開きます docker-compose.yml を使用して nano またはお好みの編集者:

  1. nano docker-compose.yml

このファイルは docker-compose OdooコンテナとPostgreSQLコンテナを起動し、それらをリンクするコマンド。 次の行をファイルに追加します。

docker-compose.yml
version: '3'
services:
  odoo:
    image: odoo:15.0
    env_file: .env
    depends_on:
      - postgres
    ports:
      - "127.0.0.1:8069:8069"
    volumes:
      - data:/var/lib/odoo
  postgres:
    image: postgres:13
    env_file: .env
    volumes:
      - db:/var/lib/postgresql/data/pgdata

volumes:
  data:
  db:

ファイルは2つを定義します services. 最初は呼ばれます odoo、Odooアプリケーションを実行します。 2番目は呼ばれます postgres、PostgreSQLデータベースコンテナです。 どちらのサービスも、実行中のコンテナーインスタンスの外部にデータを格納するために使用する名前付きボリュームを参照します。 最後に、 odoo サービスはポートを公開します 8069 サーバー上で同じポートで実行されているOdooコンテナに 8069.

編集が完了したら、ファイルを保存して終了します。 使用している場合 nano、 押す CTRL+O それから RETURN 保存してから CTRL+X 出る。

OdooおよびPostgreSQLコンテナは、環境変数を使用して自身を構成します。 The docker-compose.yml ファイルは env_file 両方のサービスのディレクティブ。 そのディレクティブには、各サービスが実行する必要のある変数を含む参照ファイルが含まれます。

一般に、環境変数をに追加する代わりに、このアプローチをお勧めします。 docker-compose.yml パスワードを入力しないようにすることをお勧めしますので、直接ファイルしてください docker-compose.yml ファイル。 このアプローチは、ファイルをGitリポジトリまたは別のソース管理システムにコミットする場合に特に適用できます。

新しいを開く .env とファイル nano:

  1. nano .env

次の行をファイルに追加し、 POSTGRES_USERPOSTGRES_PASSWORD 強調表示された値の代わりに選択したもの:

.env
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=a_strong_password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata

# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=a_strong_password_for_user

OdooとPostgreSQLのパスワードを生成するには、 openssl コマンド。ほとんどのLinuxシステムで使用できます。 サーバーで次のコマンドを実行して、ランダムなバイトセットを生成し、パスワードとして使用できるbase64エンコードバージョンを出力します。

  1. openssl rand -base64 30

結果の文字列をに貼り付けます .env の代わりにファイル a_strong_password_for_user プレースホルダーのパスワード。

編集が終わったら .env ファイルを作成し、保存してテキストエディタを終了します。

これで、開始する準備ができました odoopostgres とコンテナ docker-compose 指図:

  1. docker-compose up -d

The up サブコマンドは docker-compose で定義されているコンテナおよび関連するボリュームとネットワークを開始するには docker-compose.yml ファイル。 The -d フラグ(「デーモン化」の略)は docker-compose コマンドがターミナルを引き継がないように、コンテナをバックグラウンドで実行します。 docker-compose 必要なDockerイメージをダウンロードしてからコンテナーを起動すると、簡単な出力が出力されます。

Output
Creating network "odoo_default" with the default driver Creating volume "odoo_odoo_data" with default driver Creating volume "odoo_postgres_data" with default driver Pulling odoo (odoo:14.0)... 15.0: Pulling from library/odoo . . .

OdooおよびPostgreSQLコンテナをいつでも停止したい場合は、次のコマンドを実行してください。 ~/odoo ディレクトリ:

  1. docker-compose stop

コンテナは停止します。 ボリューム内の構成とデータは保持されるため、次のコマンドでコンテナーを再開できます。 docker-compose up -d 指図。

それが完了すると、Odooが実行されているはずです。 Webサーバーがで実行されていることをテストできます 127.0.0.1:8069 を使用してホームページを取得する curl 指図:

  1. curl --head http://localhost:8069

これにより、応答からHTTPヘッダーのみが出力されます。

Output
HTTP/1.0 303 SEE OTHER Content-Type: text/html; charset=utf-8 Content-Length: 215 Location: http://localhost:8069/web Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/ Server: Werkzeug/0.14.1 Python/3.7.3 Date: Tue, 08 Mar 2022 20:45:34 GMT

The 303 SEE OTHER 応答は、Odooサーバーが稼働していることを意味しますが、インストールを完了するには別のページにアクセスする必要があります。 強調表示 http://localhost:8069/web Locationヘッダーは、ブラウザーのOdooインストーラーページにアクセスする場所を示します。

次に、パブリックトラフィックをOdooコンテナにプロキシするようにNginxを設定します。

ステップ3—Nginxのインストールと構成

NginxなどのWebサーバーをOdooサーバーの前に配置すると、キャッシュ、圧縮、静的ファイルの提供をより効率的なプロセスにオフロードすることで、パフォーマンスを向上させることができます。 Nginxをインストールし、Odooへのリバースプロキシリクエストを構成します。つまり、ユーザーからOdooへのリクエストの受け渡しとそのやり直しを処理します。 コンテナ化されていないNginxプロセスを使用すると、次のステップでLet’sEncryptTLS証明書を追加するのも簡単になります。

まず、パッケージリストを更新してから、を使用してNginxをインストールします apt:

  1. sudo apt update
  2. sudo apt install nginx

ポートへのパブリックトラフィックを許可する 80443 (HTTPおよびHTTPS) Nginx Full UFWアプリケーションプロファイルを使用:

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

次に、で新しいNginx構成ファイルを開きます /etc/nginx/sites-available ディレクトリ。 私たちは私たちと呼びます odoo.conf ただし、別の名前を使用することもできます。

  1. sudo nano /etc/nginx/sites-available/odoo.conf

以下を新しい構成ファイルに貼り付けます。必ず置き換えてください。 your_domain_here Odooサーバーを指すように構成したドメインを使用します。 これは次のようなものでなければなりません odoo.example.com、 例えば:

/etc/nginx/sites-available/odoo.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/odoo.access.log;
    error_log   /var/log/nginx/odoo.error.log;

    location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Proto https;
      proxy_pass http://localhost:8069;
  }
}

次のステップでCertbotにTLSの構成を任せるため、この構成は現時点ではHTTPのみです。 構成ファイルの残りの部分は、ログの場所を設定してから、すべてのトラフィックといくつかの重要なプロキシヘッダーを http://localhost:8069、前の手順で起動したOdooコンテナ。

ファイルを保存して閉じ、にリンクして構成を有効にします /etc/nginx/sites-enabled/:

  1. sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/

使用する nginx -t 構成ファイルの構文が正しいことを確認するには、次のようにします。

  1. sudo nginx -t
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

そして最後に、 nginx 新しい構成でのサービス:

  1. sudo systemctl reload nginx.service

これで、OdooサイトがプレーンHTTPで利用できるようになります。 ロード http://your_domain_here (セキュリティ警告をクリックする必要があるかもしれません)そしてそれは次のようになります:

サイトがHTTP経由で稼働しているので、CertbotおよびLet’sEncrypt証明書を使用して接続を保護します。 これは、OdooのWebベースのセットアップ手順を実行する前に実行する必要があります

ステップ4—CertbotのインストールとTLS証明書の設定

CertbotとLet’sEncryptの無料認証局のおかげで、OdooアプリにTLS暗号化を追加するのに必要なコマンドは2つだけです。

まず、CertbotとそのNginxプラグインをインストールします。

  1. sudo apt install certbot python3-certbot-nginx

次に、実行します certbot--nginx モードにし、Nginxで使用したものと同じドメインを指定します server_name 構成ディレクティブ:

  1. sudo certbot --nginx -d your_domain_here

Let’s Encryptの利用規約に同意し、メールアドレスを入力するよう求められます。

その後、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねられます。 それはあなた次第ですが、これは一般的に推奨され、安全に行うことができます。

その後、Let’s Encryptがリクエストを確認し、Certbotが証明書をダウンロードします。

Output
Congratulations! You have successfully enabled https://odoo.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/odoo.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/odoo.example.com/privkey.pem Your cert will expire on 2022-05-09. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certbotは、新しい構成と証明書を使用してNginxを自動的にリロードします。 ブラウザにサイトをリロードすると、リダイレクトオプションを選択した場合、自動的にHTTPSに切り替わります。

これでサイトは安全になり、Webベースのセットアップ手順を安全に続行できます。

ステップ5—Odooを設定する

Webブラウザーに戻り、ページをリロードします。 これで、Odooのデータベース構成ページが安全な方法で開かれるはずです。 https:// 繋がり。 これで、ユーザー名とパスワードを安全に入力して、インストールプロセスを完了することができます。

このページに入力する情報は、OdooアプリケーションにPostgreSQLデータベースの作成方法とデフォルトの管理ユーザーに関する詳細を示します。

次のフィールドに入力します。

  • データベース名: odoo
  • メール:あなたのメールアドレス
  • パスワード:管理者ログイン用の強力で一意のパスワード
  • デモデータ:これがodooを初めてインストールする場合は、このオプションがチェックされていることを確認してください

残りのフィールドはデフォルトで問題ありません。 将来Odooにログインするために使用するため、選択した電子メールとパスワードの値を必ず記録してください。

次に、ページの左下にあるデータベースの作成ボタンをクリックします。 Odooがデータベーステーブルを作成するのに1、2分かかる場合があります。 プロセスが完了すると、Odoo Apps管理ページにリダイレクトされます。

ここから、ERPのニーズに合わせてインストールして使用するOdooモジュールを選択できます。 アプリをテストする場合は、SalesタイルのInstallボタンをクリックします。 Odooはモジュールをインストールしてから、個人のDiscussアプリページにリダイレクトします。

画面の左上にあるセグメント化された正方形のアイコンをクリックし、ドロップダウンオプションのリストでSalesリンクを選択します。

データ、見積もり、注文、および実験可能な販売例のリストをカスタマイズするためのガイドとなるページが表示されます。

結論

このチュートリアルでは、DockerComposeを使用してOdooERPアプリとPostgreSQLデータベースを起動し、Nginxリバースプロキシを設定して、Let’sEncryptTLS証明書を使用して保護しました。

これで、付属のモジュールを使用してERPWebサイトの構築を開始する準備が整いました。 Odooの使用の詳細については、公式のOdooドキュメントを参照してください。

独自のカスタムOdooモジュールを作成したり、既存のモジュールをカスタマイズしたりする場合は、開発者向けドキュメントから始めることをお勧めします。