レンタルサーバーに 2FAuth を入れる

2FAuthとは


OTPアプリは2段階認証で使う6~8桁のPINコード生成するアプリのことです。普通はスマホアプリとして提供されているものを使用すると思いますが、これは複数人で利用する場合に何かと不便です。

2FAuthはこれをWebサーバー上で動くようにしたもので、Dockerコンテナでの構築が推奨されますが、レンタルサーバーでも動きますのでご紹介します。

レンタルサーバーには CoreServer v2 を使用しており、PHP 8.3の動作には制限があるためPHP 8.2に対応したバージョンを使用しています。


導入手順

  1. composer を使えるようにする
  2. DBを作成する(レンタルサーバー上)
  3. メール環境を確認(レンタルサーバー上)
  4. パッケージを取得する
  5. 設定ファイルを作成する
  6. composer で依存関係のあるファイルをインストール
  7. APP_KEY を生成する
  8. インストールする
  9. .htaccess ファイルを作成する

1~3の説明は省略します

4. パッケージを取得する


$ git clone -b v4.2.4 https://github.com/Bubka/2FAuth.
$ mv 2FAuth public_html
$ cd public_html

5. 設定ファイルを作成する

サンプルファイルをコピーして設定ファイルを作成します。


$ cp .env.example .env
$ vi .env

基本的な設定を書き込みます。上から、管理者のメールアドレス、ドメイン、サブディレクトリ。サブディレクトリは無ければそのままで構いません。


SITE_OWNER=webadmin@YOURDOMAIN.com
APP_URL=https://2fauth.YOURDOMAIN.com
APP_SUBDIRECTORY=

BDの設定を書き込みます


DB_CONNECTION=mysql
DB_HOST=ip.of.your.server
DB_PORT=3306
DB_DATABASE=2fauth
DB_USERNAME=sqlUserName
DB_PASSWORD=sqlUserPassword

メールの設定を書き込みます


MAIL_MAILER=smtp
MAIL_HOST=SSL0.OVH.NET
MAIL_PORT=465
MAIL_USERNAME=john.doe@example.com
MAIL_PASSWORD=MyP4Ssw0rd
MAIL_ENCRYPTION=ssl
MAIL_FROM_NAME="John"
MAIL_FROM_ADDRESS=john.doe@example.com

6. composer で依存関係のあるファイルをインストール


$ composer install

7. APP_KEY を生成する


$ php artisan key:generate

8. インストール


$ php artisan 2fauth:install


*******************************
*     2FAuth installation     *
*******************************

Start processing
  Clearing caches ....................................................................... 5ms DONE
  Preparing .env file ................................................................... 0ms DONE
  Retrieving app key .................................................................... 0ms DONE

 Existing .env file found. Do you wish to review its vars? (yes/no) [yes]:
 > no

   INFO  Preparing database.  

  Creating migration table .............................................................. 6ms DONE

   INFO  Running migrations.  

  2014_10_12_000000_create_users_table .................................................. 5ms DONE
  2014_10_12_100000_create_password_resets_table ........................................ 4ms DONE
  2016_06_01_000001_create_oauth_auth_codes_table ....................................... 8ms DONE
  2016_06_01_000002_create_oauth_access_tokens_table .................................... 8ms DONE
  2016_06_01_000003_create_oauth_refresh_tokens_table ................................... 6ms DONE
  2016_06_01_000004_create_oauth_clients_table .......................................... 4ms DONE
  2016_06_01_000005_create_oauth_personal_access_clients_table .......................... 2ms DONE
  2017_03_03_100000_create_options_table ................................................ 3ms DONE
  2019_05_16_162730_create_twofaccounts_table ........................................... 2ms DONE
  2020_03_25_095517_add_order_column_to_twofaccounts_table .............................. 7ms DONE
  2020_10_05_210557_add_last_seen_to_users_table ........................................ 2ms DONE
  2020_10_11_202302_add_provider_column_to_oauth_clients_table .......................... 1ms DONE
  2020_10_20_210129_create_groups_table ................................................. 2ms DONE
  2020_10_20_211115_add_group_id_column_to_twofaccounts_table ........................... 5ms DONE
  2020_12_04_073604_alter_encrypted_columns_to_text .................................... 35ms DONE
  2020_12_04_073605_alter_encrypted_columns_to_text_for_sqlite .......................... 0ms DONE
  2020_12_04_073606_alter_encrypted_columns_to_text_for_sqlite_bis ...................... 0ms DONE
  2021_09_08_191139_split_twofaccounts_uri_in_multiple_columns .......................... 2ms DONE
  2021_09_08_191140_rename_uri_to_legacy_uri ........................................... 10ms DONE
  2021_09_14_195451_change_nullable_in_twofaccounts_table ............................... 9ms DONE
  2021_12_03_220140_create_web_authn_tables ............................................. 9ms DONE
  2022_10_20_122032_create_webauthn_credentials ........................................ 11ms DONE
  2023_02_10_145413_add_is_admin_and_preferences_to_users_table ......................... 4ms DONE
  2023_02_21_143845_bind_twofaccounts_and_groups_to_users .............................. 12ms DONE
  2023_03_13_114928_set_username_unique ................................................. 2ms DONE

  Setting up Passport .................................................................. 97ms DONE
  Creating storage link ................................................................. 1ms DONE
  Caching config ....................................................................... 14ms DONE

                                                                                                    
 [OK] Installation complete successfully                                                            
                                                                                                    

Visit https://mfa.csf.jp to start using 2FAuth

-----------------------------------
.▀█▀.█▄█.█▀█.█▄.█.█▄▀  █▄█.█▀█.█─█
─.█.─█▀█.█▀█.█.▀█.█▀▄  ─█.─█▄█.█▄█ for using 2FAuth

Want to support its development?
You can Buy me a coffee => https://ko-fi.com/bubka
You can sponsor me on GitHub => https://github.com/sponsors/Bubka

9. .htaccess ファイルを作成する

プログラム本体は public ディレクトリ以下にあり、そのまま URL にアクセスしても何も表示されないため、 .htaccess ファイルを作って rewrite します。


$ vi .htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]

これで準備完了です。

コメント