Fly.io에 권한 부여자 배포

애플리케이션을 만들 때 인증 기능을 만드는 데 많은 시간이 소요됩니다. OAuth, SAML 등과 같은 더 많은 로그인 기능을 추가하면 더 많은 노력과 비용이 추가됩니다. Auth0, Okta, OneLogin, AWS Cognito 또는 기타 유사한 서비스가 이 문제에 대한 빠른 솔루션입니다. 그러나 개인 정보 보호에 대한 편집증이 있다면 온프레미스 서비스를 사용하는 것을 확실히 선호할 것입니다.

현재 여러 인증 애플리케이션 옵션을 무료로 사용할 수 있으며 그 중 일부는 오픈 소스입니다. Keycloack, FusionAuth, Gluu 및 Ory가 몇 가지 예입니다. 이러한 제품을 사용해 본 경험으로 볼 때 완전한 문서가 있지만 설치 및 배포 프로세스는 손가락을 튕기는 것처럼 쉽지 않습니다.

몇 주 전에 내가 Product Hunt를 검색했을 때 Authorizer라는 새 제품이 있었습니다. 그런 다음 궁금해서 이것을 시도했습니다. 공식 문서는 Heroku, Render 및 Railway와 같은 다양한 서비스에서 Authorizer를 설치하거나 배포하는 지침을 제공합니다. Fly.io에 배포하려고 합니다. 안타깝게도 설명서를 찾을 수 없고 이에 대한 자습서를 아직 찾지 못했습니다. 그래서 저는 약간의 실험을 하고 결과는 다음과 같습니다.

For more information about Authorizer visit https://authorizer.dev For more information about Fly.io visit https://fly.io/docs



전제 조건


  • PC 또는 노트북 (절대)
  • 즐겨찾는 터미널
  • 커피 한 잔 또는 좋아하는 음료수
  • Fly.io 계정

  • I'm using macOS, you'll need to adapt some commands to the OS you're using.



    1단계: Fly.io CLI 설치



    맥 OS




    brew install flyctl
    
    


    리눅스




    curl -L https://fly.io/install.sh | sh
    
    


    윈도우




    iwr https://fly.io/install.ps1 -useb | iex
    
    


    2단계: Fly.io에 로그인



    Fly.io 계정이 이미 있는지 확인하세요.

    flyctl auth login
    
    


    3단계: Authorizer용 Fly.io 앱 만들기



    작업 공간의 디렉토리를 생성하고 생성된 디렉토리로 이동합니다.

    flyctl launch --org personal --name authorizer --region lax --no-deploy
    
    


    참고: 이 샘플에서는 authorizer 지역 및 lax 조직에서 personal라는 앱을 만들었습니다. Fly.io 지역에 대한 자세한 내용은 this documentation을 참조하십시오.

    4단계: fly.toml 파일 구성



    새 파일fly.toml을 찾을 수 있습니다. 이 파일은 Fly.io의 배포 구성 파일입니다.

    이 부품을 fly.toml 파일에 추가합니다.

    [build]
    image = "lakhansamani/authorizer:latest"
    
    [experimental]
    private_network = true
    cmd = ["./build/server", "--database_type=postgres"]
    allowed_public_ports = []
    auto_rollback = true
    
    [env]
      PORT = "8080"
      FLY_REGION = "sin"
    
    


    그런 다음 다음과 같이 internal_port 섹션 내에서 8080[[services]]로 변경합니다.

    [[services]]
      internal_port = 8080
      processes = ["app"]
      protocol = "tcp"
      script_checks = []
    
    


    전체fly.toml 파일은 다음과 같습니다.

    app = "authorizer"
    kill_signal = "SIGINT"
    kill_timeout = 5
    processes = []
    
    [build]
    image = "lakhansamani/authorizer:latest"
    
    [experimental]
    private_network = true
    cmd = ["./build/server", "--database_type=postgres"]
    auto_rollback = true
    
    [env]
      PORT = "8080"
      FLY_REGION = "sin"
    
    [[services]]
      internal_port = 8080
      processes = ["app"]
      protocol = "tcp"
      script_checks = []
    
      [services.concurrency]
        type = "connections"
        hard_limit = 25
        soft_limit = 20
    
      [[services.ports]]
        force_https = true
        handlers = ["http"]
        port = 80
    
      [[services.ports]]
        handlers = ["tls", "http"]
        port = 443
    
      [[services.tcp_checks]]
        grace_period = "1s"
        interval = "15s"
        restart_limit = 0
        timeout = "2s"
    
    


    5단계: 데이터베이스 준비



    우리는 데이터베이스에 Postgres를 사용할 것입니다. 다음 명령을 실행하여 Fly.io에서 Postgres 인스턴스를 생성합니다.

    flyctl postgres create \
      --organization personal \
      --name authorizer-db \
      --initial-cluster-size 1 \
      --password $(openssl rand -hex 8) \
      --region lax \
      --vm-size shared-cpu-1x \
      --volume-size 3
    
    


    Postgres 데이터베이스를 연결하려면 다음 명령을 사용하여 연결해야 합니다.

    flyctl postgres attach --postgres-app authorizer-db
    
    


    이 명령은 환경 변수를 추가합니다DATABASE_URL. 이 변수 이름은 필수 Authorizer envar와 동일하므로 변수 이름을 제거하거나 변경할 필요가 없습니다.

    6단계: 배포



    앱을 배포하기 전에 일부 구성을 변경해야 합니다. 운 좋게도 Authorizer는 envar를 사용하여 이를 쉽게 만듭니다. 그런 다음 ADMIN_SECRET 에 대한 임의의 문자열을 생성해야 합니다. 이 암호는 관리 콘솔에 대한 인증에 사용됩니다.

    예를 들어 openssl를 사용할 수 있습니다.

    openssl rand -base64 500 | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
    
    


    Fly.io 앱에 몇 가지 환경 변수를 추가합니다.

    flyctl secrets set \
        ENV="production" \
        ADMIN_SECRET=CHANGE_THIS_BY_WHATEVER_YOU_WANT \
        DATABASE_TYPE="postgres" \
        SENDER_EMAIL=CHANGE_THIS \
        SMTP_HOST=CHANGE_THIS \
        SMTP_PASSWORD=CHANGE_THIS \
        SMTP_PORT=587 \
        SMTP_USERNAME=CHANGE_THIS \
        ORGANIZATION_NAME="Feelantera" \
        URL="https://authorizer.fly.dev"
    
    


    Find out more about Environment Variables here.



    마지막으로 다음 명령을 실행하여 앱을 배포합니다.

    flyctl deploy
    
    


    배포 프로세스가 완료되면 애플리케이션 로그를 확인합니다.

    flyctl logs
    
    


    Remember: every time you make a change to the envars, Fly.io will redeploy your app.



    축하합니다. 응용 프로그램에 대한 인증 서비스가 있습니다! https://authorizer.fly.dev를 열고 인증 비밀번호로 ADMIN_SECRET를 사용하십시오.

    좋은 웹페이지 즐겨찾기