ookamiriru
877 字
4 分钟
在家里云上部署logto
随着自己的东西越来越多,每个站点都要搞一遍登录非常麻烦,所以部署一个单点登录来简化步骤
目录
环境准备
logto在本地部署时需要以下环境
Node.js >=22.14.0 以及 PostgreSQL >=14.0
注: 虽然logto文档所写的Node.js版本是>=18.12.0,但是该项目实际需要Node.js版本为>=22.14.0
部署时使用的系统环境为debian-13-genericcloud,使用反代或CDN转换端口
先换源为国内源然后更新,不赘述
安装nginx、配置ddns、cdn等不再说明
安装Node.js和npm
wget https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xzmkdir /etc/nodejstar -xvf node-v22.14.0-linux-x64.tar.xzmv node-v22.14.0-linux-x64 /etc/nodejs/22.14.0rm node-v22.14.0-linux-x64.tar.xzln -s /etc/nodejs/22.14.0/bin/node /bin/nodeln -s /etc/nodejs/22.14.0/bin/npm /bin/npmln -s /etc/nodejs/22.14.0/bin/npx /bin/npxln -s /etc/nodejs/22.14.0/bin/corepack /bin/corepackcorepack enable#检查版本node -v #应输出v22.14.0npm -v #应输出10.9.2npx -v #应输出10.9.2安装PostgreSQL
apt install postgresql -y配置PostgreSQL
su postgrespsql #进入psql的命令行\password #设置密码CREATE DATABASE logto; #创建logto数据库修改 /etc/postgresql/<你的psql版本,如17>/main/postgresql.conf 文件第 60 行取消注释,允许本地登入数据库。
listen_addresses = 'localhost' # what IP address(es) to listen on;然后重启psql
systemctl restart postgresql.service安装logto
交互式安装
npm i @logto/cli -g #全局安装logto的cli,便于后续步骤logto init #如果默认下载速度慢,使用--download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz指定下载链接#logto init --download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz如果添加--ss则跳过数据库播种(适合已经有数据库升级版本时使用)
logto init -p /root/logto --download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz --ss也可以选用npm进行安装,使用--分隔需要传递的参数
#交互式安装npm init @logto@latest#如果默认下载缓慢,可以使用 --download-url=<url>指定链接npm init @logto@latest -- --download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz静默安装
#使用@logto/clilogto -p /root/logto --download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz --db-url postgresql://postgres:passwd@localhost:5432/logto#使用npmnpm init @logto@latest -- -p /root/logto --download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz --db-url postgresql://postgres:passwd@localhost:5432/logto添加官方连接器
logto connector add --official #不建议运行,见说明注:实际官方连接器已存在,此步骤应跳过,但是在官方文档中出现了,若执行本命令,将会导致不兼容的模块被引入(该模块需求更低版本的nodejs),应当执行链接本地连接器的命令
将本地连接器链接到logto
logto connector link配置反代或CDN
(此处不进行赘述)
注: 配置登录的源端口为3001,管理的源端口为3002,均使用HTTPS反代监听443端口,使用sni区分,并需要在 logto/.env文件中添加以下配置项(域名需要在反代或cdn同步配置)
TRUST_PROXY_HEADER=true //此配置允许logto信任反向代理传回的ipENDPOINT=<你的登录端点> //如https://logto.shigu.ccADMIN_ENDPOINT=<你的管理端点> //如https://logto-admin.shigu.cc配置systemd
创建/etc/systemd/system/logto.service
[Unit]Description=LogtoDocumentation=https://docs.logto.io# After=ddns-go.target #如果你需要logto在其他服务之后启动可以保留这一行Wants=network.target
[Service]WorkingDirectory=/root/logtoExecStart=/usr/bin/npm startRestart=on-abnormalRestartSec=5sKillMode=mixed
StandardOutput=/var/log/logto.logStandardError=syslog
[Install]WantedBy=multi-user.target更新版本
logto有更新时可以直接更新,只需要保证数据库和配置文件不变
#停止当前服务systemctl disable --now logto#备份配置cp logto/.env ./#删除旧目录rm -rf logto#检查当前@logto/cli版本logto -v#先更新@logto/clinpm update -g @logto/clilogto -v#安装新版本,注意,数据库已经创建,需要通过--ss跳过数据库播种logto init -p /root/logto --download-url=https://gh-proxy.org/https://github.com/logto-io/logto/releases/latest/download/logto.tar.gz --ss#还原配置文件cp .env logto/#链接连接器logto connector link#更新数据库logto db alteration deploy#重新启动服务systemctl enable --now logto 分享
如果这篇文章对你有帮助,欢迎分享给更多人!