前言最近在折腾自己的一个小项目需要给应用加上登录功能。起初打算用那些大厂的认证服务但看着每个月按用户数计费的账单想想还是放弃了。后来发现了 Logto 这个开源项目简单来说它就是一个可以自己搭建的“认证中心”。Logto 的身份有点像“开源版的 Auth0”把用户登录、注册、社交账号接入这些繁琐的事情都包办了。它提供了现成的登录页面支持密码、验证码、微信、谷歌等多种登录方式还有个管理后台可以看用户数据。对开发者来说最吸引人的是它基于 OIDCOpenID Connect标准意味着只要你的应用支持这个协议就能无缝接入。这篇文章记录了我自己在云服务器上部署 Logto 的完整过程。如果你也是刚接触服务器跟着一步步来应该能把服务跑起来。准备工作准备一台具备公网IP的云服务器推荐使用雨云优惠注册地址https://www.rainyun.com/sn_使用优惠码sn注: 使用优惠码注册后绑定微信可领取5折优惠券服务器选购步骤注册后在总览页面找到云服务器入口进入后点击购买云服务器2.根据需求选择合适的配置建议选择国内的服务器访问更快选好后点击立即购买即可3.选好后进入控制台使用SSH客户端远程连接服务器即可SSH客户端建议选择FinalShell提前装好 Docker 和 Docker Compose虽然 Logto 可以用 npm 直接安装但用 Docker 部署无疑是最省心的方式环境隔离、迁移、备份都方便。如果你的服务器还没装 Docker可以用下面这两行命令搞定# 安装 Dockercurl-fsSLhttps://get.docker.com-oget-docker.shsudoshget-docker.sh# 安装 Docker Composesudoapt-getinstalldocker-compose-plugin装完记得把当前用户加入 docker 组避免每次都要敲sudosudousermod-aGdocker$USER# 退出 SSH 重登生效部署过程第一步获取 Logto 的 Docker 编排文件Logto 官方提供了 Docker Compose 配置把整套服务核心服务、管理后台、PostgreSQL 数据库、Redis 缓存都整合在一起。我们只需要把它下载到服务器上。# 创建工作目录mkdir~/logtocd~/logto# 下载官方 docker-compose 文件wgethttps://raw.githubusercontent.com/logto-io/logto/HEAD/docker-compose.yml下载完成后可以用ls -l看一眼文件是否完整。第二步调整配置可选官方提供的docker-compose.yml默认配置可以直接用。但如果你想让服务长期稳定运行有几个地方可以微调数据持久化检查文件里有没有volumes配置确保数据库和日志数据能保存在宿主机上否则容器删了数据就丢了。环境变量Logto 支持通过环境变量调整行为。比如你想自定义数据库地址或者开启某些实验功能可以在docker-compose.yml的environment段落里添加。常用变量包括TRUST_PROXY_HEADER如果用了 Nginx 反代设成trueREDIS_URL指定 Redis 地址CORS_ORIGIN如果前端单独部署且域名不同需要配置跨域新手可以先不动这些跑起来再说。第三步启动服务在~/logto目录下执行dockercompose up-d-d参数让容器在后台运行。第一次启动会拉取镜像根据网速可能需要几分钟。启动后用docker compose ps查看状态应该能看到三个容器在运行logto核心认证服务logto-dbPostgreSQL 数据库logto-redisRedis 缓存如果某个容器状态不是Up可以用docker compose logs 服务名看日志排查。第四步防火墙放行端口Logto 默认占用的端口3001核心服务处理登录请求3002管理后台Admin Console需要在云服务商的控制台安全组策略和服务器防火墙里放行这两个端口。以 Ubuntu 的 UFW 为例sudoufw allow3001/tcpsudoufw allow3002/tcp如果是 CentOS 用 firewalld命令略有不同。初始化与管理后台首次访问服务启动后在浏览器输入http://你的服务器IP:3002应该能看到 Logto 的管理后台欢迎页。注意首次访问要用3002端口而不是3001。3001是给应用认证用的直接访问会报错unknown-session这是正常现象。创建管理员账号点击“创建账号”填写邮箱、用户名、密码。这个账号就是你的 Logto 超级管理员用来配置所有认证设置。快速体验登录管理后台后可以先去“应用”菜单创建一个“传统 Web 应用”拿到App ID和App Secret。然后在“登录体验”里配置一下就能看到一个可用的登录页面了。配置域名和 HTTPS生产环境必做用 IP 加端口的方式访问登录时浏览器会报“不安全”而且有些社交登录强制要求回调地址必须是 HTTPS。所以如果要正式使用域名和 SSL 证书是绕不开的。方案 A用 Nginx 反代推荐在服务器上安装 Nginx配置一个域名比如auth.yourdomain.com然后做两层转发把https://auth.yourdomain.com/admin转发到http://127.0.0.1:3002管理后台把https://auth.yourdomain.com转发到http://127.0.0.1:3001认证服务SSL 证书可以在雨云免费申请。结语至此一个属于自己的认证服务就跑起来了。以后再做新项目不管是 Vue 前端、Flutter 应用还是小程序都可以接入 Logto 来实现登录功能省去了重复造轮子的麻烦。Logto 的功能远不止于此它还支持多因素认证、社交登录微信、GitHub、Google、组织多租户等高级特性。这些都可以在管理后台里慢慢摸索。如果在部署过程中遇到问题先别急用docker compose logs看看日志错误信息通常已经把原因说得很清楚了。
从零开始搭建 Logto 详细教程!
前言最近在折腾自己的一个小项目需要给应用加上登录功能。起初打算用那些大厂的认证服务但看着每个月按用户数计费的账单想想还是放弃了。后来发现了 Logto 这个开源项目简单来说它就是一个可以自己搭建的“认证中心”。Logto 的身份有点像“开源版的 Auth0”把用户登录、注册、社交账号接入这些繁琐的事情都包办了。它提供了现成的登录页面支持密码、验证码、微信、谷歌等多种登录方式还有个管理后台可以看用户数据。对开发者来说最吸引人的是它基于 OIDCOpenID Connect标准意味着只要你的应用支持这个协议就能无缝接入。这篇文章记录了我自己在云服务器上部署 Logto 的完整过程。如果你也是刚接触服务器跟着一步步来应该能把服务跑起来。准备工作准备一台具备公网IP的云服务器推荐使用雨云优惠注册地址https://www.rainyun.com/sn_使用优惠码sn注: 使用优惠码注册后绑定微信可领取5折优惠券服务器选购步骤注册后在总览页面找到云服务器入口进入后点击购买云服务器2.根据需求选择合适的配置建议选择国内的服务器访问更快选好后点击立即购买即可3.选好后进入控制台使用SSH客户端远程连接服务器即可SSH客户端建议选择FinalShell提前装好 Docker 和 Docker Compose虽然 Logto 可以用 npm 直接安装但用 Docker 部署无疑是最省心的方式环境隔离、迁移、备份都方便。如果你的服务器还没装 Docker可以用下面这两行命令搞定# 安装 Dockercurl-fsSLhttps://get.docker.com-oget-docker.shsudoshget-docker.sh# 安装 Docker Composesudoapt-getinstalldocker-compose-plugin装完记得把当前用户加入 docker 组避免每次都要敲sudosudousermod-aGdocker$USER# 退出 SSH 重登生效部署过程第一步获取 Logto 的 Docker 编排文件Logto 官方提供了 Docker Compose 配置把整套服务核心服务、管理后台、PostgreSQL 数据库、Redis 缓存都整合在一起。我们只需要把它下载到服务器上。# 创建工作目录mkdir~/logtocd~/logto# 下载官方 docker-compose 文件wgethttps://raw.githubusercontent.com/logto-io/logto/HEAD/docker-compose.yml下载完成后可以用ls -l看一眼文件是否完整。第二步调整配置可选官方提供的docker-compose.yml默认配置可以直接用。但如果你想让服务长期稳定运行有几个地方可以微调数据持久化检查文件里有没有volumes配置确保数据库和日志数据能保存在宿主机上否则容器删了数据就丢了。环境变量Logto 支持通过环境变量调整行为。比如你想自定义数据库地址或者开启某些实验功能可以在docker-compose.yml的environment段落里添加。常用变量包括TRUST_PROXY_HEADER如果用了 Nginx 反代设成trueREDIS_URL指定 Redis 地址CORS_ORIGIN如果前端单独部署且域名不同需要配置跨域新手可以先不动这些跑起来再说。第三步启动服务在~/logto目录下执行dockercompose up-d-d参数让容器在后台运行。第一次启动会拉取镜像根据网速可能需要几分钟。启动后用docker compose ps查看状态应该能看到三个容器在运行logto核心认证服务logto-dbPostgreSQL 数据库logto-redisRedis 缓存如果某个容器状态不是Up可以用docker compose logs 服务名看日志排查。第四步防火墙放行端口Logto 默认占用的端口3001核心服务处理登录请求3002管理后台Admin Console需要在云服务商的控制台安全组策略和服务器防火墙里放行这两个端口。以 Ubuntu 的 UFW 为例sudoufw allow3001/tcpsudoufw allow3002/tcp如果是 CentOS 用 firewalld命令略有不同。初始化与管理后台首次访问服务启动后在浏览器输入http://你的服务器IP:3002应该能看到 Logto 的管理后台欢迎页。注意首次访问要用3002端口而不是3001。3001是给应用认证用的直接访问会报错unknown-session这是正常现象。创建管理员账号点击“创建账号”填写邮箱、用户名、密码。这个账号就是你的 Logto 超级管理员用来配置所有认证设置。快速体验登录管理后台后可以先去“应用”菜单创建一个“传统 Web 应用”拿到App ID和App Secret。然后在“登录体验”里配置一下就能看到一个可用的登录页面了。配置域名和 HTTPS生产环境必做用 IP 加端口的方式访问登录时浏览器会报“不安全”而且有些社交登录强制要求回调地址必须是 HTTPS。所以如果要正式使用域名和 SSL 证书是绕不开的。方案 A用 Nginx 反代推荐在服务器上安装 Nginx配置一个域名比如auth.yourdomain.com然后做两层转发把https://auth.yourdomain.com/admin转发到http://127.0.0.1:3002管理后台把https://auth.yourdomain.com转发到http://127.0.0.1:3001认证服务SSL 证书可以在雨云免费申请。结语至此一个属于自己的认证服务就跑起来了。以后再做新项目不管是 Vue 前端、Flutter 应用还是小程序都可以接入 Logto 来实现登录功能省去了重复造轮子的麻烦。Logto 的功能远不止于此它还支持多因素认证、社交登录微信、GitHub、Google、组织多租户等高级特性。这些都可以在管理后台里慢慢摸索。如果在部署过程中遇到问题先别急用docker compose logs看看日志错误信息通常已经把原因说得很清楚了。