2024/09/23
narou.rbの3.9.1への対応時にalpine Linuxで動作しなかったのでDebianのイメージへ切り替え。現状そのせいでイメージサイズが倍増している。
変換のオプション次第で`mkdir': Permission deniedが発生していることを確認したので手順を修正予定
目的 (いつものお題目)
- 改造版AozoraEpub3の最新版を使用する (2024.09.23時点で 1.1.1b26Q)
- 読書端末はKindle PaperWhiteとする
- Javaも含めて最新版(あればLTS)を使用する
- 無職転生 - 異世界行ったら本気だす - の変換がEPUBで完了すること
- できる限りnarou.rbで設定しているCSSスタイルに準拠すること
- dockerのコンテナを停止してもダウンロードしたファイルを永続化する
手順として参考にしたサイト
環境
- ubuntu-22.04.3-live-server-amd64.iso で構築したUbuntu Server
- ruby:3.3.5-bookworm 及び ruby:3.3.5-slim-bookworm (rubyの公式イメージ)
- Javaはopenjdk21-jdkを選択
dockerの構築
基本的な流れは以下のサイトを参照しました
古いバージョンの削除
$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Dockerリポジトリの準備と登録
#鍵の登録作業
$ sudo apt update
$ sudo apt install ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# Apt sourcesへリポジトリを追加
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
Dockerのインストール
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ docker -v
Docker version 27.3.1, build ce12230
動作確認
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d
Status: Downloaded newer image for hello-world:latest
略
Hello from Docker!
This message shows that your installation appears to be working correctly.
略
一般ユーザでDockerを実行できるようにする
$ getent group | grep docker
docker:x:999:
catapult@ubuntu2204:~$ sudo usermod -aG docker $USER
catapult@ubuntu2204:~$ getent group | grep docker
docker:x:999:user
ここで一度ログアウトしログインし直します
動作確認
$ docker run hello-world
中略
Hello from Docker!
This message shows that your installation appears to be working correctly.
docker composeしnarou.rbを起動する為のファイルを準備する
gitからクローンする処理を改め、compose.ymlを作成し、docker hubからイメージをダウンロードする方向へ手順を変更した
$ vim compose.yml
services:
narou:
build:
context: .
dockerfile: dockerfile
args:
NAROU_VERSION: 3.9.1
AOZORAEPUB3_VERSION: 1.1.1b26Q
UID: 1000
GID: 1000
image: kokotaro/narou:3.9.1
command: ["narou", "web", "-np", "33000"]
volumes:
- .:/home/narou/novel:cached
tty: true
stdin_open: true
ports:
- 9200:33000
- 9201:33001
docker composeを使用しコンテナを起動する
$ docker compose up -d
竜略
[+] Running 1/1
✔ Container narou-docker-narou-1 Started
自動的にWEB UIがバックグラウンドで起動している状態なので
http://localhost:9200/ にアクセスしてください。
※検証環境はVirtualBoxを使用し仮想NICをブリッジ接続にしているので、Host PCからhttp://192.168.xxx.xxx:9200/ でアクセスし動作確認を実施
WEB UIの処理が以下のように出力されていればOkです。
第286部分 エピローグ「プロローグ・ゼロ」 (286/286)
ID:0 無職転生 - 異世界行ったら本気だす - は完結しているようです
ID:0 無職転生 - 異世界行ったら本気だす - の変換を開始
小説状態の調査結果を 調査ログ.txt に出力しました(エラー:0件、警告:43件、INFO:4件)
縦書用の変換が終了しました
AozoraEpub3でEPUBに変換しています........変換しました
[理不尽な孫の手] 無職転生 - 異世界行ったら本気だす -.epub を出力しました
EPUBファイルを出力しました
docker内で処理された小説ファイルの確認
docker composeを実行したディレクトリに"小説データ"ディレクトリが生成されている。これは以下のようにdokcerコンテナを停止しても実体として保存されている状態
$ find . -name "*.epub"
./小説データ/小説家になろう/n9669bk 無職転生 - 異世界行ったら本気だす -/[理不尽な孫の手] 無職転生 - 異世界行ったら本気だす -.epub
$ docker compose stop
[+] Stopping 1/1
✔ Container narou-docker-narou-1 Stopped
$ find . -name "*.epub"
./小説データ/小説家になろう/n9669bk 無職転生 - 異世界行ったら本気だす -/[理不尽な孫の手] 無職転生 - 異世界行ったら本気だす -.epub
** 無事確認出来たので再度起動する
$ docker compose start
結論
kindlegenのLinux版を正規手順では入手出来ないがEPUB送信で一応Kindleでの閲覧は可能。他の目的もこれまでの手順と同じ程度に達成したと思っている。