Difyをセルフホストで動かすにはLinuxサーバーが必須です。しかし、WindowsやMacのようなグラフィカルな操作(GUI)とは異なり、Linuxサーバーの操作は基本的にコマンド入力(CUI)で行います。
この記事では、Dify導入の第一歩として、なぜLinuxコマンドを覚える必要があるのか、そしてConoHa VPSなどのUbuntuサーバーを立てた直後に絶対に実施すべき初期セキュリティ設定と、基本的なコマンド操作について解説します。
1. Linuxとは? (CUIの壁)
Linuxは、WindowsやmacOSと同じ「OS(オペレーティングシステム)」の一種です。1991年にリーナス・トーバルズ氏によって開発されたオープンソースのOSで、誰でも無料で使用・改変・再配布が可能です。
その安定性と柔軟性から、Webサーバー、スーパーコンピュータ、スマートフォンのAndroidなど、世界中のあらゆる場所で使われています。DifyのようなWebアプリケーションを動かすサーバーとしても、Linuxは最も一般的な選択肢です。
WindowsやmacOSと最も異なる点は、操作方法です。多くの場合、マウスで操作するGUI(グラフィカル・ユーザ・インタフェース)ではなく、キーボードでコマンドを打ち込んで操作する**CUI(キャラクタ・ユーザ・インタフェース)**が基本となります。
そのため、Difyの導入や運用・メンテナンスを行うには、このCUI操作、すなわちLinuxコマンドを覚えて使いこなす必要があるのです。
2. サーバー構築直後に必須のSSHセキュリティ設定
VPSでサーバーを立てた直後の状態は、非常に危険です。特にSSH(サーバーにリモート接続するための仕組み)は、デフォルト設定のまま(ポート番号22、rootログイン許可)だと、世界中から「ブルートフォースアタック(総当たり攻撃)」の標的になります。
システムが乗っ取られるのを防ぐため、最低限、以下の2つの設定を必ず行ってください。
- ポート番号の変更: 攻撃者が狙う「22番」から、別の番号に変更する。
- rootユーザログインの禁止: 最も権限の強いrootユーザで直接ログインできないようにする。
※注意: Ubuntuのバージョンによって設定方法が異なります。ConoHa VPSの最新OSテンプレートではUbuntu 24.04が使われることが多いため、両方の手順を解説します。
Ubuntu Server 22.04 の場合
22.04では、従来通り /etc/ssh/sshd_config という設定ファイルを直接編集します。
1. 設定ファイルのバックアップ 万が一に備え、設定ファイルをコピーしておきます。
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +%Y%m%d-%H%M%S`
2. 設定ファイルの編集 vi または nano などのエディタでファイルを開きます。
sudo vi /etc/ssh/sshd_config
3. ポート番号の変更 ファイル内の #Port 22 と書かれている行を探し、# を削除してポート番号を 10022 などに変更します。(例:10022番。他のサービスと重複しない番号を選んでください)
- #Port 22
+ Port 10022
4. rootログインの禁止 #PermitRootLogin prohibit-password または PermitRootLogin yes と書かれている行を探し、以下のように変更します。
- #PermitRootLogin prohibit-password
+ PermitRootLogin no
5. 設定の反映 ファイルを保存して閉じ(vi の場合は :wq)、SSHサービスを再起動します。
sudo systemctl restart sshd
Ubuntu Server 24.04 の場合
24.04 (正確には22.10以降) では、SSHの起動方法が変更され、ポート番号の変更は別の設定ファイルで行う必要があります。
1. ポート番号の変更 以下のコマンドを実行し、設定ファイル(override.conf)を編集します。
sudo systemctl edit ssh.socket
エディタ(通常 nano)が開きます。以下の内容を追記してください。ListenStream= で一度設定をクリアし、新しいポート(例:10022)を指定します。
[Socket]
ListenStream=
ListenStream=10022
▼ nanoエディタの操作方法
- 上記内容を貼り付け(または入力)します。
Ctrl+xキーを押して終了を試みます。Save modified buffer?(変更を保存しますか?) と聞かれたらYキーを押します。File Name to Write:(ファイル名) が表示されたら、そのままEnterキーを押します。
2. rootログインの禁止 rootログインの禁止は、新しく設定ファイルを作成して管理するのが推奨されます。
sudo vi /etc/ssh/sshd_config.d/10-PermitRootLogin.conf
開いたファイルに、以下の1行だけを記述して保存します。
PermitRootLogin no
3. 設定の反映 ssh.socket と ssh の両方を再起動します。
sudo systemctl restart ssh.socket
sudo systemctl restart ssh
4. 設定の確認(24.04の場合) sshd -T コマンドで、permitrootlogin no と表示されれば成功です。
$ sudo sshd -T | grep -i PermitRootLogin
permitrootlogin no
3. ファイアウォール (ufw) の設定
SSHのポート番号を変更したら、必ずファイアウォール(ufw)で「新しいポート(10022)」を許可し、「古いポート(22)」を閉じます。この順番を間違えると、サーバーに接続できなくなるので細心の注意を払ってください。
1. ファイアウォールの有効化
sudo ufw enable
Firewall is active and enabled on system startup と表示されればOKです。
2. 新しいSSHポートの通信を許可 (例:10022番ポート)
sudo ufw allow 10022/tcp
Rule added と表示されればOKです。
3. ルールの確認
numbered オプションで、ルールに番号を付けて表示します。
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 10022/tcp ALLOW IN Anywhere
[ 3] OpenSSH (v6) ALLOW IN Anywhere (v6)
[ 4] 10022/tcp (v6) ALLOW IN Anywhere (v6)
※ OpenSSH がデフォルトの22番ポートです。
4. 古いSSHポート(22番)のルールを削除
上記で確認した番号(この例では 1 と 3)を指定して削除します。
sudo ufw delete 1
Proceed with operation (y|n)? と聞かれたら y を入力します。
sudo ufw delete 2
(※ルール番号は ufw delete 1 を実行後にずれるので、ufw status numbered で再度確認してから 3 だったルールを削除します)
5. 設定の再読み込み
sudo ufw reload
4. 【ConoHa VPS 3.0 の場合】セキュリティグループの設定
重要: ConoHa VPSのバージョン3.0では、サーバー側の ufw に加えて、ConoHaのコントロールパネル側でも「セキュリティグループ」の設定が必要です。
- ConoHaコントロールパネルにログインし、「セキュリティ」メニューから「セキュリティグループ」を作成します。
- 作成したグループに「ルールを追加」します。
- 「SSH」タイプ(または「カスタム」)を選び、許可するポートに新しいポート番号(例:10022) を指定します。
- 「サーバ」メニューに戻り、対象サーバーの「ネットワーク情報」から、作成したセキュリティグループを適用します。
「+」アイコンをクリックします。 作成した「セキュリティグループ」を選択し、「保存」ボタンをクリックして「セキュリティグループ」を追加します。 追加した「セキュリティグループ」が表示されていることを確認してください。
5. システムの更新と再起動
セキュリティ設定が一段落したら、パッケージを最新の状態にし、サーバーを再起動して全ての設定を反映させます。
# パッケージリストを更新
sudo apt update
# パッケージをアップグレード
sudo apt upgrade
# サーバーを再起動
sudo reboot
再起動後、**新しいポート番号(10022)**で、**一般ユーザー(root以外)**でSSH接続できることを確認してください。また、rootユーザーや古い22番ポートで接続できないことも確認しましょう。
6. (推奨) 公開鍵認証への変更
さらにセキュリティを高めるため、パスワード認証を禁止し、「公開鍵認証」に変更することを強く推奨します。これは「鍵(秘密鍵ファイル)」を持っているPCからしか接続できなくする方法です。
ただし、秘密鍵を紛失するとサーバーに接続できなくなるデメリットもあります。(ConoHaの場合は、コントロールパネルの「コンソール」機能から復旧可能です)
7. 基本的なLinux操作 (コマンドとショートカット)
CUIの操作に慣れるための、便利なショートカットと必須コマンドです。
便利なキー操作(ショートカット)
| コマンド | 意味 |
|---|---|
Ctrl + C | 実行中のコマンドを強制終了する (最もよく使います) |
Ctrl + A | 行頭に移動する |
Ctrl + E | 行末に移動する |
Ctrl + D | カーソル位置の1文字を削除する (またはログアウト) |
Ctrl + K | カーソル位置から行末までを削除する |
Ctrl + U | カーソル位置から行頭までを削除する |
Ctrl + R | コマンド履歴を検索する(インクリメンタル検索) |
↑キー (または Ctrl + P) | 1つ前のコマンド履歴に移動する |
↓キー (または Ctrl + N) | 次のコマンド履歴に移動する |
Ctrl + L | 画面を消去する |
Ctrl + S | 画面表示をロックする (固まったように見える) |
Ctrl + Q | 画面表示のロックを解除する |
絶対覚えておきたい基本コマンド
| コマンド | 意味 |
|---|---|
pwd | カレントディレクトリを表示 (今どこにいるか) |
ls | ディレクトリ内のファイルを表示 (-l -aオプションも多用) |
cd [ディレクトリ名] | カレントディレクトリを変更 (移動) |
mkdir [ディレクトリ名] | ディレクトリを作成する |
touch [ファイル名] | 空のファイルを作成する (タイムスタンプ更新) |
rm [ファイル名] | ファイルを削除する (-rでディレクトリごと削除) |
cat [ファイル名] | ファイルの内容を表示する (短いファイル用) |
less [ファイル名] | ファイルの内容をスクロール表示する (長いファイル用) |
cp [コピー元] [コピー先] | ファイルをコピーする |
mv [移動元] [移動先] | ファイルを移動する (または名前変更) |
chmod [権限] [ファイル名] | ファイルのパーミッション(権限)を変更する (例: chmod 755 ...) |
ps | 現在動作しているプロセスを表示 (auxオプションを多用) |
kill [プロセスID] | プロセスを終了させる |
tail -f [ファイル名] | ファイルへの追記を監視する (ログ監視で多用) |
検索
| コマンド | 意味 | その他 |
|---|---|---|
| find <検索開始ディレクトリ> <検索条件> <アクション> | ファイルを探す |
ファイルパーミッション
| コマンド | 意味 | その他 |
|---|---|---|
| chmod <8進数の数値> <ファイル名> | 数値モードによるパーミッションの変更 | (例)chmod 755 test.txt |
数値モードでのパーミッションの数値
足した値を「オーナー」「グループ」「その他のユーザー」の順に3つ並べて指定します。この3桁の数字がパーミッションを指定するための値です。例えば、「rwxr-xr-x」というパーミッションは、数値に変換すると「755」になります。
| 意味 | 数値 |
|---|---|
| 読み取り(r) | 4 |
| 書き込み(w) | 2 |
| 実行(x) | 1 |
プロセス、ジョブ系
| コマンド | 意味 | その他 |
|---|---|---|
| ps | 現在動作しているプロセスを表示 | |
| ps xf | 現在のユーザーが実行中の全てのプロセスを表示 | |
| ps ax | システムで動作している全てのプロセスを表示 | |
| kill <プロセスID> | プロセスを終了させる | ※プロセスIDとはpsコマンド等で表示されるPIDの値 |
文字列
| コマンド | 意味 | その他 |
|---|---|---|
| wc ファイル名 | 指定したファイルの行数、単語数、バイト数を表示する |
| コマンド | 意味 | その他 |
|---|---|---|
| tail ファイル名 | 指定したファイルの末尾10行を表示する | |
| tail -n ◯ ファイル名 | -nオプションで◯部分に数字を入れることでファイルの末尾◯行を表示する | |
| tail -f ファイル名 | ファイルへの追記を監視する | ログの収集やデータ収集で利用される |
8. コマンドリファレンス (頻出コマンド一覧)
さらに多くのコマンドを、目的別に紹介します。
ディレクトリ操作
| Linuxコマンド | 意味 |
|---|---|
ls | ディレクトリ情報を一覧表示する |
pwd | 現在のディレクトリを表示する |
ディレクトリ移動・ファイル操作
| Linuxコマンド | 意味 |
|---|---|
cd | ディレクトリを移動する |
mkdir | フォルダを作成する |
touch | ファイルを作成する / タイムスタンプを変更する |
cp | ファイルをコピーする |
mv | ファイルを移動する / ファイル名を変更する |
rm | ファイルを削除する (-rでディレクトリも) |
cat | テキストファイルの内容を表示する |
chmod | ファイルやフォルダのアクセス権限を変更する |
chown | ファイル、ディレクトリの所有者を変更する |
tar | ファイルの圧縮、展開する |
ユーザ管理
| Linuxコマンド | 意味 |
|---|---|
useradd / adduser | ユーザを新規作成する |
deluser | ユーザを削除する |
groupadd | グループを新規作成する |
groupdel | グループを削除する |
システム管理操作
| Linuxコマンド | 意味 |
|---|---|
free | メモリの空き容量、使用容量を表示する |
last | ログイン履歴を一覧表示する |
finger | ユーザ情報を表示する |
ネットワーク関連操作
| Linuxコマンド | 意味 |
|---|---|
route | ルーティングの表示や設定をする |
ftp | ファイルをFTPで転送する |
ssh | sshでログインする |
まとめ
Difyの導入・運用をスムーズに行うためには、CUIでのサーバー操作は避けて通れません。
特に、サーバーを立てた直後のSSHセキュリティ設定とファイアウォール設定は、スポーツカーのシートベルトと同じくらい重要です。まずはこの初期設定を確実に完了させ、基本的なコマンド操作に少しずつ慣れていきましょう。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー(ミラーマスター合同会社)



VPSサーバの選定





コメント