electron-release-server部署electron自动更新服务器记录

news2024/10/5 21:18:34

目录

一、前言

环境

二、步骤

1、下载上传electron-release-server到服务器

2、宝塔新建node项目网站

3、安装依赖

①npm install 

②安装并配置postgres数据库

③修改项目配置文件

④启动项目

⑤修改postgres的认证方式

⑥Cannot find where you keep your Bower packages.

 4、宝塔网站添加网址

5、无法访问


一、前言

electron团队自己维护了一个免费开源的自动更新服务。 update.electronjs.org

但是,需要满足以下条件:

  • 应用运行在 macOS 或者 Windows
  • 应用有公开的 GitHub 仓库
  • 构建需要发布到 GitHub Releases 中
  • 构建是经过代码签名的

很明显,我2、3、4条都不符合。那就用electron-release-server部署一个自己的更新服务器。

环境

  • 阿里云2核2G 3M CentOS 7.9 64位
  • 宝塔面板
  • Node14.17.6

二、步骤

1、下载上传electron-release-server到服务器

electron-release-server项目地址:GitHub - ArekSredzki/electron-release-server: A fully featured, self-hosted release server for electron applications, compatible with auto-updater.A fully featured, self-hosted release server for electron applications, compatible with auto-updater. - ArekSredzki/electron-release-servericon-default.png?t=N7T8https://github.com/ArekSredzki/electron-release-server

我上传到了update目录下:

2、宝塔新建node项目网站

宝塔后台:网站  > Node项目  > 添加Node项目,如下图:

网站配置项说明:

  • 项目目录:我的是update目录,你可以根据自己的喜好修改。
  • 项目名称:随你喜欢。
  • 启动选项:宝塔会自动读取package.json的script配置,选择 start 【node app.js】
  • 项目端口:这里暂时先填写1337,后面会说到这个端口可以在哪里修改。
  • 运行用户:这里必须选择root,否则项目不能启动成功。
  • 包管理器:我习惯用npm
  • Node版本:我就只装了一个版本,你也可以尝试其他版本。

3、安装依赖

①npm install 

这一步咱就不多说了,在宝塔update目录下运行终端。

②安装并配置postgres数据库
# 安装 PostgreSQL
sudo yum install -y postgresql-server postgresql-contrib

# 初始化数据库
sudo postgresql-setup initdb

# 启动 PostgreSQL 服务
sudo systemctl start postgresql

# 开机自启动设置
sudo systemctl enable postgresql

# 切换到 postgres 用户
sudo -i -u postgres

# 运行 psql shell
psql

在 psql shell 中,执行以下命令:


CREATE ROLE electron_release_server_user ENCRYPTED PASSWORD 'MySecurePassword' LOGIN;

 这条 PostgreSQL 的 SQL 命令用于创建一个新的数据库用户(角色),其具体含义如下:
      CREATE ROLE:这个命令用来创建一个新的数据库角色。在 PostgreSQL 中,角色可以是用来登录的用户,也可以是代表一组权限的组。
      electron_release_server_user:这是新角色的名字,在这个上下文中,它代表的是一个用户账号。
        ENCRYPTED PASSWORD 'MySecurePassword':这指定了新用户的密码,并指示 PostgreSQL 使用加密的形式存储密码。'MySecurePassword' 是角色的密码,你应该在实际使用中将其替换为一个强密码。

        这里electron-release-server作者推荐了一个密码生成网站GRC | Ultra High Security Password Generator  Ultra high security password generatoricon-default.png?t=N7T8https://www.grc.com/passwords.htm     使用:   63 random alpha-numeric characters ,每次刷新都会变化。


        LOGIN:这个选项允许这个角色被用作登录角色,即它可以用作用户账号登录到数据库。
        执行这条命令后,electron_release_server_user 角色将在数据库中被创建,并且可以用指定的密码进行登录。这通常是在刚刚安装完成 PostgreSQL,或者是在设置新的应用程序时需要进行的设定,以便应用程序可以使用这个用户角色连接到数据库并进行操作。
        在实际使用中,通常还会授权这个角色访问特定的数据库或进行其他必要的权限设置。这样做可以提高安全性,因为它确保了应用程序仅有足够的权限来完成其需要执行的数据库r操作,而不会有更多过剩的权限。

然后在postgres为刚刚创建的用户创建2个表:

CREATE DATABASE electron_release_server OWNER "electron_release_server_user";
CREATE DATABASE electron_release_server_sessions OWNER "electron_release_server_user";
③修改项目配置文件

在electron-release-server项目下,找到config文件夹下的local.template,这是一个配置模版文件。

修改后的代码如下:

module.exports = {

  // The full base url at which your site will be primarily available.
  // Include an http:// prefix
  // ex. 'http://my-site.com'
  appUrl: '先不填,后面再搞',

  auth: {
    // 后台管理员帐号密码
    static: {
      username: 'admin',
      password: '123456aa'
    },
  },

//这里不知道是干啥的,就是必须填写一个密钥,还是用上面提到的那个网站,复制一个63位的字符串
  jwt: {
    // Recommended: 63 random alpha-numeric characters for secret
    // Generate using: https://www.grc.com/passwords.htm
    token_secret: 'qHrksXUmZWXQTZpoc9KN3E4TQbfpTFtowp1wpqN9olPh4Cnbt9nnt0wUdzPlF9B'
  },

  models: {
    datastore: 'postgresql',

    dataEncryptionKeys: {
      // DEKs should be 32 bytes long, and cryptographically random.
      // You can generate such a key by running the following:
      //   require('crypto').randomBytes(32).toString('base64')

       //上面说的很清楚,生成一个32位的字符串,看字面意思,加密数据用的密钥
      default: 'lp60Yb9wJYx8TgJa+2GmPTngNRIQMXTxlIXicEoYOfs='
    },
  },

  datastores: {
    postgresql: {
      adapter: 'sails-postgresql',
      host: 'localhost',
      user: 'electron_release_server_user', //这就是上面创建的数据库用户名
        //数据库密码
      password: 'IM6WZMxcCyf55lnccZUdvEJ9UggsTUVqGnYHbvWqrGPgfsUs27OUjl2t9kSziJ7',
      database: 'electron_release_server'//上面创建了2个数据库,这里填第一个数据库名称
    }
  },

  session: {
    // Recommended: 63 random alpha-numeric characters for secret
    // Generate using: https://www.grc.com/passwords.htm
     //还是,还是,还是生成一个63密码
    secret: '3i0a7ZXMWeb0TjfqkzD09JvlOs4e844FjR0bmlbiJdkASh3JG0BFRxUpAqbe5Vd',
    database: 'electron_release_server_sessions',//第二个数据库名
    host: 'localhost',
    user: 'electron_release_server_user',//数据库用户名
    //数据库密码
    password: 'IM6WZMxcCyf55lnccZUdvEJ9UggsTUVqGnYHbvWqrGPgfsUs27OUjl2t9kSziJ7',
//随便填写一个没有被占用的端口,我这里默认了
    port: 5432
  },

  files: {
    // Folder must exist and user running the server must have adequate perms
    dirname: 'upload_files',//你的文件上传目录(更新包),这个是我猜的,还没有测试
    // Maximum allowed file size in bytes
    // Defaults to 500MB
    // maxBytes: 524288000 
  },

  port: 1337,//项目端口


};
④启动项目

执行 npm start

报错:

> node app.js

 info: ·• Auto-migrating...  (alter)
 info:    Hold tight, this could take a moment.
error: A hook (`orm`) failed to load!
error: Failed to lift app: Exception: `getConnection` failed ("failed").  Could not acquire a connection to the database using the specified manager.
Additional data:

{
  error: error: Ident authentication failed for user "electron_release_server_user"
      at Parser.parseErrorMessage (/www/wwwroot/update/node_modules/pg-protocol/dist/parser.js:287:98)
      at Parser.handlePacket (/www/wwwroot/update/node_modules/pg-protocol/dist/parser.js:126:29)
      at Parser.parse (/www/wwwroot/update/node_modules/pg-protocol/dist/parser.js:39:38)
      at Socket.<anonymous> (/www/wwwroot/update/node_modules/pg-protocol/dist/index.js:11:42)
      at Socket.emit (events.js:400:28)
      at addChunk (internal/streams/readable.js:290:12)
      at readableAddChunk (internal/streams/readable.js:265:9)
      at Socket.Readable.push (internal/streams/readable.js:204:10)
      at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
    length: 114,
    severity: 'FATAL',
    code: '28000',
    detail: undefined,
    hint: undefined,
    position: undefined,
    internalPosition: undefined,
    internalQuery: undefined,
    where: undefined,
    schema: undefined,
    table: undefined,
    column: undefined,
    dataType: undefined,
    constraint: undefined,
    file: 'auth.c',
    line: '305',
    routine: 'auth_failed'
  },
  meta: undefined
}
    at validateDatastoreConnectivity (/www/wwwroot/update/node_modules/waterline/lib/waterline/utils/system/validate-datastore-connectivity.js:27:25)
    at /www/wwwroot/update/node_modules/waterline/lib/waterline.js:722:18
    at Immediate.done [as _onImmediate] (/www/wwwroot/update/node_modules/sails-postgresql/lib/adapter.js:72:16)
    at processImmediate (internal/timers.js:464:21)
error: More details (raw): {
  error: error: Ident authentication failed for user "electron_release_server_user"
      at Parser.parseErrorMessage (/www/wwwroot/update/node_modules/pg-protocol/dist/parser.js:287:98)
      at Parser.handlePacket (/www/wwwroot/update/node_modules/pg-protocol/dist/parser.js:126:29)
      at Parser.parse (/www/wwwroot/update/node_modules/pg-protocol/dist/parser.js:39:38)
      at Socket.<anonymous> (/www/wwwroot/update/node_modules/pg-protocol/dist/index.js:11:42)
      at Socket.emit (events.js:400:28)
      at addChunk (internal/streams/readable.js:290:12)
      at readableAddChunk (internal/streams/readable.js:265:9)
      at Socket.Readable.push (internal/streams/readable.js:204:10)
      at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
    length: 114,
    severity: 'FATAL',
    code: '28000',
    detail: undefined,
    hint: undefined,
    position: undefined,
    internalPosition: undefined,
    internalQuery: undefined,
    where: undefined,
    schema: undefined,
    table: undefined,
    column: undefined,
    dataType: undefined,
    constraint: undefined,
    file: 'auth.c',
    line: '305',
    routine: 'auth_failed'
  },
  meta: undefined
}
⑤修改postgres的认证方式

上面的错误就是因为认证方式引起的。

需要更改 PostgreSQL 的 pg_hba.conf 配置文件,将认证方法全部改为password。

pg_hba.conf文件路径:

/var/lib/pgsql/data/pg_hba.conf

如下图所示:

 

⑥Cannot find where you keep your Bower packages.
Aborted due to warnings.
Running "wiredep:task" (wiredep) task
Warning: Error: Cannot find where you keep your Bower packages. 

这个咱就不懂了,问了GPT,回答如下:

 安装 Bower 包:确保您已经在项目中安装了 Bower,以及所需的依赖。如果未安装,您可以使用以下命令来安装 Bower:

   npm install -g bower
 

然后在项目根目录下运行 bower install 来安装项目的前端依赖。

但是我执行bower install时,提示找不到bower命令,这明显是环境变量没有设置。

执行:

export PATH=$PATH:$(npm config get prefix)/bin

 4、宝塔网站添加网址

在宝塔网站设置里,添加网址。

然后就访问网址,OK!!!

5、无法访问

去阿里云安全组查看是否放行了80端口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1476953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity(第十四部)光照

原始的有默认灯光、除了默认的你还可以创建 1、定向光源&#xff08;类似太阳、从无限远的地方射向地面的光&#xff0c;光源位置并不影响照射角度等&#xff0c;不同方向的旋转影响角度和明亮&#xff09; 1. 颜色&#xff1a;调整光的颜色2. 模式&#xff1a;混合是实时加烘…

【InternLM 实战营笔记】LMDeploy 的量化和部署

环境配置 vgpu-smi 查看显卡资源使用情况 新开一个终端执行下面的命令实时观察 GPU 资源的使用情况。 watch vgpu-smi复制环境到我们自己的 conda 环境 /root/share/install_conda_env_internlm_base.sh lmdeploy激活环境 conda activate lmdeploy安装依赖库 # 解决 Modu…

SpringBoot项目中如何结合Mybatis进行数据库查询

在Spring Boot项目中使用Mybatis进行数据库操作是一种常见的实现方式。下面我将展示如何在Spring Boot项目中整合Mybatis。这个示例将包括几个主要部分&#xff1a;项目依赖配置、配置文件、实体类、Mapper接口及其XML配置文件、服务类、以及一个简单的控制器。 1. 项目依赖配…

MyBatis-Plus 快速入门

介绍 j​​​​​MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网&#xff1a;MyBatis-Plus (baomidou.com) 1.…

sheng的学习笔记-卷积神经网络经典架构-LeNet-5、AlexNet、VGGNet-16

目录&#xff1a;目录 看本文章之前&#xff0c;需要学习卷积神经网络基础&#xff0c;可参考 sheng的学习笔记-卷积神经网络-CSDN博客 目录 LeNet-5 架构图 层级解析 1、输入层&#xff08;Input layer&#xff09; 2、卷积层C1&#xff08;Convolutional layer C1&…

2W字-35页PDF谈谈自己对QT某些知识点的理解

2W字-35页PDF谈谈自己对QT某些知识点的理解 前言与总结总体知识点的概况一些笔记的概况笔记阅读清单 前言与总结 最近&#xff0c;也在对自己以前做的项目做一个知识点的梳理&#xff0c;发现可能自己以前更多的是用某个控件&#xff0c;以及看官方手册&#xff0c;但是没有更…

卷积神经网络(CNN)原理与实现

卷积神经网络(CNN) 卷积神经网络原理卷积神经网络的数学推导卷积层反向传播算法数学推导卷积层实现代码 卷积神经网络(CNN) 卷积神经网络原理 卷积神经网络是一种用于图像、语音、自然语言等数据的深度学习模型&#xff0c;其核心思想是使用卷积操作提取输入数据的特征&…

tmux 工具常用命令

Tmux 是一个终端复用器&#xff08;terminal multiplexer&#xff09;&#xff0c;类似于 GNU screen 非常有用&#xff0c;属于常用的运维管理工具。 安装步骤 Ubuntu apt install tmux centos yum install tmux常用命令 以下所有快捷键&#xff0c;均是 ctrlb 按完之后先…

SpringBoot+Vue全栈开发-刘老师教编程(b站)(二)

创建SpringBoot项目 1.配置maven 出现bug java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/maven/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar!/org/springframework/boot/SpringApplication.class 类…

react-router 源码之matchPath方法

1. 基础依赖path-to-regexp react-router提供了专门的路由匹配方法matchPath(位于packages/react-router/modules/matchPath.js)&#xff0c;该方法背后依赖的其实是path-to-regexp包。 path-to-regexp输入是路径字符串&#xff08;也就是Route中定义的path的值&#xff09;&…

AI:145-智能监控系统下的行人安全预警与法律合规分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

vscode 设置打开终端的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

应急响应靶机训练-Web1【题解】

前言 接上文&#xff0c;应急响应靶机训练-Web1。 此文为应急响应靶机训练-Web1【题解】篇 解题过程 视频版&#xff1a; 另外&#xff0c;师傅们可以关注一下我们的bilibili&#xff0c;以后跟应急响应相关的靶机都会在bilibili发布一份视频 应急响应靶机训练-Web1【题解…

【MySQL】主从同步原理、分库分表

主从同步原理 1. 主从同步原理 MySQL 经常先把命令拷入硬盘的日志&#xff0c;再执行日志的命令&#xff0c;这样的好处&#xff1a; 日志的位置固定&#xff0c;拷入硬盘的开销不大&#xff1b;将命令先准备好&#xff0c;而不是边读边执行&#xff0c;性能更好&#xff0c;…

TCGA临床及肿瘤信息解读

TCGA临床信息各英文列解读 地址&#xff1a;https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?viewtable-entity-list&anchorclinical 一些用药 Cisplatin&#xff1a;顺铂&#xff0c;顺铂的作用机制主要通过与DNA结合&#xff0c;形成DNA-顺铂加合物&#xff0…

练习 2 Web [ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 Web常规题目 首先尝试查找常见的前端页面index.php之类的&#xff0c;没找到 题目有个“BackupFile”——备份文件 尝试用工具遍历查找相关的文件 御剑没扫出来&#xff0c;搜索搭建好dirsearch后&#xff0c;扫出来的index.php.bak 扫描工…

【4.3计算机网络】网络规划与设计

目录 1.网络规划2.逻辑网络设计3.物理网络设计 1.网络规划 需求分析->通信规范分析->逻辑网络设计->物理网络设计->实施阶段 2.逻辑网络设计 3.物理网络设计 例题1&#xff1a; 解析&#xff1a;选A。 例题2&#xff1a; 解析&#xff1a;选A。 例题3. 解析&am…

2024年小程序云开发CMS内容管理无法使用,无法同步内容模型到云开发数据库的解决方案,回退老版本CMS内容管理的最新方法

一&#xff0c;问题描述 最近越来越多的同学找石头哥&#xff0c;说cms用不了&#xff0c;其实是小程序官方最近又搞大动作了&#xff0c;偷偷的升级的云开发cms&#xff08;内容管理&#xff09;以下都称cms&#xff0c;不升级不要紧&#xff0c;这一升级&#xff0c;就导致我…

uniapp:启动图 .9png 制作教程

1、工具安装&#xff1a;自行下载Android Studio 2、制作.9png 注意上图3条黑线的位置&#xff0c;意思是&#xff1a;标注黑线的位置可以进行缩放。 对其大多数启动图来说&#xff0c;标注以上3条黑线即可。

Sora的潜力与影响:对视频制作、广告、娱乐等行业的深度解析

随着技术的飞速发展&#xff0c;OpenAI推出的Sora模型已经引起了广泛关注。作为一款强大的视频生成工具&#xff0c;Sora不仅改变了视频制作的传统模式&#xff0c;更对广告、娱乐等多个行业产生了深远影响。本文将深度解析Sora的潜力与影响&#xff0c;探讨其在视频制作、广告…