自己ホスティング


リスは最近、されており、これはサイモン、彼らのチームに参加したQuirrelの著者のためのエキサイティングなニュースです!
ホストサービスquirrel.dev 今年後半に廃止され、新しいサインアップを中止しました.これはサービスのニッチとしてジョブの待ち行列に穴を残しますが、ありがたいことに、quirrelは、自己ホストされたインスタンスに切り替えることができるオープンソースにとどまるでしょう.
私は、両方のために私自身の自慢したQuirrelインスタンスを走らせていましたShellphone and Remixtape on Fly.io そして、このブログのポストはここであなたを助けるためです.
このガイドでは、私は設定を超えて行くことはありませんflyctl nor using Quirrel 彼らのそれぞれのドキュメンテーションがそれより私のより良い仕事をするので.
TLドクター
  • redisの配備
  • クルクルを展開する
  • あなたのアプリケーションのキルのトークンを生成する
  • 展開ファイルや命令はthis repository .

    REDISの配備
    まず、次のDockerfileとシェルスクリプトで展開されるFlyアプリを設定しますstart-redis-server.sh . スクリプトでは、リスに必要な永続的なストレージでREDISを開始します.
    FROM redis:alpine
    
    ADD start-redis-server.sh /usr/bin/
    RUN chmod +x /usr/bin/start-redis-server.sh
    
    CMD ["start-redis-server.sh"]
    
    #!/bin/sh
    sysctl vm.overcommit_memory=1
    sysctl net.core.somaxconn=1024
    redis-server --requirepass $REDIS_PASSWORD --dir /data/ --appendonly yes
    
    次に、次のようにあなたのRedisインスタンスをホストするフライアプリを初期化しますfly.toml ファイル.参照redis_data ストレージストレージボリュームはまだ永続的なストレージに必要な作成されていません.
    app = "quirrel-redis"
    
    [[mounts]]
      destination = "/data"
      source = "redis_data"
    
    flyctl launch --name quirrel-redis --no-deploy --copy-config
    
    そのフライはあなたのRedisアプリを知っている今、ストレージボリュームを展開しましょう.REDISインスタンスと同じ領域に展開することをお勧めします.私の場合はCDG パリ、フランス.
    flyctl volumes create redis_data --region cdg
    
    安全なredis強いランダムなパスワードで.通常使用openssl この種のパスワードを生成します.どこか安全に保つ、我々は後でリスを展開する必要があります.
    openssl rand -hex 16 # copy its output
    # you can use this alternative below if you can't use openssl
    # node -e "console.log(crypto.randomBytes(16).toString('hex'))"
    flyctl secrets set REDIS_PASSWORD=paste_redis_password_here
    
    ここでREDISを展開できます.
    flyctl deploy
    

    リスを展開する
    次の手順は、次のようにリスを展開することですfly.toml ファイル.これは、2012年に公開されたキリスドッカーイメージを使用していますQuirrel's GitHub container registry .
    app = "quirrel"
    
    [build]
      image = "ghcr.io/quirrel-dev/quirrel:main"
    
    [[services]]
      internal_port = 9181
      protocol = "tcp"
    
      [services.concurrency]
        hard_limit = 25
        soft_limit = 20
        type = "connections"
    
      [[services.http_checks]]
        interval = "10s"
        method = "get"
        path = "/health"
        protocol = "http"
        timeout = "2s"
    
      [[services.ports]]
        handlers = ["http"]
        port = 80
    
      [[services.ports]]
        handlers = ["tls", "http"]
        port = 443
    
    flyctl launch --name quirrel --no-deploy --copy-config
    
    そのフライはあなたのクルルのアプリについて知っている今、それは環境変数を設定する時間です.Redisのパスワードのようにopenssl を生成する.
    openssl rand -hex 16 # copy its output
    # you can use this alternative below if you can't use openssl
    # node -e "console.log(crypto.randomBytes(16).toString('hex'))"
    flyctl secrets set PASSPHRASES=paste_quirrel_passphrase_here
    
    その後、我々はRedisインスタンスに接続するためにクレールリを指示する必要があります、それはRedisのパスワードが以前に保存使用する時間です!我々は我々のフライアプリの.internal address このようにフォーマットされます{region}.{appName}.internal . フライサーバはIPv 6のみを使用するので、?family=6 READISにIPv 6経由で接続する.
    flyctl secrets set "REDIS_URL=redis://:[email protected]:6379?family=6"
    
    そして今、我々はクルクルを展開することができます.
    flyctl deploy
    

    あなたのquirrelインスタンスにアプリを接続します
    最後のステップは、あなたの新たに配備されたリスのインスタンスにあなたのアプリケーションを接続することです.まず、あなたのインスタンスからquirrelトークンを取得しましょう.あなたのインスタンスのパブリックURLをFly dashboard . あなたのアプリケーションのためにこのコマンドから返されたトークンを保存してください、我々は次のステップのためにそれを必要とするつもりです.
    curl --user ignored:paste_quirrel_passphrase_here -X PUT https://quirrel.fly.dev/tokens/exampleapp
    
    最後に、次の環境変数を使用してアプリケーションを構成して配置します.
    QUIRREL_API_URL=https://quirrel.fly.dev # your Quirrel instance's public URL
    QUIRREL_TOKEN=paste_quirrel_token_here # your Quirrel token previously generated
    QUIRREL_BASE_URL=www.exampleapp.com # your app's URL
    

    ボーナス使用ui.quirrel.dev
    Kirrelは、任意のquirrelインスタンスに接続することができますキューのジョブを監視できるように開発UIを提供します.パブリックバージョンはui.quirrel.dev しかし、あなたのQuirrelインスタンスのパブリックURLもこの開発UIをホストします!
    あなたの自己ホストされたQuirrelインスタンスに接続するには、接続モードを開くためにヘッダーのQuirrelロゴの横のドロップダウンメニューをクリックしてください.
    あなたのインスタンスの公開URL、アプリケーションのトークン、およびあなたが以前に生成されたリスパスフレーズを入力します.モードは次のようになります.

    お気軽に再生するには、仕事をキューに、それがリアルタイムでこの開発UIで表示されます参照してください.

    クロージングノート
    おめでとう、あなたはそれをやった!あなたはRedisインスタンス、quirrelインスタンスを展開して、あなたの自己アプリケーションを使用してあなたの自己生産のアプリケーションを設定しました.
    サイモンにソフトウェアのこのクールな作品を構築するために叫ぶ!私は、これがセルフホスティングへのユーザーリス移行を助けることを望みます.
    あなたの次のsaasを構築するためにヘッドスタートを取得しますか?仕事中ですRemixtape , モダンリミックス💿 より良いウェブサイトを構築するために必要なすべてが含まれています.バックグラウンドジョブ、認証、アカウント管理、セッション、サブスクリプションの支払い、チーム、トランザクションメールのような標準的な機能を実装します.😮‍💨 それはあなたが今日の偉大なWebアプリを構築するために必要な固体の基礎を与えるとスケール明日.