複数データベースサービスのサポート
WalineはMySQL、PostgreSQL、SQLite、MongoDBなど、さまざまなデータベースをサポートしています。
環境変数を設定するだけで、Walineは設定した環境変数に応じて対応するデータストレージサービスへ自動的に切り替わります。
MongoDB
MongoDBの公式サイトhttps://mongodb.comでは、512MのMongoDBデータベースを無料で提供しています。MongoDBデータベースを使用するために設定が必要な環境変数は以下のとおりです。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
MONGO_DB | ✅ | MongoDBのデータベース名 | |
MONGO_USER | ✅ | MongoDBサーバーのユーザー名 | |
MONGO_PASSWORD | ✅ | MongoDBサーバーのパスワード | |
MONGO_HOST | 127.0.0.1 | MongoDBサーバーのアドレス。配列形式をサポート | |
MONGO_PORT | 27017 | MongoDBサーバーのポート。配列形式をサポート | |
MONGO_REPLICASET | MongoDBのレプリカセット | ||
MONGO_AUTHSOURCE | MongoDBの認証ソース | ||
MONGO_OPT_SSL | false | SSL接続を使用する |
mongodb.com向けの設定例は以下のとおりです。複数のホストがある場合は、MONGO_HOSTとMONGO_PORTをJSON形式で設定する必要がある点に注意してください。
MONGO_HOST=["cluster0-shard-00-00.p4edw.mongodb.net","cluster0-shard-00-01.p4edw.mongodb.net","cluster0-shard-00-02.p4edw.mongodb.net"]
MONGO_PORT=[27017,27017,27017,27017]
MONGO_DB=waline
MONGO_USER=admin
MONGO_PASSWORD=xxxx
MONGO_REPLICASET=atlas-12cebf-shard-0
MONGO_AUTHSOURCE=admin
MONGO_OPT_SSL=trueMySQL
MySQLでデータを保存するのも良い選択です。自前のMySQLサービスのほか、25Mのデータベースを無料で提供しているFreeDB、現在は有料プランのみを提供しているPlanetScaleも利用できます。
MySQLをストレージとして使用する場合は、まずwaline.sqlをインポートしてテーブルとテーブル構造を作成し、その後プロジェクトで以下の環境変数を設定してください。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
MYSQL_DB | ✅ | MySQLのデータベース名 | |
MYSQL_USER | ✅ | MySQLサーバーのユーザー名 | |
MYSQL_PASSWORD | ✅ | MySQLサーバーのパスワード | |
MYSQL_HOST | 127.0.0.1 | MySQLサーバーのアドレス | |
MYSQL_PORT | 3306 | MySQLサーバーのポート | |
MYSQL_PREFIX | wl_ | MySQLのテーブルプレフィックス | |
MYSQL_CHARSET | utf8mb4 | MySQLのテーブル文字コード | |
MYSQL_SSL | false | SSL接続を使用するか |
TiDB
TiDBはオープンソースのNewSQLデータベースです。TiDB Cloudは公式のオンラインバージョンで、誰でも利用できる5GBの無料枠を提供しています。
初期化の手順についてはTiDBデータベースの作成を参照してください。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
TIDB_DB | ✅ | TiDBのデータベース名 | |
TIDB_USER | ✅ | TiDBのデータベースユーザー名 | |
TIDB_PASSWORD | ✅ | TiDBのデータベースパスワード | |
TIDB_HOST | 127.0.0.1 | TiDBサービスのアドレス | |
TIDB_PORT | 4000 | TiDBサービスのポート | |
TIDB_PREFIX | wl_ | TiDBデータテーブルのプレフィックス | |
TIDB_CHARSET | utf8mb4 | TiDBデータテーブルの文字セット |
SQLite
SQLiteを使用する場合は、waline.sqliteをサーバーにダウンロードしてください。その後、プロジェクトで以下の環境変数を設定します。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SQLITE_PATH | ✅ | SQLiteのストレージファイルのパス。ファイル名は含めない | |
JWT_TOKEN | ✅ | ログイントークン生成用のランダム文字列 | |
SQLITE_DB | waline | SQLiteのストレージファイル名。ファイル名がwalineでない場合は変更する | |
SQLITE_PREFIX | wl_ | SQLiteのテーブルプレフィックス |
PostgreSQL
SupabaseとNeonは512Mのデータベースを無料で提供しており、Temboは10GのPGデータベースのサポートを無料で提供しています。MySQLと同様に、PostgreSQLを使用する前にwaline.pgsqlをインポートしてテーブルとテーブル構造を作成する必要があります。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
PG_DB | ✅ | PostgreSQLのデータベース名 | |
PG_USER | ✅ | PostgreSQLサーバーのユーザー名 | |
PG_PASSWORD | ✅ | PostgreSQLサーバーのパスワード | |
PG_HOST | 127.0.0.1 | PostgreSQLサーバーのアドレス | |
PG_PORT | 5432 | PostgreSQLサーバーのポート | |
PG_PREFIX | wl_ | PostgreSQLのテーブルプレフィックス | |
PG_SSL | false | SSL接続を使用する場合はtrueに設定 | |
POSTGRES_DATABASE | PG_DBのエイリアス | ||
POSTGRES_USER | PG_USERのエイリアス | ||
POSTGRES_PASSWORD | PG_PASSWORDのエイリアス | ||
POSTGRES_HOST | 127.0.0.1 | PG_HOSTのエイリアス | |
POSTGRES_PORT | 5432 | PG_PORTのエイリアス | |
POSTGRES_PREFIX | wl_ | PG_PREFIXのエイリアス | |
POSTGRES_SSL | false | PG_SSLのエイリアス |
GitHub
WalineはコメントデータをGitHub上のCSVファイルに保存できます。GitHubをデータストレージとして使用するには、パーソナルアクセストークンを申請する必要があります。https://github.com/settings/tokensでGenerate new tokenをクリックして申請できます。権限でrepoオプションにチェックを入れ、リポジトリの読み取りと書き込みの権限を取得してください。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
GITHUB_TOKEN | ✅ | パーソナルアクセストークン | |
GITHUB_REPO | ✅ | リポジトリ名。例:walinejs/waline | |
| GITHUB_PATH | データ保存ディレクトリ。dataを指定するとdataディレクトリに保存され、デフォルトではルートディレクトリになる |
注意
パフォーマンス上の理由から、GitHubの使用は推奨しません。
カスタム
上記のデータベースストレージ以外にも、他のストレージサービスへの対応を追加できます。
Walineでより多くのストレージサービスをサポートしたい場合は、プロジェクトをフォークして基底クラスを継承し、対応するストレージサービスのselect()、add()、update()、delete()メソッドを実装してPRを送ってください。
