# はじめに
Dify便利ですね!いろんなことについて生成AIで自動化できます。ここでは、AWSのEC2の環境(Amazon Linux 2)にDifyをインストールする手順を示します。Difyのバージョンは、0.9.2です。どなたかの参考にしていただけると嬉しいです。
# Dockerのインストール
1. SSHを使ってAmazon Linux 2インスタンスに接続します。
2. 必要なパッケージをインストールします
```
$ sudo yum update -y
$ sudo yum install -y docker git
```
3. Dockerサービスを開始し、自動起動を有効にします
```
$ sudo systemctl start docker
$ sudo systemctl enable docker
```
4. 現在のユーザーをdockerグループに追加し、再ログインして変更を反映させます
```
$ sudo usermod -aG docker $USER
$ exit
```
5. SSHで再接続後に、Docker Composeをインストールします
```
$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 60.8M 100 60.8M 0 0 51.8M 0 0:00:01 0:00:01 --:--:-- 116M
$ sudo chmod +x /usr/local/bin/docker-compose
```
# Difyのインストール
1. Difyリポジトリをクローンします
```
$ git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 95135, done.
remote: Counting objects: 100% (11824/11824), done.
remote: Compressing objects: 100% (1425/1425), done.
remote: Total 95135 (delta 11046), reused 10727 (delta 10391), pack-reused 83311 (from 1)
Receiving objects: 100% (95135/95135), 51.29 MiB | 15.74 MiB/s, done.
Resolving deltas: 100% (67723/67723), done.
Updating files: 100% (5967/5967), done.
$ cd dify/docker
```
2. 環境設定ファイルをコピーし、必要に応じて編集します
```
$ cp .env.example .env
$ vi .env
```
httpのポートをコンテナの外からアクセスできるように設定を変更します。`.env`の以下の2か所について、ポート番号の8888番を設定しました。(未使用ポートを設定しましょう)
```
# ------------------------------
# Environment Variables for Nginx reverse proxy
# ------------------------------
# HTTP port
NGINX_PORT=8888
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=8888
```
3. docker-composeで、Difyを起動します
```
$ docker-compose up -d
[+] Running 11/11
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.1s
✔ Container docker-db-1 Started 5.1s
✔ Container docker-weaviate-1 Started 4.9s
✔ Container docker-sandbox-1 Started 4.8s
✔ Container docker-redis-1 Started 4.9s
✔ Container docker-ssrf_proxy-1 Started 5.2s
✔ Container docker-web-1 Started 4.6s
✔ Container docker-api-1 Started 7.8s
✔ Container docker-worker-1 Started 7.4s
✔ Container docker-nginx-1 Started
```
これで、8888番でDifyがアクセス可能になりました。
あとは、必要に応じてドメインとTLSの設定を行います。今回はAWS環境(ALB配下のEC2サーバー)で構築したため、他に
- Route53に、CNAMEレコードを設定し、
- インターネットからの443ポートへのTLSアクセスが、ALB経由でEC2の80番ポートにアクセスされるように設定をし、
- EC2内のApacheには、httpd.confのVirtualHostに設定を入れ、再起動しました
※[domain-name]にはあなたのドメイン名を設定してくださいね。
```
<VirtualHost *:80>
ServerName [domain-name]
# 通常のリバースプロキシの設定
ProxyPass "/" "http://127.0.0.1:8888/"
ProxyPassReverse "/" "http://127.0.0.1:8888/"
</VirtualHost>
```
# Difyのセットアップ
1. Difyの初期化プロセスを開始します。ブラウザで以下のURLにアクセスします
```
http://[domain-name]/install
```
2. 画面の指示に従って初期設定を完了します。
以下は初期画面です。
[](/attach/e48267babc967d99d90e65d516161f3497d146b80d5fae0b4b948dbc4693a807.png)
「管理者アカウントの設定」リンクをクリックします。
[](/attach/fb2e9c063bd512341e27f12b5109d5adb3204f7ee19b8f19d7592b68307e2b76.png)
3つの項目を入れてボタンを押下すると登録されます。
[](/attach/cce92e81072dec95a2769674889431ddc7d4e4546e334fb4c69912640f0e00c4.png)
上記画面でサインインをします。先ほど登録したメールアドレスとパスワードを入力しましょう。
[](/attach/60b6abb26a09d23675af12f19521f15f5faee2bc5f41112f27207415d756ad54.png)
見事サインインに成功しました。おめでとうございます!
# 自動起動の設定方法
マシンを再起動してもDifyが自動的に起動するようにするには、追加の設定が必要です。以下に手順示します。
1. システムのsystemdサービスを作成します
```
sudo vi /etc/systemd/system/dify.service
```
2. 以下の内容を`dify.service`に追加します
```
[Unit]
Description=Dify Docker Compose Application
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/ec2-user/dify/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
[Install]
WantedBy=multi-user.target
```
実際のDifyのdockerディレクトリのパス類に置き換えてくださいね。
3. ファイルを保存して閉じます。
4. システムにサービスを登録し、有効化します
```
$ sudo systemctl daemon-reload
$ sudo systemctl enable dify.service
Created symlink from /etc/systemd/system/multi-user.target.wants/dify.service to /etc/systemd/system/dify.service.
```
5. サービスを開始します
```
$ sudo systemctl start dify.service
```
これらの手順を実行することで、マシンの再起動時にDifyが自動的に起動するようになります。
# まとめ
Difyをインストールする手順をまとめました。簡単ですね。どうやらとあるコンサルの調査によると、生成AIの活用は、日本は面倒な事務作業の効率化に焦点が当たることに比べて、アメリカは顧客満足度の向上に重きを置くそうです。自分に役立てるだけでなく、周りの人に役立ててこそ本当の価値。実際に使いながらいろいろ役立てていきましょう!