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セキュリティ設定とファイアウォール設定は、スポーツカーのシートベルトと同じくらい重要です。まずはこの初期設定を確実に完了させ、基本的なコマンド操作に少しずつ慣れていきましょう。





コメント