asciinemaで端末録画

投稿者: | 12月 1, 2024

最近、観よう、観ようと思っていて、ようやく見ることができた映画がある。ホラー映画なので、正直、観たくなかった。観なきゃいいのに。その映画はこれ。

狂つた一頁

なんと、原作は、川端康成の無声映画である。でもホラー。舞台は精神病院。古い映画なのでWikipediaで全編が観られる。1時間程度で音がないので電車でも観られる。Wikipediaでストーリをやんわり頭にいれておくといいかも。

デモとかウェビナーを見せられても、文字が小さくてよくわからなかったり(なので、動画を止めて凝視とか)するので、もっと良い方法はないか?見た人がすぐできる実行できるかないか?と調べていたらasciinemaで実現できるらしい。だいぶ前に発見していたのだが、時間がなくて試せなかった。ちょうど時間が取れるようになったので検証してみた。この映画には敵わないが。

 

閑話休題

 

asciinemaを入れてみた。

このコマンドは、端末の記録には大変便利だが、見方を変えればキーロガーでもある。なので、必要な端末に、利用直前にインストールをして、利用が終わったら、コマンドライン本体、設定ファイル、配布ファイルは削除をしておいたほうがいいかもしれない。よって、利用は自己責任で判断してほしい。

 

コマンドラインのインストール

とりあえず、必要なコマンドを先にインストールをしておく。必要なコマンドは、asciinemaとaggコマンド。

Ubuntu

apt -y install asciinema
curl -OL https://github.com/asciinema/agg/releases/download/v1.5.0/agg-x86_64-unknown-linux-gnu
mv agg-x86_64-unknown-linux-gnu /usr/local/bin/agg
chmod +x /usr/local/bin/agg

MacOS

brew install asciinema agg

これで完了。

 

参考:アンインストール

インストールしたパッケージを削除した上で、実行したユーザの~/.config/asciinema/を全て削除する。

 

使い方

録画

録画前に端末のウィンドウサイズが適切かどうかを確認しておく。端末のウィンドウサイズがそのまま録画されてしまう。

asciinema rec demo.cast

とすると録画開始。録画を終了をするには、exitで抜ける。

再生

asciinema play demo.cast

アニメーションGIFへの変換

埋め込みのプレイヤーを使おうとしたがファイルのアップロードが面倒なので、アニメーションGIFに変換。

agg demo.cast demo.gif

変換した結果。

共有

共有するにはアップロードをする。

aciinema upload demo.cast

asciinema.orgのサーバにアップロードされて表示できるらしい。(不意にアップロードされるのが怖いのでやっていない。)

 

セルフホスティングサーバの構築

というわけで、IPv6環境で公開し放題だし、セルフホスティングをすることにした。(といいつつ、ルータからのルーティングはしていない。)

キーの作成

tr -dc A-Za-z0-9 </dev/urandom | head -c 64; echo

 

サーバの作成

以下のdocker-compose.yamlを作る。メールサーバがないと設定ができない。ちょっと敷居が高いかもしれない。マニュアルページには、gmailを使う方法も記載されている。

ちなみに、わざわざPostgreSQL 14を使う必要もないので、17にした。(PostgreSQL server (14 or higher))

services:
asciinema:
  image: ghcr.io/asciinema/asciinema-server:latest
  ports:
    - '4000:4000'
  environment:
    - SECRET_KEY_BASE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    - URL_HOST=192.168.100.50
    - URL_PORT=4000
    - SMTP_HOST=192.168.100.5
    - MAIL_FROM_ADDRESS=foo@example.com
    - MAIL_REPLY_TO_ADDRESS=foo@example.com
    - UNCLAIMED_RECORDING_TTL=7,30
    - CONTACT_EMAIL_ADDRESS=foo@example.com
  volumes:
    - /path/asciinema/data:/var/opt/asciinema
  depends_on:
    postgres:
      condition: service_healthy

postgres:
  image: docker.io/library/postgres:17
  environment:
    - POSTGRES_HOST_AUTH_METHOD=trust
  volumes:
    - /path/asciinema/pgdata:/var/lib/postgresql/data
  healthcheck:
    test: ['CMD-SHELL', 'pg_isready -U postgres']
    interval: 2s
    timeout: 5s
    retries: 10

volumes:
asciinema_data:
  postgres_data:

これで起動する。

docker compose up -d

ブラウザで、http;//192.168.100.50:4000 にアクセスをする。

 

ユーザの登録

Sign upしてメールアドレスを登録、メールにあるURLをクリック

ちなみに、Log inをしてもメールを受信してURLをもらうってログインをする必要がある。

こんなメールが届く。URLをクリック

ユーザ名登録

これで登録完了

注意

このままの設定だと、誰でも新規ユーザ登録ができてしまう。悪用されないように、必要なユーザを登録したら、SIGN_UP_DISABLED=true を追加して、必ず立ち上げ直す。

立ち上げ直したら、新規登録のメニューが消えていることを確認しておく。

 

セルフホスティングサーバの使い方

まず送信先を環境変数で設定。(設定ファイルでも指定ができる)

export ASCIINEMA_API_URL=http://192.168.100.50:4000

Webにログインをしてから

asciinema auth

とすることで、以下のメッセージが表示される。以下のURLを開く。

Open the following URL in a web browser to link your install ID with your 192.168.100.50 user account:

 

http://192.168.100.50:4000/connectYYYYYYYYYYYYYYYYYYYYYYYYYY

 

This will associate all recordings uploaded from this machine (past and future ones) to your account, and allow you to manage them (change title/theme, delete) at 192.168.100.50.

 

ログイン済みだと以下のようなメッセージが一瞬表示される。

 

アップロードは、以下のコマンドで行う。

asciinema upload demo.cast

以下のメッセージが出てくる。URLをクリックするとセルフホスティングのページに表示される。

View the recording at:

    http://192.168.100.50:4000/a/XXXXXXXXXXXXXXXXX

 

これで使えるようになった。自分は、NASのDockerで構築した。

 

ちなみに、録画なので、入力待ち、入力ミスの全てが記録される。入力ミスはともかく、入力待ちをスキップしたい。ツールもある様子だが、以下のコマンドで間引ける。

asciinema rec -i 2 demo.cast

入力のアイドルが2秒以上あると、その間は記録しない。

毎度、この設定をするのが面倒であれば、~/.config/asciinema/configに設定が記載できる。

 

セルフホスティングでストリーミング

さらにasciinema v3 (RC版)をインストールするか、websocatをインストールするとStreamでライブができる。

asccinema v3は、コンフィグファイルが~/.config/asciinema/configから~/.config/asciinema/config.tomlに変わっているので注意。またコメントがあると動かないので、trコマンドなどでコメントは全て削除しておく。

注意:v2とv3の仕様、コマンドラインの互換性が結構すくないのでググる時は、どのバージョンの話をしているのかを注意。

 

コンテナのデモなんか実際これでいいのではないかと。下手な画面動画のデモよりも見やすい。ちなみに、やってみた気がついたが、端末のサイズがそのままで録画されてしまうので注意。

といいつつ、来月は、完全白紙で検証やデモすらしなくなる予定なので、すぐにこれを使うことはないのだが。完全に時すでに遅しというやつだった。

コメントを残す