インストールガイド · 6 min read · Dec 19, 2025

Ubuntu 22.04にWallabagをインストールする方法

Wallabagは、後で読むためのサービスです。ウェブページを保存して、ゆっくりとしたペースで後で読むことができます。PocketやInstapaperなど、同様のサービスはたくさんありますが、自分のサーバーにインストールされたサービスを持つことははるかに良いです。なぜなら、ビジネスが終了してリンクが削除されることがないからです。

このチュートリアルでは、Ubuntu 22.04を実行しているサーバーにWallabagをインストールして設定する方法を説明します。また、Wallabagを実行するために必要なNginx、MySQL、Composer、PHPの設定方法も説明します。

前提条件

  • Ubuntu 22.04を実行しているサーバー。
  • sudo権限を持つ非rootユーザー。
  • wallabag.example.comのような完全修飾ドメイン名(FQDN)。
  • すべてが更新されていることを確認してください。 $ sudo apt update $ sudo apt upgrade
  • システムに必要な少数のパッケージ。 $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y これらのパッケージのいくつかは、すでにシステムにインストールされている可能性があります。

ステップ1 - ファイアウォールの設定

最初のステップはファイアウォールの設定です。Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。

ファイアウォールが実行中かどうかを確認します。

$ sudo ufw status

次の出力が得られるはずです。

Status: inactive

SSHポートを許可して、ファイアウォールを有効にするときに現在の接続が切断されないようにします。

$ sudo ufw allow OpenSSH

HTTPおよびHTTPSポートも許可します。

$ sudo ufw allow http
$ sudo ufw allow https

ファイアウォールを有効にします。

$ sudo ufw enable
コマンドは既存のssh接続を中断する可能性があります。操作を続行しますか(y|n)? y
ファイアウォールはアクティブで、システム起動時に有効になります

再度ファイアウォールの状態を確認します。

$ sudo ufw status

似たような出力が表示されるはずです。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

ステップ2 - PHPとその拡張機能のインストール

Ubuntu 22.04には、少し古いPHP 8.1.2バージョンが付属しています。最新のPHP 8.1バージョンをOndrejのPHPリポジトリを使用してインストールします。

$ sudo add-apt-repository ppa:ondrej/php

次に、Wallabagに必要なPHPとその拡張機能をインストールします。

$ sudo apt install php8.1-fpm php8.1-mysql php8.1-bcmath php8.1-xml php8.1-zip php8.1-curl php8.1-mbstring php8.1-gd php8.1-tidy php8.1-intl php8.1-cli 

インストールを確認します。

$ php --version
PHP 8.1.16 (cli) (built: Feb 14 2023 18:35:37) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies

ステップ3 - Composerのインストール

ComposerはPHPの依存関係管理ツールであり、Wallabagのインストールに必要です。

次のコマンドを実行してComposerバイナリをダウンロードします。WallabagはComposer 2.2 LTSでのみ動作するため、コマンドを適宜修正しました。

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

バイナリを/usr/local/binディレクトリに移動してComposerをインストールします。

$ sudo mv composer.phar /usr/local/bin/composer

そのバージョンを確認してインストールを確認します。

$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40

ステップ4 - MySQLのインストール

Ubuntu 22.04には最新のMySQLバージョンが付属しています。単一のコマンドでインストールできます。

$ sudo apt install mysql-server

MySQLのバージョンを確認します。

$ mysql --version
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

このステップはMySQLバージョン8.0.28以上に必要です。MySQLシェルに入ります。

$ sudo mysql

次のコマンドを実行してrootユーザーのパスワードを設定します。数字、大文字、小文字、特殊文字の組み合わせが含まれていることを確認してください。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

シェルを終了します。

mysql> exit

MySQLのセキュアインストールスクリプトを実行します。

$ sudo mysql_secure_installation

最初にrootパスワードを求められます。入力してください。次に、Validate Password Componentをインストールするかどうかを尋ねられます。これはMySQLで使用されるパスワードの強度をチェックします。インストールするにはYを押します。次に、パスワード検証ポリシーのレベルを設定するように求められます。最も強力な2を選択してください。

MySQLサーバーのデプロイメントを保護しています。

ユーザーrootのパスワードを入力してください:

VALIDATE PASSWORD COMPONENTはパスワードをテストしてセキュリティを向上させるために使用できます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。VALIDATE PASSWORDコンポーネントを設定しますか?

はいの場合はy|Yを押し、いいえの場合は他のキーを押してください:Y

パスワード検証ポリシーの3つのレベルがあります:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

0 = LOW、1 = MEDIUM、2 = STRONGを入力してください:2
既存のパスワードをrootに使用します。

推定されるパスワードの強度:100

次に、rootパスワードを変更しないことを拒否するためにNを入力します。また、匿名ユーザーを削除し、リモートrootログインを禁止し、テストデータベースを削除し、特権テーブルを再読み込みするためにYを入力します。

rootのパスワードを変更しますか?(はいの場合はy|Y、いいえの場合は他のキーを押してください):N

 ... スキップ中。
デフォルトでは、MySQLインストールには匿名ユーザーがあり、ユーザーアカウントを作成しなくても誰でもMySQLにログインできます。これはテスト専用であり、インストールをスムーズに進めるためのものです。生産環境に移行する前に削除する必要があります。

匿名ユーザーを削除しますか?(はいの場合はy|Y、いいえの場合は他のキーを押してください):Y
成功。

通常、rootは「localhost」からのみ接続を許可されるべきです。これにより、誰かがネットワークからrootパスワードを推測できなくなります。

リモートでのrootログインを禁止しますか?(はいの場合はy|Y、いいえの場合は他のキーを押してください):Y
成功。

デフォルトでは、MySQLには「test」という名前のデータベースがあり、誰でもアクセスできます。これもテスト専用であり、生産環境に移行する前に削除する必要があります。

テストデータベースとそのアクセスを削除しますか?(はいの場合はy|Y、いいえの場合は他のキーを押してください):Y
 - テストデータベースを削除中...
成功。

 - テストデータベースの特権を削除中...
成功。

特権テーブルを再読み込みすると、これまでに行ったすべての変更が即座に反映されます。

特権テーブルを今すぐ再読み込みしますか?(はいの場合はy|Y、いいえの場合は他のキーを押してください):Y
成功。

すべて完了!

ステップ5 - MySQLの設定

MySQLシェルにログインします。プロンプトが表示されたらrootパスワードを入力します。

$ sudo mysql -u root -p

サンプルデータベースを作成します。

mysql> CREATE DATABASE wallabag;

SQLユーザーアカウントを作成します。

mysql> CREATE USER 'wallabaguser'@'localhost' IDENTIFIED BY 'Your_password2';

ユーザーにデータベースへのすべての特権を付与します。

mysql> GRANT ALL PRIVILEGES ON wallabag.* TO 'wallabaguser'@'localhost';

ユーザー特権をフラッシュします。

mysql> FLUSH PRIVILEGES;

シェルを終了します。

mysql> exit

ステップ6 - Nginxのインストール

Ubuntu 22.04には古いバージョンのNginxが付属しています。最新バージョンをインストールするために公式のNginxリポジトリをダウンロードする必要があります。

Nginxの署名キーをインポートします。

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginxの安定版のリポジトリを追加します。

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

システムリポジトリを更新します。

$ sudo apt update

Nginxをインストールします。

$ sudo apt install nginx

インストールを確認します。

$ nginx -v
nginx version: nginx/1.22.1

Nginxサーバーを起動します。

$ sudo systemctl start nginx

ステップ7 - SSLのインストール

SSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得できます。Snapdバージョンを使用します。

Ubuntu 22.04にはデフォルトでSnapdがインストールされています。次のコマンドを実行してSnapdのバージョンが最新であることを確認します。

$ sudo snap install core && sudo snap refresh core

Certbotをインストールします。

$ sudo snap install --classic certbot

次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリにシンボリックリンクを作成することで実行できることを確認します。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

次のコマンドを実行してSSL証明書を生成します。

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wallabag.example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/wallabag.example.comディレクトリに証明書をダウンロードします。

Diffie-Hellmanグループ証明書を生成します。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Certbotの更新スケジューラーサービスを確認します。

$ sudo systemctl list-timers

snap.certbot.renew.serviceが実行予定のサービスの1つとして表示されます。

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

SSL更新が正常に機能しているかどうかを確認するために、プロセスのドライランを行います。

$ sudo certbot renew --dry-run

エラーが表示されなければ、すべて設定完了です。証明書は自動的に更新されます。

ステップ8 - Wallabagのインストール

/var/www/wallabag/htmlディレクトリを作成します。

$ sudo mkdir /var/www/html/wallabag -p

Wallabagの最新バージョンをダウンロードします。

$ wget https://wllbg.org/latest-v2-package

アーカイブを抽出します。

$ tar xzf latest-v2-package

抽出したディレクトリから先ほど作成したディレクトリにファイルを移動します。Wallabagの最新バージョンはGitHubのリリースページで確認できます。このチュートリアル執筆時点での最新バージョンは2.5.4です。

$ sudo mv wallabag-2.5.4/* /var/www/html/wallabag

アセットディレクトリを作成します。

$ sudo mkdir /var/www/html/wallabag/data/assets

/var/www/html/wallabagディレクトリの権限を現在ログインしているユーザーに変更します。

$ sudo chown -R $USER:$USER /var/www/html/wallabag

ディレクトリに移動します。

$ cd /var/www/html/wallabag

例のファイルをコピーしてparameters.ymlファイルを作成します。

$ cp app/config/parameters.yml.dist app/config/parameters.yml

Wallabagの設定を開始する前に、秘密鍵を生成します。後で使用するために鍵をメモしておきます。

$ openssl rand -base64 32
QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=

パラメータファイルを編集するために開きます。

$ nano app/config/parameters.yml

次のセクションを見つけて、データベースの資格情報を入力します。MySQLのデータベースポートは3306です。

..........
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: 3306
    database_name: wallabag
    database_user: wallabaguser
    database_password: Your_password2

サーバーの説明とドメイン名を入力します。

    domain_name: https://wallabag.example.com
    server_name: "Howtoforge Wallabag"

SMTPの詳細を入力します。この場合、Amazon SESサービスを使用しています。

    mailer_transport:  smtp
    mailer_user:       YOUR_AES_USERNAME
    mailer_password:   YOUR_AES_PASSWORD
    mailer_host:       email-smtp.us-west-2.amazonaws.com
    mailer_port:       587
    mailer_encryption: tls

前に生成した秘密鍵を入力します。二要素認証を維持したい場合は、次の設定が適用されていることを確認してください。ユーザー登録を無効にしたい場合は、fouser_registrationの値をfalseに設定します。fouser_confirmation変数はtrueに設定されており、すべてのユーザー登録はメールで確認される必要があります。from_email変数の値をお好みのメールアドレスに変更してください。

    # A secret key that's used to generate certain security-related tokens
    secret: QLV/GpZwDobQbyQZQ15FkM1Hvt+ZFJZXw8GW9F4KR3o=

    # two factor stuff
    twofactor_auth: true
    twofactor_sender: [email protected]

    # fosuser stuff
    fosuser_registration: true
    fosuser_confirmation: true
.....
    from_email: [email protected]
.....

Redis、RabbitMQ、Sentry設定に関連するさらなるセントリーがあります。必要に応じて、指定されたパッケージをインストールした後にそれらを設定できます。

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Composerを使用してWallabagに必要な依存関係をダウンロードしてインストールします。

$ SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist

Wallabagコマンドラインツールを使用してインストールを完了します。

$ php bin/console wallabag:install --env=prod

データベースとそのスキーマをリセットするかどうかを尋ねられます。両方ともnoと入力します。次に、管理者アカウントを作成するかどうかを尋ねられます。続行するにはyesと入力し、アカウントのユーザー名、パスワード、メールアドレスを入力します。

wallabag installer
==================

Step 1 of 4: Checking system requirements.
------------------------------------------

 ------------------------ -------- ---------------- 
  Checked                  Status   Recommendation  
 ------------------------ -------- ---------------- 
  PDO Driver (pdo_mysql)   OK!                      
  Database connection      OK!                      
  Database version         OK!                      
  curl_exec                OK!                      
  curl_multi_init          OK!                      
 ------------------------ -------- ---------------- 

 [OK] Success! Your system can run wallabag properly.                                                                    
                                                                                                                         

Step 2 of 4: Setting up database.
---------------------------------

 データベースはすでに存在するようです。リセットしますか?(はい/いいえ)[いいえ]:
 > いいえ

 スキーマが含まれているようです。リセットしますか?(はい/いいえ)[いいえ]:
 > いいえ

 キャッシュをクリア中...

 データベースが正常に設定されました。

Step 3 of 4: Administration setup.
----------------------------------

 新しい管理ユーザーを作成しますか(推奨)?(はい/いいえ)[はい]:
 > はい

 ユーザー名 [wallabag]:
 > navjot

 パスワード [wallabag]:
 > 

 メール [[email protected]]:
 > [email protected]

 管理が正常に設定されました。

Step 4 of 4: Config setup.
--------------------------

 設定が正常に設定されました。
                                                                                                 
 [OK] wallabagが正常にインストールされました。                                                                 
                                                                                                                      
 [OK] ウェブサーバーを設定できます。詳細はhttps://doc.wallabag.orgを参照してください。

ディレクトリの権限をNginxに戻します。

$ sudo chown -R nginx:nginx /var/www/html/wallabag

ステップ9 - NginxとPHPの設定

PHP-FPMの設定

/etc/php/8.1/fpm/pool.d/www.confファイルを開きます。

$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf

PHPプロセスのUnixユーザー/グループをnginxに設定する必要があります。ファイル内のuser=www-dataおよびgroup=www-data行を見つけて、nginxに変更します。

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

ファイル内のlisten.owner = www-dataおよびlisten.group = www-data行を見つけて、nginxに変更します。

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

PHP-FPMとPHP-CLIの実行時間を60秒に増やします。

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.1/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.1/cli/php.ini

PHP-FPMのメモリ制限を128MBから256MBに増やします。

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini

PHP-FPMサービスを再起動します。

$ sudo systemctl restart php8.1-fpm

PHPセッションディレクトリのグループをNginxに変更します。

$ sudo chgrp -R nginx /var/lib/php/sessions

Nginxの設定

/etc/nginx/conf.d/wallabag.confファイルを作成して開きます。

$ sudo nano /etc/nginx/conf.d/wallabag.conf

以下のコードを貼り付けます。

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  wallabag.example.com;

    access_log  /var/log/nginx/wallabag.access.log;
    error_log   /var/log/nginx/wallabag.error.log;

    # SSL
    ssl_certificate      /etc/letsencrypt/live/wallabag.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/wallabag.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wallabag.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    root /var/www/html/wallabag/web;

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

    # Pass PHP Scripts To FastCGI Server
    location ~ ^/app\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  wallabag.example.com;
    return 301   https://$host$request_uri;
}

Nginx設定で使用されるルートディレクトリは/var/www/html/wallabag/public/であることに注意してください。

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

/etc/nginx/nginx.confファイルを開きます。

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;の前に次の行を追加します。

server_names_hash_bucket_size  64;

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Nginx設定ファイルの構文を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサービスを再起動します。

$ sudo systemctl restart nginx

ステップ10 - Wallabagにアクセス

ブラウザでhttps://wallabag.example.comのURLを開くと、次のログイン画面が表示されます。

Wallabagログイン画面

インストール中に作成した資格情報を入力し、LOG INボタンを押して続行します。Wallabagのダッシュボードが表示されます。

Wallabagダッシュボード

Wallabagは、リンクを追加するためのすべてのブラウザ、モバイル、またはEbookリーダー用の多数のアプリを提供します。そして、他に何も気に入らない場合は、ブックマークレットを使用することもできます。その詳細は、ダッシュボードの右上にあるユーザーアイコンをクリックしてHow toセクションからアクセスできます。

Wallabagユーザードロップダウンメニュー

ブラウザ拡張機能、モバイルアプリ、Wallabagブックマークレットへのリンクが提供されます。

Wallabag Howtoページ

これで完了です。Wallabagを使用して後で読むための記事を保存できます。

結論

これで、Ubuntu 22.04サーバーにWallabagをインストールするためのチュートリアルが終了しました。質問がある場合は、下のコメントに投稿してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。