Fly.io部署Authorizer
当我们创建应用程序时,将花费大量时间来创建身份验证功能。如果您添加更多登录功能,例如 OAuth、SAML 等,则会增加更多的工作量和成本。 Auth0、Okta、OneLogin、AWS Cognito 或其他类似服务是解决此问题的快速解决方案。但是,如果您对隐私有偏执,您肯定会更喜欢使用本地服务。
目前,有几种身份验证应用程序可供免费使用,其中一些是开源的。 Keycloack、FusionAuth、Gluu 和 Ory 就是一些例子。根据我尝试这些产品的经验,它们拥有完整的文档,但安装和部署过程并不像弹指一样简单。
几周前,当我浏览 Product Hunt 时,有一个名为 Authorizer 的新产品。然后我很想试试这个。官方文档提供了在 Heroku、Render 和 Railway 等各种服务上安装或部署 Authorizer 的说明。我想尝试将它部署到Fly.io,不幸的是,我找不到文档,我仍然没有找到有关此的教程。所以,我做了一个小实验,结果如下。
有关授权者的更多信息,请访问authorizer.dev有关Fly.io的更多信息,请访问fly.io/docs
先决条件
-
PC 或笔记本电脑(绝对)
-
你最喜欢的终端
-
一杯咖啡或你最喜欢的饮料
-
AFly.io账号
我使用的是 macOS,您需要根据您使用的操作系统调整一些命令。
第 1 步:安装Fly.ioCLI
macOS
brew install flyctl
Linux
curl -L https://fly.io/install.sh | sh
窗户
iwr https://fly.io/install.ps1 -useb | iex
第二步:登录Fly.io
确保您已经有一个Fly.io帐户。
flyctl auth login
第 3 步:为 Authorizer 创建Fly.io应用程序
为工作区创建一个目录并移动到您创建的目录。
flyctl launch --org personal --name authorizer --region lax --no-deploy
注意:在此示例中,我在lax区域和personal组织中创建了一个名为authorizer的应用程序。有关Fly.io区域的更多信息,请阅读本文档。
第四步:配置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"
然后在[[services]]部分内将internal_port更改为8080,如下所示:
[[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"
在此处](https://docs.authorizer.dev/core/env)了解有关环境变量[的更多信息。
最后,通过执行以下命令部署应用程序:
flyctl deploy
部署过程完成后,检查应用程序日志:
flyctl logs
请记住:每次您对 envars 进行更改时,Fly.io都会重新部署您的应用程序。
恭喜,您的应用程序具有身份验证服务!打开https://authorizer.fly.dev,使用ADMIN_SECRET作为认证密码。
更多推荐


所有评论(0)