サービス終了する 「Pocket」 に代替するオンラインブックマークとして 「Wallabag」 をセルフホストする

いわゆる 「あとで読む」 系のサービスとして個人的に長年使わせてもらっていた 「Pocket」 がサービス終了するとのことで、その代替サービスとして、オープンソースで開発されている 「Wallabag」 をセルフホスティングすることにしたので、その手順を簡単にまとめます。

いわゆる 「あとで読む」 系のサービスとして個人的に長年使わせてもらっていた 「Pocket」 ですが、残念ながら 2025 年 7 月をもってサービス提供が終了することが発表されました。

外出先とかで、スマホでちょっと調べ物して、家帰ってからきちんと調べよう、みたいな場合に、「Pocket」 にとりあえず保存しておいて、家や職場の PC から開いたり、逆に PC 側からスマホに URL を渡したいときとかにも Firefox ならワンクリックで済むのでとても重宝していたんですが、まぁ終わっちまうということであれば仕方がない。代替サービスを探す必要があります。

同様のサービスは他にもあって、例えば有名どころだと、InstapaperRaindrop.io などが筆頭か。最近は、Obsidian が Obsidian Web Clipper という Web サイトを簡単に保存する機能をリリースしてたりもしますので、その辺も使えそう。

各サービス、それぞれ特徴があると思いますけども、記事の全文や一部を資料として保存しておきたい場合は 「Obsidian Web Clipper」 をすでに使っているので、それはそのまま運用し続けるとして、私が、Pocket でやっていたような、「一時的な URL の保存」 程度だとちょっと機能が大げさというか、もっと簡単に、シンプルにしたい。

じゃあ、もうそういうサービスを自前で立てちまうか、と思ったところで 「Wallabag」 が使いやすそうだったので、今回はこれをセルフホスティングすることにしました。

Wallabag とは?

Wallabag は、オープンソースで開発されている 「あとで読む」 ツールです。公式サーバを利用することもできますし、自分のサーバ上にセルフホスティングして運用することもできるため、データの完全なコントロールとプライバシー保護が可能です。

iOS / Android 向けの公式アプリや PWA (Progressive Web Apps) にも対応し、タグ付けや全文検索、ハイライト機能を備えつつ、シンプルな UI とカスタマイズ性の高さが特徴で、今回の私の用途にはちょうどよい選択肢でした。

セルフホスティングしても iOS / Android 向けの公式アプリから自分のサーバにログインすることで問題なく使えますし、カスタマイズしたい人にとっては API を使用して独自のアプリケーションを開発することが容易なのもよい点と言えるでしょう。

さくらの VPS (Ubuntu 22.04 LTS) 上で Wallabag をセルフホスティングする

すでに複数の Web サイトを運用しているさくらの VPS 上にセルフホスティングします。なので、今回の記事では、OS や Web サーバなどのセットアップについては省略します。

前提条件

  • OS: Ubuntu 22.04 LTS
  • Web サーバ: nginx
  • PHP: PHP 8.1.2
  • DB: MySQL 8.0.42

データベースは、SQLite も利用可能ですが、私の環境では MySQL がすでに運用中だったのでそれを利用しました。その他、git や make はインストール済みという前提です。

必要なパッケージのインストール

まず、Wallabag の動作に必要な PHP Extensions (PHP 拡張モジュール) とツールをインストールします。

まず、私の環境では composer (PHP の依存関係管理ツール) だけが入っていなかったので以下でインストールします。

sudo apt install -y composer

問題なくインストールされたか確認。

composer --version

次に PHP 拡張モジュールをインストールします。

sudo apt install -y php-cli php-fpm php-mysql php-sqlite3 php-curl php-gd php-mbstring php-xml php-zip php-intl php-bcmath php-tidy

MySQL データベースの準備

MySQL の設定をしますが、すでに必要なユーザーの作成などは終わっている前提で、Wallabag で使用する DB (wallabag) のみ新規作成しておきます。

sudo mysql -u [username] -p
CREATE DATABASE wallabag CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;

Wallabag のダウンロードとインストール

まずは今回 Wallabag をインストールするディレクトリに移動します。wallabag.example.com というホスト名で運用する前提。

cd /var/www/wallabag.example.com

次に Wallabag を git clone します。

sudo git clone https://github.com/wallabag/wallabag.git

所有者を変更しておきます。

sudo chown -R www-data:www-data wallabag

wallabag ディレクトリに移動してインストールを実行します。

cd wallabag
sudo -u www-data make install

インストールは、ウィザード形式で進みます。以下のような設問がくるので、ご自身の利用環境に合わせて設定していってください。

Some parameters are missing. Please provide them.
database_driver (pdo_mysql): pdo_mysql
database_host (127.0.0.1):
database_port (null): 3306
database_name (wallabag): wallabag
database_user (root): [your_db_username]
database_password (null): [your_password]
database_path (null):
database_table_prefix (wallabag_):
database_socket (null):
database_charset (utf8mb4):
domain_name ('https://your-wallabag-instance.wallabag.org'): https://wallabag.example.com
server_name ('Your wallabag instance'): Wallabag
mailer_dsn ('smtp://127.0.0.1'):
locale (en):
secret (CHANGE_ME_TO_SOMETHING_SECRET_AND_RANDOM): [your_secret]
twofactor_sender (no-reply@wallabag.org):
fosuser_registration (true): false
fosuser_confirmation (true): false
fos_oauth_server_access_token_lifetime (3600):
fos_oauth_server_refresh_token_lifetime (1209600):
from_email (no-reply@wallabag.org):
rss_limit (50):
rabbitmq_host (localhost):
rabbitmq_port (5672):
rabbitmq_user (guest):
rabbitmq_password (guest):
rabbitmq_prefetch_count (10):
redis_scheme (tcp):
redis_host (localhost):
redis_port (6379):
redis_path (null):
redis_password (null):
sentry_dsn (null):

secret (CHANGE_ME_TO_SOMETHING_SECRET_AND_RANDOM): については、ランダムな文字列を生成して指定しましょう。

fosuser_registration (true): false (ユーザー登録機能を無効に) としているのは、私の場合、個人で使用して管理ユーザー以外は不要だからですが、チームで使用する場合などは有効にしておきましょう。

続けて以下のような設問がきます。

It appears that your database already exists. Would you like to reset it? (yes/no) [no]:
> yes

初回インストールなので、DB の中身をリセットしてセットアップしてもらいます。yes で進むと、DB の初期設定が行われます。

Dropping database, creating database and schema...
Clearing the cache...

Database successfully setup.

続けて管理ユーザーの作成を行います。yes で進みましょう。

Would you like to create a new admin user (recommended)? (yes/no) [yes]:
> yes

以下のように設問がくるので、答えていくだけです。

Username [wallabag]:
> [username]

Password [wallabag]:
> [your_password]

Email [wallabag@wallabag.io]:
> [your_email_address]

Administration successfully setup.

これでインストールは完了です。簡単。

nginx のバーチャルホスト設定

最後に Wallabag 用のバーチャルホストを追加していきます。

まずは設定ファイルを作成します。

sudo vim /etc/nginx/sites-available/wallabag.example.com

設定ファイルの内容としては下記のような感じですが、私の環境では、fcgiwrap.conf などがすでに設定済みだったので読み込むだけにしています。もし、PHP をはじめてインストールして設定する場合などはこの辺も適時設定してください。

server {
    listen 80;
    listen [::]:80;
    server_name wallabag.example.com;
    
    root /var/www/wallabag.example.com/wallabag/web;
    index index.php;

    location / {
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    # 既存のfcgiwrap.confを読み込み
    include /etc/nginx/fcgiwrap.conf;
}

設定ファイルを保存したら、シンボリックリンクを作成して設定を有効化します。

sudo ln -s /etc/nginx/sites-available/wallabag.example.com /etc/nginx/sites-enabled/

nginx を再起動します。

sudo nginx -t
sudo systemctl reload nginx

サーバ証明書の設定 (Let's Encrypt)

最後に Let's Encrypt を使用してサーバ証明書を設定すれば終わりです。certbot はインストールされている前提。

sudo certbot --nginx -d wallabag.example.com

問題なく完了したら、ドメインにアクセスしてみましょう。Wallabag のログイン画面が表示されれば成功です。

Wallabag にログイン

Wallabag のインストールと設定が正しく行われていれば、ログイン画面が表示されます。設定時に作成した管理ユーザーの情報でログインしましょう。

Wallabag のログイン画面

無事ログインするとクイックスタート画面が表示されます。

Wallabag のクイックスタート画面

設定画面から、言語を 「日本語」 にすれば日本語化されます。その他、テーマを選択したりもできますのでお好みで。

Wallabag の設定画面

Firefox のアドオンChrome のアドオンiOS アプリやAndroid アプリなどから利用するには、API 設定から 「Client ID」 と 「クライアントシークレット」 の発行が必要です。

クライアント API 設定画面から最初のアプリケーションを登録しましょう。

Wallabag のクライアント API 管理画面

「クライアントの名前」 だけ入力して 「新しいクライアントを作成」 すると、次の画面で 「Client ID」 と 「クライアントシークレット」 が表示されますので、これを控えておきます。

wallabag-selfhost-05.png

ブラウザアドオンやスマートフォンアプリで Wallabag にログインする際、先ほど控えた 「Client ID」 と 「クライアントシークレット」 を入力し、ログインするとブラウザやアプリから簡単に URL を登録することが可能になります。

ということで、しばらくこれで運用してみようと思います。

記事をここまで御覧頂きありがとうございます。
この記事が気に入ったらサポートしてみませんか?