LASSIC Media らしくメディア

2026.07.22 らしくコラム

ShlinkでURL短縮をセルフホスト構築・外注

LASSIC IT事業部|元請(プライムベンダー)としてシステム保守・運用を受託

リンク計測のイメージ

この記事のポイント

  • Shlinkは、自社ドメイン配下で短縮URLを発行し、クリックごとの位置情報・端末・リファラーを計測できる無料のセルフホスト型URL短縮ツールです。
  • セルフホストで運用すれば、クリックデータを外部のSaaSへ送信せず、自社サーバー内だけで計測・分析を完結できます。
  • 構築・DB接続・プライバシー対応には専門知識が必要になるため、内製と外注のどちらで進めるかを費用構造とリスクの両面から判断する必要があります。

Shlinkとは?OSSのセルフホスト型URL短縮・リンク管理ツール

セルフホストサーバーのイメージ

Shlinkとは、ユーザーが自身のドメイン配下でURL短縮サービスを運営できる、PHPベースのセルフホスト型オープンソースツールです*1。MITライセンスの下で配布されており、公式GitHubリポジトリでは2026年7月時点で5.2千件のスターを獲得しています*4。長いURLを短いコードに変換する際は、自動生成のコードだけでなく任意のカスタムスラッグも指定できます*1

図
図:Shlinkによるリンク計測フロー(URL登録→短縮URL発行→クリック計測→タグ別集計)

Web広告やメールマガジンでは、SNSやSaaS型の短縮URLサービスを使うと、クリックデータが外部事業者のサーバーに蓄積されます。Shlinkはこの計測データを自社サーバー内だけで完結させたい企業向けに開発された、コミュニティ主導のオープンソースプロジェクトです*1。構成要素は、URL短縮本体である「Shlink server」、複数インスタンスを管理する「Shlink web client」、コマンドラインから操作する「CLI」、PHP・JavaScript向けの公式SDKに分かれます*2。API-firstの設計のため、シンプルな認証方式でどこからでも短縮URLの発行・管理にアクセスでき、既存の業務システムとの統合もしやすい構造です*1

タグ・訪問統計でクリックを計測するしくみ

Shlinkは、短縮URLがクリックされるたびに位置情報・訪問者のブラウザ・リファラーを含む訪問統計を記録します*6。この統計は既定でIPアドレスが匿名化された状態で保存されるため、GDPRに準拠した形での計測が可能とされています*6。加えてボット検出機能を備えており、クローラーなどによる不正なアクセスを統計から除外できます*6

短縮URLにはタグを付与でき、後からキャンペーンや配信媒体ごとに分類・集計する際の軸として使えます*6。有効期間やアクセス回数の上限による制限を設定してURLへのアクセスを制御できるほか、地理情報・端末種別・言語などの条件に応じてリダイレクト先を動的に切り替える機能も用意されています*6。キャンペーンごとに異なる着地ページへ振り分けたい場合に活用できる仕組みでしょう。

QRコード生成機能とキャンペーン計測への活用

Shlinkは、短縮URLの末尾に「/qr-code」を付け加えるだけでQRコードの画像を取得できる機能を備えています*5。サイズ(50〜1000ピクセル、既定300)・マージン・フォーマット(pngまたはsvg)・誤り訂正レベル(L/M/Q/H)・前景色と背景色まで、パラメータでこまかく調整できます*5。紙のチラシや展示会用パネルにQRコードを掲載し、読み取り経路のクリックを計測するといった使い方に向いています。

ただし公式ドキュメントは、バージョン4.5.0以降Shlink本体によるQRコード生成を非推奨としており、生成処理をクライアント側へ移していく方針を示しています*5。既存の運用でQRコード発行をShlinkに依存している場合、将来のアップデートで挙動が変わる可能性を踏まえておく必要があります。また、短縮URLに追加したクエリパラメータは長いURLへ自動転送される仕組みがあるため*5、この転送機能とタグ付けを組み合わせれば、広告媒体別・キャンペーン別のクリックをShlink上で分類しながら追跡する運用がしやすくなります。

Dockerで構築する標準的な導入手順

最小構成での起動コマンドと必須の環境変数

公式ドキュメントが示す最小構成の起動コマンドは、次のとおりです*3

docker run \
  --name my_shlink \
  -p 8080:8080 \
  -e DEFAULT_DOMAIN=s.example.com \
  -e IS_HTTPS_ENABLED=true \
  shlinkio/shlink:stable

コンテナが公開するポートは8080で、DEFAULT_DOMAINには自社で用意した短縮URL用ドメインを指定します*3。IS_HTTPS_ENABLEDでhttps配信かどうかを切り替えます*3。バージョンタグは、最新安定版を示す「stable」、特定バージョンを固定する「X.X.X」、v4.0.0以降既定ランタイムとなったRoadRunnerを明示する「-roadrunner」サフィックスから選べます*4

外部データベース接続とGeoLite2ライセンスキーの扱い

本番運用でMySQL・MariaDB・PostgreSQL・Microsoft SQL Serverなどの外部データベースに接続する場合は、DB_DRIVER・DB_USER・DB_PASSWORD・DB_HOSTを設定します*3。DB_PORTは任意でエンジンごとの既定値(MySQL/MariaDBは3306、PostgreSQLは5432、MSSQLは1433)が使われ、DB_NAMEも任意で既定値は「shlink」です*3。何も指定しない場合はSQLiteが使われます*4。複数のShlinkインスタンスを並行稼働させる構成では、REDIS_SERVERSでロック情報を共有する設定も用意されています*3

位置情報の計測には、無料で取得できるGeoLite2のライセンスキーをGEOLITE_LICENSE_KEYへ設定します*7。このキーはMaxMindのアカウントを作成し発行しますが、公式ドキュメントは「ライセンスキーを設定しなくても、単に訪問の位置情報を取得しなくなるだけ」と説明しており、必須ではありません*7。位置情報による分析までは求めず、まずはクリック数とリファラーだけ把握できればよい、という段階的な導入も可能です。なお、Dockerを使わずソースからベアメタル構築する場合は、PHP 8.4または8.5と、json・curl・pdo・intl・gd・gmpまたはbcmathといった拡張機能が別途必要になります*4

セルフホスト内製と外注委託のコスト構造比較

セルフホストによる内製構築と、外部パートナーへの委託では、費用構造・必要スキル・リスク対応の重心が異なります。以下の表に主な違いを整理しました。

比較項目 セルフホスト内製 外注委託
ライセンス費用 MITライセンスの無料ソフトウェアのため発生しません*4 ソフトウェア自体は無料ですが、構築・保守を委託する分の費用が発生します
必要な専門知識 Docker運用・DB接続設定・GeoLite2キー取得・ドメイン設定が必要です*3 専門パートナーが構築・調整を担うため、社内での知識習得は最小限で済みます
計測データの扱い クリックデータは自社サーバーに保存され、外部SaaSへ送信されません*6 委託先のサーバー構成次第となるため、データの保存場所を契約時に確認する必要があります
運用・監視 バージョンアップやDB・Redisの監視を自社で継続します*3 監視・アップデート対応まで含めて委託できます

計測データを外部に渡さない自前運用のメリット

SaaS型の短縮URLサービスを利用すると、クリックのたびに発生する位置情報・リファラー・端末情報は、その事業者のサーバーに蓄積されます。Shlinkをセルフホストする大きな利点は、こうした計測データを自社が管理するサーバー内だけで完結できる点にあります*1。契約中のサービス仕様変更や事業者側の都合でデータの取り扱いが変わる心配をせずに、自社のポリシーに沿った保持期間・アクセス権限を設計できます。

Shlinkは既定でIPアドレスを匿名化して保存するため、GDPRに準拠した形での運用が可能とされています*6。さらにボット検出機能により、検索エンジンのクローラーなどによる機械的なアクセスを統計から除外できます*6。広告のクリック単価やコンバージョン計測の精度に直結する部分であり、ノイズの少ないデータを自社内に保持できることは、マーケティング部門にとって扱いやすい利点になるでしょう。

独自ドメインでの短縮URL運用と複数インスタンス管理

ShlinkはDEFAULT_DOMAIN環境変数に自社の短縮URL用ドメインを設定でき、bit.lyなど第三者のドメインに依存せず自社ブランドのドメイン配下でリンクを発行できます*3。名刺やチラシに印字するURLも自社ドメインで統一できるため、ブランドの一貫性を保ちながら計測を行えます。

複数のShlinkインスタンスを横断的に管理したい場合は、公式の「Shlink web client」を使うと、複数インスタンスの短縮URLや統計を1つの画面から確認できます*2。REDIS_SERVERSでロック情報を共有する設定を組めば、負荷分散のために複数ノードでShlinkを稼働させる構成にも対応できます*3。部署ごと・サービスごとに複数のインスタンスを分けて運用したい企業にも扱いやすい仕組みと言えるでしょう。

内製構築に必要なスキルと外注との違い

Docker運用・DB設計・プライバシー対応に求められる専門知識

Shlinkを内製で構築・運用する場合、求められる専門知識は複数分野にまたがります。Dockerコンテナの運用、MySQLやPostgreSQLなど外部データベースとの接続設計、GeoLite2ライセンスキーの取得と更新、複数インスタンス構成でのRedis連携がその内容です。自社の情報システム部門だけでこれらを完結させるには、担当者間の連携体制を整える必要があるでしょう。

判断を先延ばしにしたまま自己流で構築を進めると、DB接続設定の不備やGeoLite2キー未設定による位置情報欠落といった問題に後から気づくケースが生じます。QRコード生成が将来的に非推奨機能へ移行する点を把握しないまま運用を続けると、既存のチラシやパネルに印字したQRコードの挙動が変わる場面で対応が後手に回りかねません*5

専門パートナーに委託した場合の違い

専門パートナーに依頼すると、Docker環境の構築からDB接続設計、ドメイン設定、GDPR等のプライバシー要件との整合確認まで一連の工程を任せられます。自社では構成検討や動作検証だけで時間がかかる場面でも、複数のセルフホスト基盤を扱ってきた知見を活用すれば、稼働までの期間を圧縮しやすくなります。内製と外注のどちらでも、まずは自社が計測したい項目とデータの保持方針の整理が出発点と言えるでしょう。

まとめ:Shlinkセルフホスト活用の3つの判断軸

本稿ではShlinkの機能とセルフホスト構築の要点を、公式ドキュメントとGitHubリポジトリの情報に基づいて整理しました。要点は次の3つに集約されるでしょう。第一に、自社ドメインでの短縮URL発行とタグ・訪問統計による計測はMITライセンスの無料OSSで実現でき、ライセンス費用は発生しません*4。第二に、Docker運用・DB接続設計・GeoLite2キーの管理には専門知識が必要であり、QRコード生成のように将来仕様が変わる機能もあるため注意が必要です*5。第三に、クリックデータを外部SaaSへ渡さず自社内で完結させたい場合、構築・運用の判断と実行は外部委託によってリスクを抑えやすくなります*6

LASSICに相談するメリット

LASSIC IT事業部は、OSSを含むWeb基盤の構築・運用を元請(プライムベンダー)として受託しています。Shlinkのdocker構築からDB接続設計、GeoLite2ライセンスキー取得の代行、タグ設計やGDPR等のプライバシー要件との整合確認まで一貫して対応する体制を整えています。自社での構築に不安がある企業様は、まずは現状のリンク計測体制の棚卸しからご相談ください。

よくある質問

Shlinkは無料で商用利用できますか。

はい、MITライセンスのOSSであり、ソースコードは無料で利用・改変できます*4。商用環境で使う場合も、著作権表示の保持等、MITライセンスの条件を確認したうえで運用することが大切です。

Shlinkの構築にはどのくらいの専門知識が必要ですか。

Dockerでのコンテナ運用、外部データベースとの接続設定(DB_DRIVER等)、GeoLite2ライセンスキーの取得など複数分野の知識が求められます*3。ベアメタル構築を選ぶ場合はPHP 8.4または8.5と各種拡張機能も必要です*4

QRコード機能は今後も使い続けられますか。

サイズや色などを指定してQRコードを取得する機能自体はありますが、公式ドキュメントはバージョン4.5.0以降、Shlink本体によるQRコード生成を非推奨としています*5。将来的にはクライアント側での生成へ移行する方針が示されており、長期運用では注意が必要です。

クリックデータは外部に送信されますか。

Shlinkをセルフホストする場合、クリックごとの位置情報・ブラウザ・リファラーは自社サーバー内に記録され、外部のSaaS事業者へ送信されることはありません*6。IPアドレスは既定で匿名化されており、ボット検出機能で不正なアクセスも除外できます*6

独自ドメインや複数インスタンスでの運用にも対応できますか。

DEFAULT_DOMAINで自社ドメインを短縮URLの発行元に設定できます*3。複数インスタンスを扱う場合は公式のShlink web clientで一元管理でき、REDIS_SERVERSでロック情報を共有すれば複数ノードでの稼働にも対応します*3

著者:テレリモ総研編集部 鈴木 亮佑


ITアウトソーシング・システム開発のご相談はLASSICへ

元請(プライムベンダー)として、貴社の課題に合わせた体制構築・開発支援をご提案します。まずはお気軽にご相談ください。

無料相談はこちら

ご不明な点はお問い合わせフォームからもご連絡いただけます。

  1. *1 出典:Shlink公式サイト「Shlink — The URL shortener」(https://shlink.io/
  2. *2 出典:Shlink公式ドキュメント「Documentation」(https://shlink.io/documentation/
  3. *3 出典:Shlink公式ドキュメント「Install using the Docker image」(https://shlink.io/documentation/install-docker-image/
  4. *4 出典:Shlink公式GitHubリポジトリ「README」(https://github.com/shlinkio/shlink
  5. *5 出典:Shlink公式ドキュメント「Some features」(https://shlink.io/documentation/some-features/
  6. *6 出典:Shlink公式サイト「Features」(https://shlink.io/features/
  7. *7 出典:Shlink公式ドキュメント「GeoLite license key」(https://shlink.io/documentation/geolite-license-key/


View