- Serposcopeを使いたいけど、公式のDockerイメージがない…
- どのようにDocker Composeで起動すればいいの?
- どうやって永続化すればいいの?
以上の悩みを解決できる記事となっています!
Serposcopeは、検索キーワードの順位をチェックするツールですが、公式のDockerイメージがないんですね。
僕は全てDockerで管理しているので、Dockerイメージがないと管理が面倒です。
そこでこの記事では、SerposcopeのDockerイメージを作成する方法を紹介します。
最終的にDocker Composeを使用して起動できるようにするので、管理も簡単ですよ!
その結果、誰でも簡単にSerposcopeを使用できるようになります。

それでは作成していこう!
今回の環境
まず最初に、今回の環境を紹介します。
- Ubuntu 24.04.2 LTS
- Docker 27.5.1
- Docker Compose 2.32.4
- Serposcope 3.5(sqliteで構築)
SerposcopeをDockerで起動する6つのステップ

SerposcopeをDockerで起動するには、以下の6つのステップがあります。
- Serposcopeの設定ファイルを作成する
- SerposcopeのDockerfileを作成する
- SerposcopeのDocker Composeファイルを作成する
- Serposcopeを起動させるentrypoint.shを作成する
- Serposcopeのコンテナを起動する
- Serposcopeのコンテナを停止する
それぞれのステップを順番に説明していきますね。
Serposcopeの設定ファイルを作成する
Serposcopeの設定ファイルを作成します。
僕が使用している設定ファイルを載せておきます。
core.sql.url="jdbc:sqlite:/usr/share/serposcope/db/database.sqlite3.db"
内容は単純で、SQLiteファイルのパスを指定しているだけです。
これがないと、SerposcopeがSQLiteファイルを認識できないので、注意してください。

このためだけに設定ファイルを用意しているんだよ!
SerposcopeのDockerfileを作成する
SerposcopeのDockerfileを作成します。
僕が使用しているDockerfileを載せておきます。
# 最新のUbuntuイメージを使用
FROM ubuntu:latest
# Serposcopeのバージョンを指定
ARG SERPOSCOPE_VER=3.5
# 必要なパッケージをインストール
RUN apt-get update && \
apt-get install -y wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Serposcopeのバイナリをダウンロードしてインストール
RUN wget https://www.serposcope.com/downloads/${SERPOSCOPE_VER}/serposcope_${SERPOSCOPE_VER}_amd64.deb -O serposcope.deb && \
dpkg -i serposcope.deb && \
rm serposcope.deb
# 設定ファイルをコピー
COPY application.conf /usr/share/serposcope
# エントリーポイントスクリプトをコピー
COPY entrypoint.sh /entrypoint.sh
# エントリーポイントスクリプトに実行権限を付与
RUN chmod +x /entrypoint.sh
# 作業ディレクトリを設定
WORKDIR /usr/share/serposcope/
# データベース用のディレクトリを作成
RUN mkdir -p ./db
# データベースの永続化用ボリュームを指定
VOLUME ["/usr/share/serposcope/db"]
# ポート6333を公開
EXPOSE 6333
# rootユーザーで実行
USER root
# エントリーポイントを指定
ENTRYPOINT ["/entrypoint.sh"]
内容を簡単に解説すると、以下のとおりです。
- UbuntuのDockerイメージを使用する
- Serposcopeのバージョンを指定する
- Serposcopeのバイナリをダウンロードする
- Serposcopeの設定ファイルをコピーする
- Serposcopeのエントリーポイントを作成する
という内容です。
これで、SerposcopeのDockerfileが完成しました。

やっていることはめちゃくちゃ簡単だよ!
SerposcopeのDocker Composeファイルを作成する
SerposcopeのDocker Composeファイルを作成します。
実際に僕が使用しているDocker Composeファイルを載せておきます。
# サービスの定義
services:
# Serposcopeサービスの設定
serposcope:
build: . # Dockerfileからビルド
container_name: serposcope # コンテナ名
environment:
- TZ=Asia/Tokyo # タイムゾーンの設定
volumes:
- ./serposcope-data:/usr/share/serposcope/db # データの永続化
restart: always # 常に再起動する設定
内容を簡単に解説すると、以下のとおりです。
- Serposcopeのコンテナを作成する
- SerposcopeのコンテナとSQLiteファイルを紐付ける
という内容です。
さらに僕は、以下の内容を追加しています。
# Cloudflareサービスの設定
cloudflare:
image: cloudflare/cloudflared:latest # Cloudflareのイメージ
container_name: serposcope-cloudflare # コンテナ名
command: tunnel run # トンネルを実行
environment:
- TUNNEL_TOKEN=${TUNNEL_TOKEN} # 環境変数としてトンネルトークンを設定
restart: always # 常に再起動する設定
これは、CloudflareのTunnelを使用して、自宅サーバーにあるSerposcopeを公開しています。
そうすることで、外出先やスマホからもSerposcopeにアクセスできるようになります。
ただし、Serposcopeはログイン認証などがないため、公開していると誰でもアクセスできてしまいます。

要するに誰でも操作できるのでめちゃくちゃ危険ってこと!
なので、Cloudflare Accessを使用して、Serposcopeにアクセスできるユーザーを制限しています。
また、CloudflareのTunnelを使用するためには、CloudflareのAPIキーが必要です。
CloudflareのAPIキーは、CloudflareのDashboardから取得できますよ。
その後、以下の形式で.envファイルにCloudflareのAPIキーを設定してください。
TUNNEL_TOKEN=your_cloudflare_tunnel_token
取得方法は、以下の記事を参考にしてくださいね!

いや、そもそもCloudflare Tunnelって何?
Cloudflare Tunnelは、インターネット上の接続を安全にするためのサービスです。
ローカルネットワークからCloudflareのネットワークを経由して安全なトンネルを作成することができます。
ファイアウォールの設定を変更せずに、内部アプリケーションを外部アクセス可能にすることができるので、めちゃくちゃ楽です。
Serposcopeを起動させるentrypoint.shを作成する
Serposcopeを起動させるentrypoint.shを作成します。
僕が使用しているentrypoint.shを載せておきます。
#!/bin/bash
# アプリケーションをバックグラウンドで起動してSQLiteファイルを生成
/bin/bash -c "/usr/share/serposcope/serposcope.sh" &
APP_PID=$!
# SQLiteファイルが作成されるのを待つ
while [ ! -f /usr/share/serposcope/database.sqlite3.db ]; do
sleep 1
done
# プロセスを終了
kill $APP_PID
# SQLiteファイルを移動
while [ ! -f /usr/share/serposcope/db/database.sqlite3.db ]; do
mv /usr/share/serposcope/database.sqlite3.db* /usr/share/serposcope/db/
done
# アプリケーションをフォアグラウンドで再起動
/bin/bash -c "/usr/share/serposcope/serposcope.sh"
entrypoint.shがあることで、SerposcopeのSQLiteファイルが生成されるのを待ってから、Serposcopeを起動することができます。
その後、SerposcopeのSQLiteファイルを移動してから、Serposcopeを再起動することで、永続化したSQLiteファイルを使用することができます。

そのまま永続化しようとも思ったけど、上手くいかなかったので、移動させてから再起動させるようにしてる!
Serposcopeのコンテナを起動する

ここまで来たら、Serposcopeのコンテナを起動するだけです。
以下のコマンドを実行して、Serposcopeのコンテナを起動することができます。
docker compose up -d
これで、Serposcopeを起動することができます。

お疲れ様でした!
Serposcopeのコンテナを停止する
もしSerposcopeのコンテナが不要になれば、コンテナを停止します。
以下のコマンドを実行して、Serposcopeのコンテナを停止することができます。
docker compose down
これで、Serposcopeを停止することができます。
【まとめ】SerposcopeをDockerで起動する方法を紹介
ここまで読んでくれてありがとうございます!
今回は、SerposcopeをDockerで起動する方法を紹介しました。
SerposcopeをDockerで起動するためのステップをまとめておきますね。
- Serposcopeの設定ファイルを作成する
- SerposcopeのDockerfileを作成する
- SerposcopeのDocker Composeファイルを作成する
- Serposcopeを起動させるentrypoint.shを作成する
- Serposcopeのコンテナを起動する
- Serposcopeのコンテナを停止する
これで、SerposcopeをDockerで起動することができます。
ぜひ、この記事を参考にして、SerposcopeをDockerで起動してくださいね!