0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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までは完全な後方互換性は保証されていません。最新の情報は公式ドキュメントを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?