前回は「あとで読む」サービスであるPocketの移行先としてエックスサーバーのサブドメインを利用してwallabagを利用できるようにしました。
この方法ではエックスサーバーで独自ドメインを運用している必要がありました。
そこで今回は独自ドメインを持っていない方でもwallabagを使えるようにしてみたいと思います。
Pocketとwallabagについて
Pocketはブックマークするほどでもない気になるWebサイトをストックするのに重宝する「あとで読むサービス」です。
私もちょいちょい利用していたのですが、先日2025年7月8日にサービス終了することがアナウンスされました。
そこで移行先として活用できそうなのがwallabagです。wallabagはオープンソースで開発されている「あとで読む」サービスで、自分のサーバーに設置(セルフホスト)することで制限なく利用できます。
この辺の事情については前回の記事で紹介しているので、気になる方は参照してください。

エックスサーバーへのwallabagの導入方法
エックスサーバーにwallabagをインストールするには2つのパターンがあります。
-
サブドメインにインストールする
yourdomain.com
という独自ドメインでWebサイト(WordPressを含む)を運営している場合に、wallabag.yourdomain.com
というサブドメインを作成し、このサブドメインでアクセスできるようにインストールする方法です。
独自ドメインを設定しているのであればこの方法がオススメです。 -
サブディレクトリにインストールする
yourdomain.com
という独自ドメインでWebサイト(WordPressを含む)を運営している場合に、サブディレクトリyourdomain.com/wallabag/
にインストールする方法です。
エックスサーバーでデフォルトで割り当てられる初期ドメイン(サーバID.xsrv.jp
)を利用している場合はサブドメインが作成できないためこの方法になります。
この記事ではサブディレクトリにインストールする方法について紹介します。
サブドメインにインストールする方法については前回の記事を参照してください。
ステップ1: エックスサーバーの確認
インストール作業を始める前にエックスサーバーの基本的な設定をします。
-
SSH接続の設定・確認
-
ドメインとドキュメントルートの確認
- エックスサーバーの「サーバーパネル」にログインします。
- 「ドメイン」カテゴリ内の「ドメイン設定」を選択します。
- 表示されたドメインからwallabagをインストールしたいドメインの「詳細」を選択します。
独自ドメインを設定していなくても、エックスサーバーではデフォルトのドメイン(サーバーID.xsrv.jp)が提供されているはずです。
独自ドメインを所有していない方は、このデフォルトドメインを選びましょう。
- これで表示される「ドメイン」「ドキュメントルート」「URL」をメモしておきます。
なお、デフォルトの状態では表示されたURLにアクセスすると次のように表示されます。
以降ではwallabagをインストールしたいドメイン名をyourdomain.com
とします。
-
PHPバージョンの確認・変更:
なお、エックスサーバーの場合、しばらく操作していないとSSHが強制的に切断されてしまいます。操作できないなと思ったら、再接続してみてください。
ステップ2: データベースの準備
wallabagが使用するデータベースを作成します。
-
エックスサーバーの「サーバーパネル」にログインします。
-
データベースの情報を次のように入力し・選択し、新しいデータベースを作成(追加)します。
- データベース名: 任意の名前(例:
wallabag
) - 文字コード:
UTF-8 (utf8mb4)
- データベース名: 任意の名前(例:
-
ユーザーの情報を次のように入力し、新しいユーザを作成します。
- MySQLユーザID: 任意の名前(例:
wuser
) - パスワード: 強力なパスワードを設定し、必ず控えておきます。
- メモ: 任意のテキスト
- MySQLユーザID: 任意の名前(例:
-
「ユーザーを追加」を選択したあと、次のように設定しデータベースにユーザを追加します。
- 設定方法:「既存MySQLユーザーから選択」を選択
- MySQLユーザID: 先度作成したユーザを選択
以上でデータベースの準備は完了です。
なお、「データベース名」「MySQLユーザID」「MySQLユーザIDのパスワード」は後で必要になりますので、控えておきましょう。
ステップ3: メールアカウントの作成
wallabagからの通知などの送信元になるメールアカウントと、二要素認証の送信元となるメールアカウントをwallabag用のドメインに作成しましょう。
ここでは次のメールアドレスを作成します。
用途 | メールアドレス |
---|---|
wallabagの管理者 (通知メール等の送信元) | wallabag-admin@yourdomain.com |
二要素認証の送信元 | wallabag-auth@yourdomain.com |
-
エックスサーバーの「サーバーパネルにログイン」します。
-
作成するメールアカウント情報を次のように入力し、新しいメールアカウントを作成します。
- メールアカウント: 作成したいメールアドレスになるようにアカウント名を入力しとドメインを選択
- パスワード: 強力なパスワードを作成し、必ず控えておきます。ただしパスワードには
@
や:
、?
などの特殊文字は含まないほうが無難です。 - 容量: デフォルトの「2000MB」で問題ありません。もっと少なくてもよいです。
- メモ: 任意のテキスト
-
同様に二要素認証の送信元となるメールアカウントも作成します。
以上でメールアカウントの準備は完了です。
ステップ4: PHPの設定とComposer 2のインストール
wallabagをインストールする前に、PHP関係の設定をしておきます。
やることはphp
でPHP 8.2.22が呼び出せるようにすることと、PHPのパッケージ管理システムであるComposerをインストールすることです。
エックスサーバーにもComposerはインストールされていますが、バージョンが1.10.27と古く、wallabagのインストールには使用できません。そこで最新版(この記事作成時点では2.8.9)をインストールします
-
エックスサーバーにSSHで接続します。
-
環境変数PATHに
/home/ユーザ名/bin
が含まれることを確認します。echo $PATH
もし含まれていない場合は、
.bash_profile
の末尾にexport PATH=$HOME/bin:$PATH
を追加して、source ~/.bash_profile
を実行します。 -
/usr/bin/php8.2へのシンボリックリンクを/home/ユーザ名/binにphpという名前で作成します。
ln -s /usr/bin/php8.2 /home/ユーザ名/bin/php
-
念の為、PATHを再読込します。
hash -r
-
作業用のディレクトリを作成します。ここではtmpを作成します。
mkdir -p /home/ユーザ名/tmp cd /home/ユーザ名/tmp
-
Composer 2のインストーラーをダウンロードします。
php8.2 -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
-
Composer 2をcomposerというファイル名で
/home/ユーザ名/bin
にインストールしますphp8.2 composer-setup.php --install-dir=/home/ユーザ名/bin --filename=composer
-
念の為、一度PATHを再読込しておきましょう。
hash -r
ここまで来たらphp
とcomposer
のバージョンを確認しておきましょう。
$ php --version
PHP 8.2.22 (cli) (built: Aug 5 2024 10:25:13) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.22, Copyright (c) Zend Technologies
$ composer --version
Composer version 2.8.9 2025-05-13 14:01:37
PHP version 8.2.22 (/opt/php-8.2.22/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.
このようにphp
のバージョンが8.2.22で、composer
のバージョンが2.xであればOKです。
ステップ5: wallabagのダウンロードと修正
事前準備として最新のwallabagをダウンロードするための「タグ」を確認しておきましょう。
wallabagのリリースは下記に記載されています。
先頭に表示されるものが一番新しいリリースです。その左側にあるタグアイコンの隣の文字列がこのリリースを表す「タグ」です。
この記事作成時点での最新リリースは「2.6.13」です。
また、wallabagのファイルはドメインのドキュメントルートではなく、ドキュメントルートの外に置くようにします。
-
エックスサーバーにSSHで接続します。
-
wallabagを配置するディレクトリ(ドキュメントルートの親ディレクトリ)に移動します。
cd $HOME/ユーザ名/yourdomain.com/
-
git
コマンドを使って最新リリースを取得します。git clone https://github.com/wallabag/wallabag.git -b 2.6.13
-b
オプションで指定している2.6.13
は、先ほど確認した最新リリースのタグです
これでwallabagというディレクトリが作成され、その中にwallabagのファイルが配置されたことになります。
次に、エックスサーバーだとwallabagのインストーラーでエラーが出てしまうので、エラーが出ないように修正します。
-
wallabagのスクリプトが配置されているディレクトリに移動します。
cd wallabag/scripts/
-
vi
でinstall.sh
を開きます。vi install.sh
-
最後から2行目を次のように修正します。
SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist --ignore-platform-reqs
(行の末尾に
--ignore-platform-reqs
を追加します) -
修正した
install.sh
を保存して、vi
を終了します。
vi
の操作が苦手な方は、WinScpで接続してWindowsで編集するなど工夫をしてください。
これで、エックスサーバーの環境でもインストールスクリプトが最後まで実行できるようになりました。
ステップ6: インストール
インストールもエックスサーバーにSSH接続して行いますが、インストールの途中で情報を入力する際に時間がかかってしまうと、SSHのセッションが切断されてしまいます。
入力すべき情報を確認しておき、コピペできるようにあらかじめ用意することをオススメします。
使用しているPHPのバージョンによっては「PHP Deprecated: …」という警告が表示されることがありますが、無視をしてよいようです。
-
エックスサーバーにSSHで接続します。
-
wallabagを配置したディレクトリに移動します。
cd $HOME/yourdomain.com/wallabag
-
インストーラーを実行します。
make install
-
必要なPHPパッケージがダウンロードされた後、自分の環境に合わせたパラメーターを入力します。
入力が必要な項目は次のとおりです。これらの項目以外は、とくに値を入力せずEnterキーだけを押せばOKです- database_driver: 入力不要
- database_host: 入力不要
- database_port: 入力不要
- database_name:
作成したデータベース名
- database_user:
作成したMySQLユーザID
- database_password:
作成したMySQLユーザIDのパスワード
- database_path: 入力不要
- database_table_prefix: 入力不要
- 任意の文字列に変更してもよいです。
- database_socket: 入力不要
- database_charset: 入力不要
- domain_name:
https://yourdomain.com/wallabag
- 末尾の
/
は不要です。
- 末尾の
- server_name:
任意の文字列
My wallabag
等で問題ありません。
- mailer_dsn:
smtp://wallabag-admin%40yourdomain.com:パスワード@送信サーバー:465?encryption=ssl&auth_mode=plain
- メールアドレスの
@
記号はURLエンコードして%40
に置き換えます。 - パスワードに
@
や:
、?
などの特殊文字が含まれる場合は、URLエンコードする必要があります。 送信サーバー
は、「サーバーパネル」の「メールアカウント設定」で「メールソフト設定」を選択すると表示されます。
- メールアドレスの
- locale:
ja
- 日本語を用いる場合。英語のままが希望であれば入力不要です。
- secret:
32文字以上のランダムな文字列
openssl rand -base64 32
で生成可能です。
- twofactor_sender:
wallabag-auth@yourdomain.com
- 作成した二要素認証の送信元メールアドレスを入力します。
- fosuser_registration:
false
true
の場合は誰でも自由に新しいアカウントを作成できてしまいますので、個人用ならfalse
がオススメです。
- fosuser_confirmation:
false
fosuser_registration
をfalse
にしているのならば、ここもfalse
でOKです。
- fos_oauth_server_access_token_lifetime: 入力不要
- fos_oauth_server_refresh_token_lifetime: 入力不要
- from_email:
wallabag-admin@yourdomain.com
- 作成したwallabagの管理者メールアドレスを入力します。
- rss_limit: 入力不要
- rabbitmq_host: 入力不要
- rabbitmq_port: 入力不要
- rabbitmq_username: 入力不要
- rabbitmq_password: 入力不要
- rabbitmq_prefetch_count: 入力不要
- redis_scheme: 入力不要
- redis_host: 入力不要
- redis_port: 入力不要
- redis_path: 入力不要
- redis_password: 入力不要
- sentry_dsn: 入力不要
-
It appears that your database already exists. Would you like to reset it? (yes/no)
と聞かれたら、yes
を入力します。
データベースがすでに存在する場合に表示されます。新規インストールの場合は、通常yes
で問題ありません。 -
Would you like to create a new admin user (recommended)? (yes/no)
と聞かれた場合はyes
を入力し、管理者ユーザーの情報を入力します。
この管理者ユーザーをwallabagを管理するための特別な権限を持ったユーザーです。- Username:
管理者ユーザー名
(admin
やwallabag
など任意の文字列でOK) - Password: 入力不要
- Email:
wallabag-admin@yourdomain.com
(管理者メールアドレス)
- Username:
管理者ユーザーのパスワードは、本来はこの時点で独自のものを設定したほうが良いのですが、私の環境ではパスワード入力中の文字が表示されず、正しく入力できているか確認が困難でした。
そこで管理者ユーザーのパスワードは入力せずにデフォルトのものを用い、後ほど独自のパスワードに変更することにしました。
次にPHPの非同期処理を無効化するために、wallabagのディレクトリにあるapp/config/config_prod.ymlを次のように
修正します。
修正するポイントは、framework: messenger: enabled: false
の部分になります。
imports:
- { resource: config.yml }
framework:
assets:
# json_manifest_path: '%kernel.project_dir%/web/bundles/wallabagcore/manifest.json'
messenger:
enabled: false
#doctrine:
# orm:
# metadata_cache_driver: apc
# result_cache_driver: apc
# query_cache_driver: apc
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console
sentry:
dsn: "%sentry_dsn%"
これはエックスサーバーにはメッセージキューを使った非同期処理システムが利用できないので、明示的に利用しないように設定しています。
最後に$HOME/yourdomain.com/wallabag/web
にwallabagとして公開すべきファイルが置かれているので、このディレクトリのファイルを見えるようにします。
そのためにはドキュメントルート($HOME/yourdomain.com/public_html/
)のサブディレクトリwallabag/
へシンボリックリンクを作成します。
-
ドキュメントルートにサブディレクトリ
wallabag
を作成してそこに移動します。mkdir -p $HOME/yourdomain.com/public_html/wallabag cd $HOME/yourdomain.com/public_html/wallabag
-
wallabagのwebディレクトリの中身へのシンボリックリンクを作成します。
ln -s ../../wallabag/web/* . ln -s ../../wallabag/web/.htaccess .htaccess
-
不要なシンボリックリンクを削除します。
rm app_dev.php
-
念のためキャッシュを再構築しておきます。
cd $HOME/yourdomain.com/wallabag php bin/console cache:clear --env=prod --no-warmup
ここまで来たらWebブラウザでwallabagをインストールしたディレクトリ(http://yourdomain.com/wallabag
)にアクセスしてみましょう。
次のような画面が出たらインストール成功です。
ステップ7: 初期設定とユーザーの作成
wallabagのインストールに成功したら、初期設定をします。
まずは管理者ユーザーのパスワードを強力なものに変更しましょう。
-
ブラウザでwallabagをインストールしたURLにアクセスします。(例:
http://yourdomain.com/wallabag
) -
作成した管理者アカウントでwallabagにログインします。このとき「ログイン維持」のチェックボックスは外しておいてOKです。
ログインに成功すると次のような画面が表示されます。
-
まず管理者ユーザのパスワードを変更します。
管理者ユーザーのとは別に普段遣い用のアカウントも作成しておきます。
ユーザーの作成に成功したら、いったんログアウトして、作成したユーザでログインできることを確認しましょう。
新しく作成したユーザーでログインし、メニューを確認してみると、さきほどまでのメニューと若干違うことがわかると思います。
これは新たに作成したユーザーは管理者ユーザーではなく、一般ユーザーであるのためです。
さよならPocket、こんにちはwallabag!データの移行方法
Pocketのデータを移行する前に、Pocket上で不要なデータは削除しておくことをオススメめします。
移行データが多いほど処理時間がかかり失敗する可能性が高くなります。
Pocketに保存していた大量の記事も、wallabagに移行できます。
データの移行にはPocketのAPIを使う方法と、Pocketからファイルでエクスポートしてwallabagにインポートする方法があります。
両方試した感じでは、ファイルでクスポートしたものをwallabagにインポートするほうが、安定しているような気がします。
PocketのAPIを使う方法で取りこぼしがあった場合は、ファイルを経由を試してみてください。
PocketのAPIを使ってみる
Wallabagの公式ではPocket APIを紹介していますので、この記事でもまずPocketのAPIを使ってみます。
-
Pocketの開発者サイトで、新しいアプリケーションを作成します。
- 開発者サイトにアクセスし、Pocketのアカウントでログインします。
- 「Create an Application」という画面が表示されたら必要事項を入力します。
「Application Name」と「Application Description」は任意の文字列で問題ありませんが、「Permissions」と「Platforms」は、このスクリーンショットのように「Retrieve」と「web」を選択してください。 - 「CONSUMER KEY」を保存します。
「CREATE APPLICATION」を選択すると次の画面のようになります。ここで表示される「CONSUMER KEY」は後ほど使用するのでコピーしておきます。
-
wallabagに戻り、普段遣い用ユーザーでログインします。
-
メニューから「設定」を選択して「コンテンツをインポートするPocketのコンシューマーキー」の欄に、さきほど取得した「CONSUMER KEY」を入力して保存します。
-
「許可」を選択したら画面は変わりませんが、データのインポート処理が行われます。
これはエックスサーバーではPHPの非同期実行が行えないためです。
インポートが完了すると、インポート前の画面に戻ります。左側の記事数が増えていればインポート成功です。
インポート処理が実行されているか心配な場合は、エックスサーバーにSSHで接続し、ログファイルを確認してみてください。
cd $HOME/yourdomain.com/wallabag
tail -f var/logs/prod.log
ログがどんどん更新されていくようなら、インポートが行われています。
また、あまり長時間かかってしまうとブラウザに「504 Gateway Timeout」が表示されてしまいます。
この場合も上記のようにエックスサーバーにSSHしてログを確認してみてください。ログの更新が止まったあたりでwallabagにアクセスするとインポートされた状態で表示されるはずです。
エクスポートしたファイルを利用してみる
Pocketでは保存している記事をファイルとしてエクスポートできます。
サポートしているファイルフォーマットはHTMLとCSVがあるようですが、私の環境ではCSVファイルしか選択できなかったため、ここではCSVファイルでの手順を紹介します。
まずはCSVファイルでPocketデータをエクスポートしましょう。
-
Pocketのデータをファイルでエクスポートために下記のURLにアクセスします。
http://getpocket.com/export -
24時間以内に次のようなメールが来るので「click to download」を選択してCSVファイルをダウンロードします。
ダウンロードしたファイルはpocket.zip
というファイルになっていると思います。このファイルを展開すると、中にCSVファイルが入っているはずです。
無事にCSVファイルを入手できたらこのファイルをwallabagにインポートしてみましょう。
-
wallabagに戻り、普段遣い用ユーザーでログインします。
-
次の画面が表示されたら「ファイル」でさきほど取得したCSVファイルを選択し、「ファイルをアプロード」を選択します。
これで画面は変わりませんが、データのインポート処理が行われます。
これはエックスサーバーではPHPの非同期実行が行えないためです。
インポートにかかる時間は当然ながらPocketに保存している記事数に依存します。
インポート処理が実行されているか心配な場合は、エックスサーバーにSSHで接続し、ログファイルを確認してみてください。
cd $HOME/yourdomain.com/wallabag
tail -f var/logs/prod.log
ログがどんどん更新されていくようなら、インポートが行われています。
また、あまり長時間かかってしまうとブラウザに「504 Gateway Timeout」が表示されてしまいます。
この場合も上記のようにエックスサーバーにSSHしてログを確認してみてください。ログの更新が止まったあたりでwallabagにアクセスするとインポートされた状態で表示されるはずです。
いつでもどこでも!スマートフォン(Android)との連携
セルフホストしたwallabagも、スマートフォンアプリと連携することで、外出先でも快適に利用できます。
Android用wallabagクライアントアプリ
Google Playストアで「wallabag」と検索すると、公式のwallabagアプリが見つかります。
-
アプリをインストールし、起動します。
-
初回起動時に設定画面が表示されます。最初の画面では「次へ」を選択します。
-
次の画面では「その他」を選択してから「次へ」を選択します。
-
基本的な構成の画面ではセルフホストしたwallabagの情報を入力したあとに「接続」を選択します。
- wallabag URL: セットアップしたwallabagのURLを入力します (例:
https://yourdomain.com/wallabag
)。 - ユーザー名: wallabagのユーザー名。
- パスワード: wallabagのパスワード。
- wallabag URL: セットアップしたwallabagのURLを入力します (例:
これで、スマートフォンから記事の閲覧や保存ができるようになります。
ブラウザ拡張機能
PCのブラウザ(Chrome, Firefoxなど)からも簡単に記事を保存できるように、wallabagのブラウザ拡張機能も用意されています。
たとえば、Chromeの場合は「Wallabagger」という拡張機能があります。
ここではChrome系のブラウザでwallabagを利用する手順を紹介します。
-
APIクライアントを作成します。
拡張機能から自分のアカウントのwallabagにアクセスするためのAPIクライアントを作成します。 -
ブラウザでWallabagger拡張機能をインストールします
-
インストール後に次の画面が表示されるので、wallabag URLにセットアップしたwallabagのURLを入力して、「URLを確認」を選択します。
-
次のような画面が表示されたら「許可」を選択します。
-
「クライアントID」・「クライアントシークレット」・「ユーザー名」・「パスワード」を入力して「トークンを取得」を選択します。
なお、クライアントIDなどを入力する欄が表示されない場合は、wallabag URLを再度入力して「URLを確認」してみてください。あるいは、「拡張機能のオプション」でこの画面を開き直してもうまくいく場合があります。
-
画面の右側で「Wallabag APIトークンが「付与済み」になれば設定完了です。
Wallabag APIトークンが付与済みにならない場合は、認証情報を再度入力して「トークンを取得」を選択し直してみてください。
これでブラウザ拡張機能の導入完了です。
あとはツールバーのアイコンを選択すれば、そのページをwallabagに保存できるようになります。
もちろん、保存時にタグを付けたりすることも可能です。
詳細は割愛しますが、Firefoxでも同様の手順で拡張機能が導入可能ですので、Firefoxをご利用の方は試してみてください。
まとめ – 自分だけの「あとで読む」環境を手に入れよう
Pocketのサービス終了は残念ですが、これを機にwallabagをエックスサーバーにセルフホストすることで、以下のような大きなメリットが得られます。
- 完全なデータ主権: あなたの記事データは、あなた自身のサーバーにあります。
- コスト削減: 有料プランの月額料金から解放されます(サーバー代はかかりますが)。
- 無制限の機能: 基本的にwallabagの全機能を利用できます。
- プライバシー保護: 外部サービスに閲覧履歴を渡す必要がありません。
サブディレクトリにも導入できるため、独自ドメインを所有していない場合でもセルフホストが可能です。
設定には少し手間がかかるかもしれませんが、一度構築してしまえば、自分だけの快適で安全な「あとで読む」環境が手に入ります。この記事が、Pocketからの移行を考えている方や、自分だけの情報収集基盤を構築したいと願うすべての方の一助となれば幸いです。
ぜひ、wallabag + エックスサーバーで、新しいデジタルリーディングライフを始めてみてください!
コメント