Docker で Yourls を立てる

Ubuntu の Docker で短縮 URL サービスの Yourls を立てたのでその方法のメモ。

環境:
・VMware vSphere Hypervisor 7.0U3g(英語環境)
・Ubuntu Server 22.04.3

(1)Ubuntu に Docker および docker-compose をインストールしておく。

(2)yourls ディレクトリを作成し、移動。

$ mkdir yourls && cd yourls

(3)docker-compose.yml というファイルを以下の内容で作成。

version: '3.1'

services:

  yourls:
    image: yourls
    restart: always
    ports:
      - 8080:80
    environment:
      YOURLS_DB_PASS: {DBpassword}
      YOURLS_SITE: https://example.com
      YOURLS_USER: {yourls-user}
      YOURLS_PASS: {yourls-password}

  mysql:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: {DBpassword}
      MYSQL_DATABASE: yourls

YOURLS_DB_PASS と MYSQL_ROOT_PASSWORD は同じものにする。

(4)以下のコマンドでコンテナを起動。

$ sudo docker-compose up -d

http://example.com/admin/ あるいは http://{IP アドレス}/admin/ にアクセスすれば、Yourls が使えるようになっているはずだ。3で設定したユーザー名とパスワードでログインする。

コンテナを停止するには以下のコマンド。

$ sudo docker-compose stop

再度以下のコマンドを実行することで再び起動する。

$ sudo docker-compose up -d

docker-compose.yml で restart: always のように自動起動の設定をしているので、マシンを再起動したりして Docker サービスが再起動しても以降 Yourls(および MYSQL の)のコンテナが自動起動する。Docker サービスの再起動は以下のコマンド。

$ sudo systemctl stop docker
$ sudo systemctl start docker

(5)プラグインに関してはプラグインディレクトリをマウントするよう docker-compose.yml に記述することで、ホストマシンで簡単にプラグインの追加ができるはずだった。しかし、なぜかホストマシンからのプラグインの追加が Yourls に反映されない。

仕方がないので、コンテナ内に入ってプラグインを追加する。

$ sudo docker exec -it {コンテナ名} /bin/bash
# apt update
# apt install git
# cd /var/www/html/user/plugins

例えば以下の「Bulk Import and Shorten」というプラグインを追加する場合、以下のコマンドでインストールできる。

# git clone https://github.com/vaughany/yourls-bulk-import-and-shorten.git 

プラグインは Yourls のプラグインページで有効化すれば使えるようになる。

特に以下のタイムゾーンを設定するプラグインは必須だ。

GitHub - YOURLS/timezones
https://github.com/YOURLS/timezones

またデフォルトでは URL にアルファベットの大文字が使えない。コンテナの中に入った状態で、/var/www/html/user/config.php の URL shortening method を 36 から 62 に変更すればいい。すぐ反映されて、アルファベットの大文字が使えるようになった。

(6)コンテナを停止し、さらに削除するなら以下。

$ sudo docker-compose down

この場合 Yourls の URL のデータもプラグインのデータもすべて消える。

参考:
yourls - Official Image | Docker Hub
https://hub.docker.com/_/yourls

技術メモメモ: Docker Composeを作って複数のコンテナの作成・起動・停止・削除を制御する
https://tech-mmmm.blogspot.com/2021/02/docker-compose.html

Integrate yourls plugins to docker image · Issue #16 · YOURLS/images · GitHub
https://github.com/YOURLS/images/issues/16

YOURLSで短縮URLサービスを自前で構築する - maruko2 Note.
http://www.maruko2.com/mw/YOURLSで短縮URLサービスを自前で構築する

GitHub – git cloneコマンドでファイルをダウンロードする方法 | Howpon[ハウポン]
https://howpon.com/3663

[Question/Feature] Capital Letters · Issue #1588 · YOURLS/YOURLS · GitHub
https://github.com/YOURLS/YOURLS/issues/1588


この記事が気に入ったらサポートをしてみませんか?