Upgrade to Pro — share decks privately, control downloads, hide ads and more …

teleka.suを支える技術

sksat
June 19, 2021

 teleka.suを支える技術

VRC-LT #9でやったやつ

sksat

June 19, 2021
Tweet

More Decks by sksat

Other Decks in Technology

Transcript

  1. View Slide

  2. 自己紹介

    自己紹介
    ・sksat
    ・オタク.宇宙・計算機・百合などがすき.
    ・Twitter:@sksat_tty, GitHub:sksat

    第1章


    View Slide

  3. 自己紹介

    自己紹介
    ・sksat
    ・オタク.宇宙・計算機・百合などがすき.
    ・Twitter:@sksat_tty, GitHub:sksat
    ・VRChatでは

    第1章


    View Slide

  4. 自己紹介

    自己紹介
    ・sksat
    ・オタク.宇宙・計算機・百合などがすき.
    ・Twitter:@sksat_tty, GitHub:sksat
    ・VRChatでは

    第1章


    View Slide

  5. 自己紹介

    自己紹介
    ・sksat
    ・オタク.宇宙・計算機・百合などがすき.
    ・Twitter:@sksat_tty, GitHub:sksat
    ・VRChatでは
    ・最近は人の形をしている

    第1章


    View Slide

  6. 事の発端

    第2章

    長いので中略(は?)
    (時間があったらやります)

    View Slide

  7. 事の発端

    第2章

    長いので中略(は?)
    (時間があったらやります)
    要約:
    ・色々あって僕がteleka.suを取得
    ・lens.teleka.suみたいに曲名のサブドメインを曲の動画に飛ばすようにする

    View Slide

  8. 曲名サブドメイン

    第3章

    ・みんな大好きNginx

    View Slide

  9. 曲名サブドメイン

    第3章

    ・みんな大好きNginx

    View Slide

  10. 曲名サブドメイン

    第3章

    ・みんな大好きNginx
    ・”ポピ横の狂人”とかをどうするか

    View Slide

  11. 曲名サブドメイン

    第3章

    ・みんな大好きNginx
    ・”ポピ横の狂人”とかをどうするか
    ・popiyoko-no-kyoujin.teleka.su?

    View Slide

  12. 曲名サブドメイン

    第3章

    ・みんな大好きNginx
    ・”ポピ横の狂人”とかをどうするか
    ・popiyoko-no-kyoujin.teleka.su?
    ・ちょうどいいやつがいるじゃない

    View Slide

  13. 曲名サブドメイン

    第3章

    IDN:
    Internationalized Domain Name

    View Slide

  14. 曲名サブドメイン

    第3章

    IDN:
    Internationalized Domain Name
    国際化ドメイン名

    View Slide

  15. 曲名サブドメイン

    第3章

    出典: https://www.nic.ad.jp/ja/dom/idn.html
    JPNIC ドメイン名/国際化ドメイン名
    こっち.みんなとかできる

    View Slide

  16. ・こうなった
    曲名サブドメイン

    第3章


    View Slide

  17. ・こうなった
    ・ダルくね?
    曲名サブドメイン

    第3章


    View Slide

  18. ・こうなった
    ・ダルくね?
    ・Nginxのコンフィグを生成するシェルスクリプトでも書くか?
    曲名サブドメイン

    第3章


    View Slide

  19. ・こうなった
    ・ダルくね?
    ・Nginxのコンフィグを生成するシェルスクリプトでも書くか?
    曲名サブドメイン

    第3章


    View Slide

  20. ・新曲追加がDNSレコード追加だけでよくなった
    kuso-subdomain-adder

    第3章


    View Slide

  21. ・新曲追加がDNSレコード追加だけでよくなった
    ・Cloudflareで管理しているのでCFのダッシュボードからいける
    kuso-subdomain-adder

    第3章


    View Slide

  22. ・新曲追加がDNSレコード追加だけでよくなった
    ・Cloudflareで管理しているのでCFのダッシュボードからいける
    ・この権限はてれかすさんにあるべき
    kuso-subdomain-adder

    第3章


    View Slide

  23. ・新曲追加がDNSレコード追加だけでよくなった
    ・Cloudflareで管理しているのでCFのダッシュボードからいける
    ・この権限はてれかすさんにあるべき→共用アカウントでメンバーを追加
    kuso-subdomain-adder

    第3章


    View Slide

  24. ・新曲追加がDNSレコード追加だけでよくなった
    ・Cloudflareで管理しているのでCFのダッシュボードからいける
    ・この権限はてれかすさんにあるべき→共用アカウントでメンバーを追加
    ・それはそれとしてCNAMEとTXTを追加してもらうのも微妙かも?
    →専用のサービスを深夜テンションで作る
    kuso-subdomain-adder

    第3章


    View Slide

  25. ・kuso-subdomain-adder
    ・A super-easy kuso subdomain utility for telekasu using kuso-domains-redirector and Cloudflare API.
    ・サブドメインとターゲットURLを入れるとCNAMEとTXTをCFのAPI経由で追加
    kuso-subdomain-adder

    第3章


    View Slide

  26. ・kuso-subdomain-adder
    ・A super-easy kuso subdomain utility for telekasu using kuso-domains-redirector and Cloudflare API.
    ・サブドメインとターゲットURLを入れるとCNAMEとTXTをCFのAPI経由で追加
    kuso-subdomain-adder

    第3章


    View Slide

  27. ・実装
    ・フロントエンド: 素のHTML(APIリクエストはただのフォーム)
    ・バックエンド: Rust(actix-web)
    ・WIPだけどcloudflare-rsがあったのでかなり楽だった
    kuso-subdomain-adder

    第3章


    View Slide

  28. ・デプロイ: $ docker-compose up -d
    ・GitHub Actionsでmasterのdocker imageをビルド→ghcr.ioにpush
    ・適宜pull/restartすればいい
    kuso-subdomain-adder

    第3章


    View Slide

  29. ・認証は?
    kuso-subdomain-adder

    第3章


    View Slide

  30. ・認証は?
    ・そんなものはない
    kuso-subdomain-adder

    第3章


    View Slide

  31. ・認証は?
    ・そんなものはない
    ・やったことないしやりたくなさすぎる(そもそもWebっぽいのがはじめて)
    kuso-subdomain-adder

    第3章


    View Slide

  32. ・認証は?
    ・そんなものはない
    ・やったことないしやりたくなさすぎる(そもそもWebっぽいのがはじめて)
    ・じゃあどうするか
    kuso-subdomain-adder

    第3章


    View Slide

  33. ・認証は?
    ・そんなものはない
    ・やったことないしやりたくなさすぎる(そもそもWebっぽいのがはじめて)
    ・じゃあどうするか
    ・Cloudflare Access
    kuso-subdomain-adder

    第3章


    View Slide

  34. ・Cloudflare Access
    ・すごい雑にいうと
    「insecureオンプレ簡単に認証付けてインターネットに公開し太郎」
    kuso-subdomain-adder

    第3章


    View Slide

  35. ・Cloudflare Access
    ・すごい雑にいうと
    「insecureオンプレ簡単に認証付けてインターネットに公開し太郎」
    ・リモートワーク増加してるけどVPNとかやってらんないし微妙だよね
    ・これからはゼロトラストや!を何も考えずにできる
    kuso-subdomain-adder

    第3章


    View Slide

  36. ・Cloudflare Access
    ・すごい雑にいうと
    「insecureオンプレ簡単に認証付けてインターネットに公開し太郎」
    ・リモートワーク増加してるけどVPNとかやってらんないし微妙だよね
    ・これからはゼロトラストや!を何も考えずにできる
    $ cloudflared tunnel --hostname hoge.teleka.su --url http://internal-service
    kuso-subdomain-adder

    第3章


    View Slide

  37. ・Cloudflare Access
    ・すごい雑にいうと
    「insecureオンプレ簡単に認証付けてインターネットに公開し太郎」
    ・リモートワーク増加してるけどVPNとかやってらんないし微妙だよね
    ・これからはゼロトラストや!を何も考えずにできる
    $ cloudflared tunnel --hostname hoge.teleka.su --url http://internal-service
    kuso-subdomain-adder

    第3章


    View Slide

  38. ・せっかくCIでdocker imageビルドしてんのにデプロイは手オペ?
    運用

    第4章


    View Slide

  39. ・せっかくCIでdocker imageビルドしてんのにデプロイは手オペ?
    ・CD(Continuous Delivery)したい~~~
    運用

    第4章


    View Slide

  40. ・せっかくCIでdocker imageビルドしてんのにデプロイは手オペ?
    ・CD(Continuous Delivery)したい~~~
    ・でもそのためにKubernetesクラスタ生やすのもな...
    運用

    第4章


    View Slide

  41. ・せっかくCIでdocker imageビルドしてんのにデプロイは手オペ?
    ・CD(Continuous Delivery)したい~~~
    ・でもそのためにKubernetesクラスタ生やすのもな...
    ・要は更新を監視してpull/restartしてくれればいいんだよ
    運用

    第4章


    View Slide

  42. ・せっかくCIでdocker imageビルドしてんのにデプロイは手オペ?
    ・CD(Continuous Delivery)したい~~~
    ・でもそのためにKubernetesクラスタ生やすのもな...
    ・要は更新を監視してpull/restartしてくれればいいんだよ
    →つくった
    運用

    第4章


    View Slide

  43. ・compose-cd: https://github.com/sksat/compose-cd
    運用

    第4章


    View Slide

  44. ・compose-cd: https://github.com/sksat/compose-cd
    ・systemd-timerで定期実行
    ・リポジトリとイメージの更新を確認
    ・適宜pull/restart
    ・各プロジェクトに.compode-cdを置くだけ
    ・Discordに通知
    運用

    第4章


    View Slide

  45. ・compose-cd: https://github.com/sksat/compose-cd
    ・systemd-timerで定期実行
    ・リポジトリとイメージの更新を確認
    ・適宜pull/restart
    ・各プロジェクトに.compode-cdを置くだけ
    ・Discordに通知
    運用

    第4章


    View Slide

  46. ・インシデント集
    ・自室のインターネット接続が死亡→tunnelが切れる
    ・cloudflaredが別の場所で動いていて再起動時に動かし忘れる
    ・クソデカロックを取れず死亡
    運用

    第4章


    View Slide

  47. ・冗長化
    運用

    第4章


    View Slide

  48. 以降予備スライド

    View Slide

  49. 事の発端

    第2章

    ・丁度前回のVRC-LTぐらいの頃(2020年12月あたり)

    View Slide

  50. 事の発端

    第2章

    ・丁度前回のVRC-LTぐらいの頃(2020年12月あたり)
    ・ごく一部のVRChatterの間でクソドメインを取るのが流行る

    View Slide

  51. 事の発端

    第2章

    ・丁度前回のVRC-LTぐらいの頃(2020年12月あたり)
    ・ごく一部のVRChatterの間でクソドメインを取るのが流行る
    ・僕が元々怪しいレジストラでゴニョゴニョしてyohane.suを取っていた

    View Slide

  52. 事の発端

    第2章

    ・丁度前回のVRC-LTぐらいの頃(2020年12月あたり)
    ・ごく一部のVRChatterの間でクソドメインを取るのが流行る
    ・僕が元々怪しいレジストラでゴニョゴニョしてyohane.suを取っていた
    ・僕がgomika.su,@yanorei32がkakkoka.suを取る

    View Slide

  53. 事の発端

    第2章

    ・丁度前回のVRC-LTぐらいの頃(2020年12月あたり)
    ・ごく一部のVRChatterの間でクソドメインを取るのが流行る
    ・僕が元々怪しいレジストラでゴニョゴニョしてyohane.suを取っていた
    ・僕がgomika.su,@yanorei32がkakkoka.suを取る
    ・.su

    View Slide

  54. 事の発端

    第2章


    View Slide

  55. 事の発端

    第2章


    View Slide

  56. View Slide

  57. 事の発端

    第2章


    View Slide

  58. 事の発端

    第2章


    View Slide

  59. 事の発端

    第2章

    ・おやおやおや
    ・ちょっとまって
    ・クソドメインはクソオタクが取ればええねん

    View Slide

  60. 事の発端

    第2章

    ・おやおやおや
    ・ちょっとまって
    ・クソドメインはクソオタクが取ればええねん

    View Slide

  61. 事の発端

    第2章

    ・おやおやおや
    ・ちょっとまって
    ・クソドメインはクソオタクが取ればええねん

    View Slide

  62. 事の発端

    第2章

    というのが事の発端

    View Slide

  63. 余談


    View Slide

  64. 余談


    View Slide