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

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

## 目次

## PocketBaseとは

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

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

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

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">PocketBase使ってみた！！！<br>確かにこれも結構良さそう！！！ <a href="https://t.co/7GEhJLsDv0">https://t.co/7GEhJLsDv0</a> <a href="https://t.co/gsBXxBEfAC">pic.twitter.com/gsBXxBEfAC</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1903640403649372447?ref_src=twsrc%5Etfw">March 23, 2025</a></blockquote> 

## インストール方法

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

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

```bash
# 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をインストールします（まだの場合）：
   ```bash
   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のリポジトリをクローンします：
   ```bash
   git clone https://github.com/pocketbase/pocketbase.git
   cd pocketbase
   ```

3. サンプルアプリケーションをビルドします：
   ```bash
   cd examples/base
   CGO_ENABLED=0 go build
   ```

4. ビルドした実行ファイルを起動します：
   ```bash
   ./base serve
   ```

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

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

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

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

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

実際の実行例：

```bash
# 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を起動します：
   ```bash
   ./base serve  # または ./pocketbase serve
   ```

2. 管理ダッシュボードにアクセスします：
   ```
   http://127.0.0.1:8090/_/
   ```

3. 作成したSuperuserアカウントでログインします。

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

## カスタマイズと拡張

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

```bash
# 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ディレクトリに作成する必要があります）：

```go
// 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を使用する

### 問題: ポートの変更

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

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

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

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

---

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


<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>