Dify導入の第一歩!Ubuntuで学ぶLinuxサーバーの基本操作と初期セキュリティ設定

Dify環境構築

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エディタの操作方法

  1. 上記内容を貼り付け(または入力)します。
  2. Ctrl + x キーを押して終了を試みます。
  3. Save modified buffer? (変更を保存しますか?) と聞かれたら Y キーを押します。
  4. File Name to Write: (ファイル名) が表示されたら、そのまま Enter キーを押します。

2. rootログインの禁止 rootログインの禁止は、新しく設定ファイルを作成して管理するのが推奨されます。

sudo vi /etc/ssh/sshd_config.d/10-PermitRootLogin.conf

開いたファイルに、以下の1行だけを記述して保存します。

PermitRootLogin no

3. 設定の反映 ssh.socketssh の両方を再起動します。

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番)のルールを削除

上記で確認した番号(この例では 13)を指定して削除します。

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のコントロールパネル側でも「セキュリティグループ」の設定が必要です。

  1. ConoHaコントロールパネルにログインし、「セキュリティ」メニューから「セキュリティグループ」を作成します。
  2. 作成したグループに「ルールを追加」します。
  3. 「SSH」タイプ(または「カスタム」)を選び、許可するポートに新しいポート番号(例:10022) を指定します。


  4. 「サーバ」メニューに戻り、対象サーバーの「ネットワーク情報」から、作成したセキュリティグループを適用します。
    「+」アイコンをクリックします。

    作成した「セキュリティグループ」を選択し、「保存」ボタンをクリックして「セキュリティグループ」を追加します。

    追加した「セキュリティグループ」が表示されていることを確認してください。

     

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

コメント

error: Content is protected !!