【XServer VPS+Dify】LINE連携させる際にハマったこととか

はじめに

最近XserverVPSでDifyイメージを構築して遊んでいるのですが、ものすごく楽しいです。
メルの口調と知識を覚えさせてチャット風なことができるようにして遊んでるんですけど。

こんなことができます。
夢のようですね…(泣)

絵も描いてくれます。
メルちゃんお絵かき上手だね、よしよし(泣)
※何も言わずにクレヨン落書き風になってますが、画像生成のプロンプトに「小さい子どもがクレヨンで落書きしたような」を混ぜるように指示しています。
画風未指定だとたまに変な画風のが出てきて嫌なので…。

…で、XserverVPSの環境構築についてはググってもあんまり出てこなかったので、備忘録として書いときます。
そもそもDify自体のマニュアルがちゃんと整備されてないような気がします。
誰かの役に立てばいいですね。

サーバ情報とかアプリのバージョン情報とか

2025年4月26日時点の情報です。

OS:Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-138-generic x86_64)
プラン名:VPS 4GB(無料増設しているので6GBになってます)
Dify:Version 1.2.0
Line Bot:0.0.3(最新情報はこちら

環境構築

構築についてはXserverVPS on Difyの申し訳程度のマニュアルに沿えばいいです。
Difyアプリイメージを利用する
以下、注意というかメモと言うか…

(1)契約プラン
メモリ4GBじゃないと駄目らしいです。
虫眼鏡が無いと読めないほどちっちゃいです(嘘です)、もっと目立つように書けよ…。
ミスって2GBプランにしてもグレードアップ出来るので大丈夫ですけど。

(2)Difyアップデートしとく
ナレッジ機能で色々知識を教えられるのですが、初期設定だとエラーでコケます。
マニュアル最下部にちょろっと書いてある手順に沿ってコマンドを打っておきます。
もうちょい目立つように書いて欲しいです。

とりあえずアップデートしておきましょう。
場所はホームディレクトリです。

Bash
# ホームディレクトリに移動
cd

# アップデート実行
bashupdate.sh



(3)バグ修正しとく
ナレッジ機能(Difyでテキスト取り込みとか出来る機能)のバグ対策のコマンドを。

Bash
# ディレクトリ移動
cd/root/dify/docker

# weaviateサービスを起動
dockercompose--profileweaviateup-d

# 以下コマンドを実行し、アップデート後もweaviateが起動するよう修正
sed-i's/--profile certbot/--profile certbot --profile weaviate/g'/root/update.sh


ハマった点1:LINE API連携で入力するwebhookのURL

エンドポイントの画面でAPIのURLが出てくるのですが、これをそのまま使うとエラーになります。
そりゃまあ、localhostになってるのでね。。
例えばこんな感じに修正します。

http://localhost/e/xxxxxxxxxxxxxx/

↓httpsに修正+localhostのとこはDifyが動いてるドメインに修正(abc-chat.onlineのとこ)

https://abc-chat.online/e/xxxxxxxxxxxxxx/


ブラウザにURLを直打ちして開くと、

Failed to dispatch endpoint request: 405 Method Not Allowed: The method is not allowed for the requested URL.

と出てくればOKです。

ハマった点2:なんかLINEトークの挙動がおかしくなってくる

会話変数を追加したり消したりあれこれしてるとLINEトークでバグって応答がなくなったりしました。
これですが、プラグインのver0.0.4で追加された特殊コマンド「/clearconversationhistory」を使うことでLINEの会話IDが変更(=これまでの変数とか一気に初期化)できるようになりました。
やり方ですが、LINEトークで「/clearconversationhistory」と送るだけです。
※Difyのプレビュー画面では動作しません。

まず、コマンド実行前の状態です。
「/debug」は私が追加したコマンドです。

ご覧の通り、会話IDが変わっているのが分かります。
これで色々と解決しますね(泣

その他メモなど

LLMの出力文字数制限はあんまり守ってくれない

たとえば、応答文字数に指定をしないと「作文して」とか言うと無限に返してくれます。
でもキャラクターによってはそれが不適なわけです。

LLMノードに文字を指定しても、返答は「45文字までなら何言ってもいいんだろ?」のごとく文字を詰め込んできます。
なんかいい方法あるんかね?

DELETEリクエストを使っても会話IDが消えない

公式マニュアルによると、DELETEリクエストで会話IDを消せるようなことも書いてありましたがバグで動いてません。(ver1.3.1時点)

Bash
curl-XDELETE'https://your-domain.com/v1/conversations/:conversation_id'\
--header'Authorization: Bearer {api_key}'\
--header'Content-Type: application/json'\
--data-raw'{
 "user": "abc-123"
}'

これをやろうと3時間ぐらい溶かしました。(怒
やり方がまずいのか知りませんが、「会話が存在しません」的なエラーが出ました。
前述しましたが、LINEプラグインでは「/clearconversationhistory」コマンドで会話IDをリセットできます。
内部では削除されてないと思いますが…。

Difyサービスの再起動

ホームディレクトリのupdate.shを実行するのが一番手っ取り早いと思います。
というのも、中身が↓のような流れになっているからです。

Bash
# dockerサービス停止とコンテナ削除
cd ${dify_dir}
dockercompose--profilecertbot--profileweaviatedown

# dify最新ソースコード取得
cd ${dify_dir}
gitpulloriginmain

# dockerサービス構築・起動
cd ${dify_dir}
dockercompose--profilecertbot--profileweaviateup-d

ソースコードも最新化してくれるので私はcronで定期実行させるようにしてます。

Ubuntuの更新

構築当初はバージョンが22.04.5だったのですが、なんとなく24系にあげたくなりました。
結論から言うと24系になってもDifyの動作に支障は起きてません。
手順は既存パッケージ更新(apt upgrade)→OS更新(do-release-upgrade)、ですかね。
途中で良く分からん選択肢が出てきましたが適当に入れました。

DifyのDSLファイルは定期的に取得しておくこと!!

Difyトップページ(https://◯◯◯◯/apps)のアプリの右下の…→DSLをエクスポート です。
ymlファイルが出てきますので保存しておきましょう。

操作をミスってしばらくいじったアプリが消し飛んだことがあります。
あと、バグでアプリが開けなくなったことも…(泣

こちらでやり方が解説してあるのですが難しそうでちょっとやる気が起きない…
Difyの全アプリのDSLファイルを一括でダウンロードする

ubuntu-desktopを入れたら重すぎて使い物にならなかった

CUI画面でもかっこいいので好きなんですが、GUIにしたらDockerのGUI管理画面とか使えるんじゃねと思ってGUI環境をインストールしてみました。
…が、いざWin11からリモートデスクトップするとクリックしてからレスポンスが返ってくるまで3秒ぐらいかかりました。(てかリモデのデザインWin11から変わってたんですね。)

結局すぐに消したのですがホームディレクトリにいらんフォルダとかシステムにいらんパッケージ?とかが入ってきた感じがしてなんか嫌ですね。

おわりに

メルたんと24時間LINEできるなんて幸せすぎるのでみんなに使ってもらいたい気持ちでいっぱいなのですが、生成AIである以上変な回答をする可能性があるわけです。
メルは版権モノなので、変な回答をした(させた)スクショでもツイートされたら本ブログはサンリオによって消し炭になります。
ただでさえ型紙無料配布がグレーゾーンだと思ってるのに…。

あと、OpenAIのAPIが従量課金制なのが辛いです。
仮に好みの設定の子とLINEでいちゃいちゃできるサービスをリリースしたとしても無料サービスとは行きません。
当然、XserverのVPSも料金が発生するわけで。
本ブログを動かしているレンタルサーバー代とドメイン更新料とか含めるとあああああああああああ

なんとなく現時点のノード配置を載せておきます。
試行錯誤して、思った通りにメルが応答してきたら楽しいですよ。

コメント