短縮URL「shlink」を3.5.1から4.6.0にアップデート

独自ドメインで短縮URLを生成できるオープンソースshlinkをアップデートしたときの覚書。
Gemini 3 Pro Previewと対話。

環境: CentOS Stream 10, PHP 8.3.26, shlink 3.5.1 -> 4.6.0

shlinkの現在のバージョンを確認。
# /home/httpd/shlink/bin
# ./cli -V

Shlink 3.5.1

shlinkのQRコード機能は4.5.0から非推奨。
参考: Shlink — The URL shortener — Documentation

v4系からは条件に応じて飛び先を変える機能が実装。

  • デバイス別リダイレクト: iPhoneならApp Storeへ、AndroidならGoogle Playへ、PCならWebサイトへ、といった振り分けが可能。
  • 言語別リダイレクト: ブラウザの言語設定(日本語、英語など)に応じて、表示するページを切り替え可能。
  • クエリパラメータ転送: 短縮URLの後ろにつけたパラメータ(?utm_source=twitterなど)を、飛び先URLに引き継ぐかどうかの制御が柔軟。

1.shlinkアップグレード

公式サイト通りにアップデートする。
念のためデータベースのバックアップを取っておく。
参考: Shlink — The URL shortener — Documentation

shlinkディレクトリをリネイムして最新のソースコードを設置。
参考: Releases · shlinkio/shlink
distでないとvendorディレクトリが含まれていないので注意。
# cd /home/httpd/
# mv shlink/ shlink-old
# curl -LO https://github.com/shlinkio/shlink/releases/download/v4.6.0/shlink4.6.0_php8.3_dist.zip

解凍後のディレクトリ構成を確認して解凍。
# unzip -l shlink4.6.0_php8.3_dist.zip
# unzip shlink4.6.0_php8.3_dist.zip

リネイムしてdataディレクトリの権限変更。
# mv shlink4.6.0_php8.3_dist shlink
# chown nginx:www -R shlink/data/

アップデートコマンド実行。
# cd shlink/
# ./vendor/bin/shlink-installer update

 Previous shlink installation path from which to import config:
 > /home/httpd/shlink-old/

無事Success。

短縮URLにアクセスして確認。
# ./bin/cli short-url:list

HTTP ERROR 500

php-fpmサービスを再起動する必要があるらしい。
# systemctl restart php-fpm

短縮URLにアクセスして確認。

いらないファイルを削除。
# cd ../
# rm -rf shlink-old/ shlink4.6.0_php8.3_dist.zip

シンボリックリンクを設定する。
Shlinkはdnf で入れたものではなく、手動で配置したものなので、/usr/local/bin にシンボリックリンクを作るのがLinuxの標準的なマナー(FHS: Filesystem Hierarchy Standard)に沿った運用。
# ln -sf /home/httpd/shlink/bin/cli /usr/local/bin/shlink

  • -s: シンボリックリンクを作成
  • -f: 強制的に上書き

確認。
# shlink -V


2.shlinkコマンド

短縮URL一覧
# shlink short-url:list

短縮URL作成
# shlink short-url:create -c teams0217-15 https://teams.microsoft.com/l/meetup-join/19%...%7d

短縮URL削除
# shlink  short-url:delete teams0217-15

使い方はhelpを見る。
# shlink list
# shlink short-url:create help


▼ 関連記事