Cockpit (Headless CMS)
フロントエンドはスクラッチで開発したい場合、ヘッドレスCMSを使うことになりますが、小規模なサイトだと Strapi
では仕掛けが重すぎたり、リクエストが多いXserverなどのレンタルサーバーへの設置だとPHPで動くものの方が良かったりします
Wordpress
をヘッドレスCMSとして利用しても良いのですが、そもそもなぜフロントエンドはスクラッチで開発となったのか考えた時、若干の疑問が生じてきます
弊社では Strapi
で実装できない場合や小規模サイトの場合、動作と仕掛けが軽いので、Cockpit
(Linuxの管理システムではないコックピット) を採用してます
ただ、そのまま設置するとセキュリティ上の疑念が出てくるため、その初期設定についてここでまとめて公開します(まとめてと言うほどたいそうなことではないですが、備忘録に近いです)
ちなみにいま Cockpit
について興味を持たれた方や簡単な使い方は、他の記事を参考にしてください
サイトへの設置
まずは公式サイトの下部からソースコードをダウンロードして、設置するディレクトリで unzip
します
次に初期設定ですが、<PATH_TO_COCKPIT>/install
にアクセスして、user = admin
と password = admin
でログインし、右上にあるハンバーガーの設定メニューからユーザー名・パスワードとその他必要事項を変更して保存します
設置は基本的にはこれだけです...が、この状態だと問題が出てきます
やっておいた方が良いこと
install
ディレクトリの消去
Wordpress
でも同じですが、インストール関連は消しておいた方が無難です
CLI
コマンドのパーミッション設定
Cockpit
には tower
っていうCLI用の管理コマンドが付属していて、これを上位フォルダに移動すると正常に動かないので、そのままだと外部に晒され続けます(アクセスしてもソースが読まれるだけで動作はしなさそうなので放っておいても良いかもしれませんが、気味が悪いです)
なので、パーミッション設定で所有者のみ実行できるように700で設定しておきます1
$ chmod 0700 tower
bootstrap.php
へのアクセス禁止
bootstrap.php
も外部からアクセスできる状態である必要は多分ありませんので、.htaccess
でアクセスを禁止しておきます2(tower
へのアクセスを同じ方法で制限しても良いです)
# Deny access to bootstrap.php
<FilesMatch "^bootstrap\.php$">
Order Allow,Deny
Deny from all
</FilesMatch>
Composer用のJSONへのアクセス禁止
さらに、composer.json
や package.json
も外部から見えてしまう状態になっているので、アクセスできないように、以下のような記述をデフォルトの.htaccess
に追加しておきます
# Deny access to JSON files
<FilesMatch "\.json$">
Order Allow,Deny
Deny from all
</FilesMatch>
おわり
以上でひとまずの初期設定は完了です、あとはAPI鍵を生成してフロントエンドとつなげてください!