PocketBase 初心者ガイド – インストールから設定まで

オープンソース

PocketBaseは、単一の実行ファイルで動作するオープンソースのGoバックエンドです。埋め込みデータベース(SQLite)、リアルタイムサブスクリプション、ファイルとユーザー管理、管理ダッシュボードUI、そしてシンプルなREST APIを提供します。

PocketBaseとは

PocketBaseは、以下の機能を備えた軽量バックエンドソリューションです:

  • 埋め込みSQLiteデータベース(リアルタイムサブスクリプション対応)
  • 組み込みのファイルとユーザー管理機能
  • 便利な管理ダッシュボードUI
  • シンプルなREST API

単一の実行ファイルで動作するため、インストールや運用が非常に簡単です。

インストール方法

実際のインストール実行例

以下は、Linux環境でGoをインストールしてPocketBaseをビルドする実際の実行例です。各コマンドの説明も追加しています:

# Step 1: Goの最新バージョンをダウンロード
# wget コマンドでGoの公式サイトから最新バージョンをダウンロードします
maki@giselle:~/prj/pocketbase$ wget https://go.dev/dl/go1.23.2.linux-amd64.tar.gz
--2025-03-23 02:35:37--  https://go.dev/dl/go1.23.2.linux-amd64.tar.gz
Resolving go.dev (go.dev)... 2001:4860:4802:34::15, 2001:4860:4802:36::15, 2001:4860:4802:38::15, ...
Connecting to go.dev (go.dev)|2001:4860:4802:34::15|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.google.com/go/go1.23.2.linux-amd64.tar.gz [following]
--2025-03-23 02:35:37--  https://dl.google.com/go/go1.23.2.linux-amd64.tar.gz
Resolving dl.google.com (dl.google.com)... 2404:6800:400a:80a::200e, 142.250.206.238
Connecting to dl.google.com (dl.google.com)|2404:6800:400a:80a::200e|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 73611540 (70M) [application/x-gzip]
Saving to: 'go1.23.2.linux-amd64.tar.gz'

go1.23.2.linux-amd64.tar.gz 100%[=============>]  70.20M  10.5MB/s    in 6.6s    

2025-03-23 02:35:44 (10.7 MB/s) - 'go1.23.2.linux-amd64.tar.gz' saved [73611540/73611540]

# Step 2: 既存のGoをクリーンアップし、新しいバージョンをインストール
# 既存のGoインストールを削除し、ダウンロードしたアーカイブを展開します
maki@giselle:~/prj/pocketbase$ sudo rm -rf /usr/local/go
maki@giselle:~/prj/pocketbase$ sudo tar -C /usr/local -xzf go1.23.2.linux-amd64.tar.gz

# Step 3: 環境変数PATHを設定
# Goのバイナリにパスを通して、どこからでもアクセスできるようにします
maki@giselle:~/prj/pocketbase$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

# Step 4: インストールの確認
# go version コマンドでGoが正しくインストールされたか確認します
maki@giselle:~/prj/pocketbase$ go version
go version go1.23.2 linux/amd64

# Step 5: PocketBaseのサンプルアプリをビルド
# examples/base ディレクトリに移動して、サンプルアプリをビルドします
# CGO_ENABLED=0 は純粋なGoでビルドするための設定です
maki@giselle:~/prj/pocketbase$ cd examples/base
CGO_ENABLED=0 go build
go: downloading github.com/fatih/color v1.18.0
go: downloading github.com/spf13/cobra v1.9.1
go: downloading github.com/pocketbase/dbx v1.11.0
# (多数の依存ライブラリをダウンロード - 初回は時間がかかります)

# Step 6: ビルドしたアプリケーションを起動
# ./base serve コマンドで PocketBase サーバーを起動します
maki@giselle:~/prj/pocketbase/examples/base$ ./base serve
2025/03/23 02:37:45 Server started at http://127.0.0.1:8090
├─ REST API:  http://127.0.0.1:8090/api/
└─ Dashboard: http://127.0.0.1:8090/_/

# Step 7: 初回起動時、Superuserアカウント作成用のURLが表示されます
# このURLをブラウザで開くか、superuser upsertコマンドを使用します
(!) Launch the URL below in the browser if it hasn't been open already to create your first superuser account:
http://127.0.0.1:8090/_/#/pbinstal/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
(you can also create your first superuser by running: ./base superuser upsert EMAIL PASS)

ソースコードからビルドする方法

ソースコードからビルドする場合は、Goがインストールされている必要があります(Go 1.23以上推奨):

  1. Goをインストールします(まだの場合):

    wget https://go.dev/dl/go1.23.2.linux-amd64.tar.gz
    sudo rm -rf /usr/local/go  # 既存のGoがある場合
    sudo tar -C /usr/local -xzf go1.23.2.linux-amd64.tar.gz
    echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
    source ~/.bashrc
    go version  # インストールを確認
  2. PocketBaseのリポジトリをクローンします:

    git clone https://github.com/pocketbase/pocketbase.git
    cd pocketbase
  3. サンプルアプリケーションをビルドします:

    cd examples/base
    CGO_ENABLED=0 go build
  4. ビルドした実行ファイルを起動します:

    ./base serve

初回起動とSuperuserアカウントの作成

PocketBase v0.23.0以降では、セキュリティ向上のため初回のSuperuserアカウント作成方法が変更されています。

方法1: コマンドラインでSuperuserを作成する

PocketBaseを起動する前に、以下のコマンドを実行してSuperuserアカウントを作成できます:

# superuser upsert コマンドで管理者アカウントを作成
# 形式: ./実行ファイル名 superuser upsert メールアドレス パスワード
./base superuser upsert メールアドレス パスワード

実際の実行例:

# baseディレクトリに移動してコマンドを実行
maki@giselle:~/prj/pocketbase/examples/base$ ./base superuser upsert admin@example.com mypassword123
Successfully saved superuser "admin@example.com"!

このコマンドは、指定したメールアドレスとパスワードでSuperuserアカウントを作成します。アカウントが既に存在する場合は上書きされるため、デプロイスクリプトなどで安全に使用できます。

方法2: 自動生成されたURLを使用する

PocketBaseを初めて起動すると、ログに一時的なトークン付きURLが表示されます:

2025/03/23 02:37:45 Server started at http://127.0.0.1:8090
├─ REST API:  http://127.0.0.1:8090/api/
└─ Dashboard: http://127.0.0.1:8090/_/

(!) Launch the URL below in the browser if it hasn't been open already to create your first superuser account:
http://127.0.0.1:8090/_/#/pbinstal/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2xsZWN0aW9uSWQiOiJwYmNfMzE0MjYzNTgyMyIsImV4cCI6MTc0MjY5OTI2NSwiaWQiOiIxYWU2OHBvNTNxNzIyMXkiLCJyZWZyZXNoYWJsZSI6ZmFsc2UsInR5cGUiOiJhdXRoIn0.rA7p8GOS3Z3BMWhx39AxW4Wj2vrqDg5R6NH83rU5xsY
(you can also create your first superuser by running: ./base superuser upsert EMAIL PASS)

このURLをブラウザで開くと、Superuserアカウント作成画面に直接アクセスできます。URLには一時的なトークンが含まれており、セキュリティを確保しながら初期設定を行うことができます。

基本的な使い方

  1. PocketBaseを起動します:

    ./base serve  # または ./pocketbase serve
  2. 管理ダッシュボードにアクセスします:

    http://127.0.0.1:8090/_/
  3. 作成したSuperuserアカウントでログインします。

  4. コレクション(データベーステーブル)の作成、APIの設定、ユーザー管理などが可能です。

カスタマイズと拡張

PocketBaseは、独自のカスタムアプリケーションを構築するためのフレームワークとしても使用できます。以下は実際のカスタムアプリケーション作成例です:

# Step 1: 新しいプロジェクトディレクトリを作成
# 新しいアプリケーション用のディレクトリを作成します
maki@giselle:~/prj/pocketbase/examples$ mkdir myapp
maki@giselle:~/prj/pocketbase/examples$ cd myapp

# Step 2: Go Moduleの初期化
# go mod init コマンドで新しいGoモジュールを作成します
maki@giselle:~/prj/pocketbase/examples/myapp$ go mod init myapp
go: creating new go.mod: module myapp

# Step 3: 依存関係を解決
# go mod tidy コマンドで必要な依存パッケージを自動的にダウンロードします
maki@giselle:~/prj/pocketbase/examples/myapp$ go mod tidy
go: finding module for package github.com/pocketbase/pocketbase/core
go: finding module for package github.com/pocketbase/pocketbase
go: downloading github.com/pocketbase/pocketbase v0.26.2
go: found github.com/pocketbase/pocketbase in github.com/pocketbase/pocketbase v0.26.2
go: found github.com/pocketbase/pocketbase/core in github.com/pocketbase/pocketbase v0.26.2
# (多数の依存ライブラリをダウンロード)

# Step 4: アプリケーションをビルド
# CGO_ENABLED=0 go build コマンドでアプリケーションをビルドします
maki@giselle:~/prj/pocketbase/examples/myapp$ CGO_ENABLED=0 go build

# Step 5: 作成したアプリケーションを実行
# ./myapp serve コマンドでサーバーを起動します
maki@giselle:~/prj/pocketbase/examples/myapp$ ./myapp serve
2025/03/23 02:51:51 Server started at http://127.0.0.1:8090
├─ REST API:  http://127.0.0.1:8090/api/
└─ Dashboard: http://127.0.0.1:8090/_/

(!) Launch the URL below in the browser if it hasn't been open already to create your first superuser account:
http://127.0.0.1:8090/_/#/pbinstal/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
(you can also create your first superuser by running: ./myapp superuser upsert EMAIL PASS)

カスタムアプリケーションのmain.goの内容例(このファイルを上記のmyappディレクトリに作成する必要があります):

// main.go - PocketBaseを拡張したカスタムアプリケーション
package main

import (
    "log"

    "github.com/pocketbase/pocketbase"
    "github.com/pocketbase/pocketbase/core"
)

func main() {
    // PocketBaseアプリケーションのインスタンスを作成
    app := pocketbase.New()

    // サーバー起動時のイベントハンドラを登録
    app.OnServe().BindFunc(func(se *core.ServeEvent) error {
        // 新しいAPIエンドポイント "/hello" を追加
        se.Router.GET("/hello", func(re *core.RequestEvent) error {
            return re.String(200, "Hello world!")
        })

        // イベント処理を続行
        return se.Next()
    })

    // アプリケーション起動
    if err := app.Start(); err != nil {
        log.Fatal(err)
    }
}

よくある問題と解決策

問題: 管理画面にアクセスできない

解決策: v0.23.0以降では、直接/_/にアクセスするだけではSuperuserアカウントを作成できません。代わりに以下のいずれかを試してください:

  1. ./base superuser upsert メールアドレス パスワードコマンドを実行する
  2. ログに表示されている一時的なトークン付きURLを使用する

問題: ポートの変更

解決策: 違うポートで起動するには以下のようにします:

./base serve --http="0.0.0.0:8080"

問題: データのバックアップ

解決策: 全データはpb_dataディレクトリに保存されます。このディレクトリをコピーするだけでバックアップが取れます。また、管理画面の「Settings」→「Backups」からもバックアップを作成できます。


PocketBaseは継続的に開発が進められており、v1.0.0までは完全な後方互換性は保証されていません。最新の情報は公式ドキュメントを参照してください。

コメント

タイトルとURLをコピーしました