スマホから更新できる個人サイト
Minimal Kojin-site CMS
Minimal Kojin-site
CMSは、個人サイト・創作サイト向けのミニマルなCMSです。PHPとSQLiteが使えるレンタルサーバーにアップロードして、ブログ型サイトを作成できます。
初回設定のみFTPツールなどを使用しますが、その後のサイトの更新は管理画面にログインすることでスマホから行えます。
概要・主な機能
リトルサーバー(おすすめ)、ロリポップ!レンタルサーバー(年齢制限のあるコンテンツを扱わない場合はこちらもおすすめ)などの有料レンタルサーバーでの利用を想定しています。MySQLは不要です。
- 作品、日記、つぶやき、ギャラリーの投稿
- サイト内検索(キーワード検索・タグ検索)
- noindex(検索避け)
- 改ページ機能(作品のみ)、タグ設定(作品・日記のみ)、カテゴリー設定(ギャラリーのみ)、記事ごとの閲覧パスワード設定(作品・日記・つぶやきのみ)
- NSFW / R18 ラベル設定、R18記事の年齢確認ページ
- 管理画面でのTOPページ表示内容、テーマ設定(サイトカラー)、ファビコン、SNSシェア画像の設定
- 管理画面での記事本文フォントサイズ・太さ・行間の調整
- アップロード画像のサムネイル自動生成(GD拡張が使える場合)
動作環境
- PHP 8系推奨
- SQLite / PDO SQLite が利用できるサーバー
.htaccessが利用できるサーバー- GD拡張が利用できるサーバー推奨(画像サムネイル自動生成に使用します)
インストール方法
- 配布zipを自分のPC上で解凍します。
-
解凍したフォルダの中にあるファイル一式を確認します。
admin、app、assets、data、uploads、install.phpなどが入っていればOKです。 - WinSCP、FFFTPなどのFTPツールでレンタルサーバーに接続します。
- サーバー側の公開フォルダを開きます。リトルサーバーの場合は、多くの場合
pubフォルダ内が公開フォルダです。ロリポップ!の場合は、契約やドメイン設定によって公開フォルダ名が異なるため、サーバー管理画面の案内を確認してください。 - 公開フォルダの中に、CMSのファイル一式をアップロードします。
- ブラウザで
install.phpにアクセスします。 - サイト名、管理ID、パスワードを入力してインストールします。
- インストール完了後、FTPツールでサーバー上の
install.phpを必ず削除してください。
リトルサーバーは仮登録完了メールにFTPに必要な各情報が記載されています。登録直後の数分間は接続できないこともあるので、接続できなかった場合は時間をおいて再度お試しください。
例1:サイトURL直下に設置する場合
リトルサーバーで pub の中に、CMSのファイル一式をそのままアップロードした場合、サイトURLは次のようになります。
https://ご自身のサイトURL/
インストール画面は次のURLで開きます。
https://ご自身のサイトURL/install.php
例2:フォルダを作って設置する場合
pub の中に cms など任意のフォルダを作り、その中にCMSのファイル一式をアップロードした場合、サイトURLは次のようになります。
https://ご自身のサイトURL/cms/
インストール画面は次のURLで開きます。
https://ご自身のサイトURL/cms/install.php
アップロードするのは、zipファイルそのものではなく、zipを解凍した中身です。サーバー上に配布zipを置いたままにしないでください。
インストール後、最初の記事として hello World が作成されます。
管理画面
管理画面は、設置したURLの後ろに admin/ を付けてアクセスします。ログインには、インストール時に設定した管理IDとパスワードを使用します。
サイトURL直下に設置した場合
https://ご自身のサイトURL/admin/
cms フォルダに設置した場合
https://ご自身のサイトURL/cms/admin/
セキュリティを高めたい場合は、上級者向けの対応として /admin/
フォルダ名を別の名前に変更する方法もあります。ただし、CMS内の管理画面URL参照に影響する場合があるため、変更する場合は動作確認を行ってください。
含まれているセキュリティ対策
このCMSには、個人サイトを公開するときに不安になりやすい部分を中心に、基本的な安全対策を入れています。
- 管理画面へのログイン制限
- 一定回数ログイン失敗で制限
- 保存・削除操作のCSRF対策
- SQLiteファイルや管理用フォルダへの直接アクセス抑止
- アップロード画像の種類・サイズ制限
- 投稿表示時のHTMLエスケープ
- 検索避け用noindex設定
- R18記事の年齢確認表示
- NSFW / R18 / パスワード保護記事のSNSカード画像制御
これらは「基本的な事故を減らすための対策」です。完全な安全を保証するものではありませんが、個人サイトとして安心して使いやすいよう、配布ファイル側でできる範囲の対策を入れています。
不正アクセス対策について
とくに大切なデータファイルとアップロードフォルダについて、次のような対策を入れています。
data/site.sqliteは投稿本文、設定、管理ユーザー情報などを保存する大切なファイルです。ブラウザから直接開かれにくいよう、.htaccessでアクセスを拒否しています。dataフォルダ全体も、外から中身を見られにくい設定にしています。uploadsフォルダでは、画像以外の危険なファイルが実行されにくいよう、PHPなどの実行を抑えています。- 本文表示時はHTMLをそのまま実行せず、許可している記法だけを表示用HTMLに変換します。
サーバー設定によっては .htaccess
の効き方が異なる場合があります。設置後、https://ご自身のサイトURL/data/site.sqlite
のようなURLにアクセスして、表示・ダウンロードされないことを確認するとより安心です。
推奨する対策
- 管理IDは長めで推測されにくいものにする
- パスワードは長く、他サービスと使い回さない
- インストール後は
install.phpを必ず削除する - サーバー上に配布zipやバックアップzipを置いたままにしない
- ギャラリーメインのサイトなど、画像を多く扱う場合はGD拡張が使えるサーバーを選ぶ
- 可能であればサーバー側のBasic認証やアクセス制限を併用する
- 定期的にバックアップを取る
上級者向けの追加セキュリティ対策
以下は、サーバー設定や .htaccess
の扱いに慣れている方向けの追加対策です。設定を誤るとサイトや管理画面にアクセスできなくなる場合があるため、必ずバックアップを取ってから行ってください。
- 管理画面のURLを変更する:
/admin/の場所を推測されにくくすることで、自動攻撃やログイン試行の対象になりにくくできます。ただし、CMS内の管理画面URL参照に影響する場合があるため、変更後は投稿・設定・ログアウトなどの動作確認をしてください。 - 管理画面にBasic認証を追加する:
CMSのログイン画面に到達する前に、サーバー側のID・パスワード確認を追加できます。二重のログインに近い状態になり、不正ログイン試行を減らしやすくなります。 -
管理画面だけIPアドレスでアクセス制限する:
自宅や自分の作業環境など、許可したIPアドレスからだけ管理画面に入れるようにできます。第三者からのアクセスを強く減らせますが、スマホ回線や外出先ではIPが変わることがあるため注意してください。 -
海外からのアクセスを制限する:
海外からの自動攻撃や迷惑アクセスを減らせる場合があります。ただし、海外在住の閲覧者、VPN利用者、検索エンジン、SNSのカード取得などにも影響することがあります。必要な範囲だけ慎重に設定してください。 -
サーバーのWAFを有効にする(ロリポップ!の場合):
WAFは、不審なアクセスや攻撃パターンをサーバー側で検知・ブロックする機能です。CMS側で防ぎきれない攻撃の一部をサーバー側で止められる場合があります。誤検知で投稿保存などが弾かれる場合は、サーバーの設定を確認してください。 - FTPではなく、可能であればFTPS / SFTPを使う:
通常のFTPは通信内容が暗号化されないため、接続環境によってはID・パスワードや転送内容を盗み見されるリスクがあります。FTPS / SFTPを使うと通信が暗号化され、FTP情報の漏えいリスクを下げられます。 - 定期的にバックアップを取り、PC側にも保存する:
誤操作、サーバートラブル、不正アクセス、アップデート失敗などが起きた場合でも、復旧しやすくなります。dataとuploadsは特に大切です。
これらは必須ではありません。まずはインストール後に install.php を削除し、強いパスワードを使い、定期的にバックアップを取ることを優先してください。
バックアップ
投稿データやサイトの設定は、主に data フォルダ内に保存されます。アップロードした画像は uploads フォルダに保存されます。
dataフォルダuploadsフォルダ- ご自身でカスタマイズしたCSSやテンプレートファイル(あれば)
サイト更新前、サーバー移転前、テーマ編集前には上記フォルダ/ファイルのバックアップを取ることをおすすめします。
SNSシェア画像
記事個別ページでは、全年齢かつパスワード保護されていない記事のみ、アイキャッチ画像がSNSカード画像として使用されます。
NSFW / R18 / パスワード保護記事では、内容が見えないように警告用画像が表示されます。記事個別ページ以外のTOPページ、一覧ページ、検索ページなどでは、管理画面で設定した共通OGカード画像が使用されます。
ご自身でカスタマイズしたい方へ
CSSで可能な範囲で見た目を変えたい場合は、 assets/custom.css に追記する形での編集をおすすめします。
assets/style.cssはCMS本体の基礎となるデザインです。大きく編集すると、あとから更新版を入れるときに編集した内容が消えてしまったり、不具合が生じる可能性があります。assets/custom.cssに追記すると、自分の変更箇所が分かりやすく、バックアップや移行もしやすくなります。- テンプレートのHTMLやPHPについても制限なく編集することができますが、編集前に必ずファイルをバックアップをとっておいてください。編集を加えたことによりサイトが表示されなくなるなどの不具合が生じても、復旧等のサポートはできませんので、予めご了承ください。
- 管理画面から変更できる項目(テーマ、フォント、TOPメインビジュアル、表示名など)は、まず管理画面で設定するのがおすすめです。
配布元では、利用者ごとの個別カスタマイズやサーバー設定の代行まではご対応できません。予めご了承の上、バックアップをとった上で編集を行ってください。
注意事項
- 右クリック禁止や「AI学習禁止・無断転載禁止」表示は、保存や転載・学習を完全に防ぐものではありません。無断転載への注意喚起・抑止としてお使いください。
- noindex設定は検索避けの補助機能であり、完全な非公開化ではありません。
- パスワード保護記事も、URLやパスワードの管理には注意してください。パスワードを忘れてしまった際の復旧または確認作業などは、配布元では行うことができません。
- 配布ファイルには、利用者の投稿データやアップロード画像は含まれていません。インストール後に作成されたデータは、ご自身でバックアップしてください。
- GD拡張が使えないサーバーでも表示自体はできますが、画像サムネイルの自動生成が使えないため、画像の多いサイトでは表示が重くなる場合があります。
ライセンス
この配布ファイルはMITライセンスで配布しています。個人サイト・創作サイトなどで、無償で利用・改変できます。
再配布や改変版の配布を行う場合は、配布ファイルに含まれるライセンス表記を残してください。
MITライセンスは、利用を広く許可するライセンスです。ただし、配布物の利用によって発生した損害などについて、配布元が保証や責任を負うものではありません。
連絡先
不具合報告やお問い合わせは、配布元サイトに記載の連絡先からお願いします。個別の設置代行やサーバー設定のサポートには対応できない場合がありますので、予めご了承ください。
プライバシーポリシー
この配布ページでは、お問い合わせ対応に必要な範囲を除き、個人情報を収集しません。お問い合わせ時にいただいた情報は、返信や確認のためにのみ使用します。
配布しているCMS本体は、外部サービスへ利用者情報を自動送信する機能を持ちません。ただし、設置先サーバーや利用するアクセス解析などの仕様については、各サービスの案内をご確認ください。