构建Actual网页客户端镜像

news2024/11/24 6:27:41

在这里插入图片描述

什么是 Actual ?

Actual 是一款超快速且注重隐私的本地优先的财务应用程序,用于管理您的财务。其核心是经过充分验证且深受喜爱的信封预算方法。它是 100% 免费和开源的。

Actual 具有多设备同步、可选的端到端加密等等功能。默认情况下,它不会将所有数据存储在互联网上,而是将所有数据存储在本地。这意味着无论您的网络连接如何,它都可以正常工作,并且您始终可以直接访问您的数据。

而当您的数据存储在云端时,您可以从任何设备轻松访问它,而且您永远不必担心万一您的笔记本电脑或手机掉入湖中会丢失数据。

Actual 分为服务端和客户端,其客户端支持主流的平台

  • 服务端,官方提供了 Docker 镜像;

  • Web 客户端的意义其实不大,功能、界面和服务端是一样的。官方提供了 Dockerfile 文件,但只能本地编译,也就是说需要先下载源码再执行 docker-compose 安装,不仅麻烦,而且编译出来的镜像超过了 1G,比较适合用来搭建开发环境,作为用户来说就不大友好了;

  • 其他客户端下载地址:https://actualbudget.com/download-platforms/

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

桌面客户端采用了 Electron 开发, Web 客户端共用的同一套代码,需要注意 的是:

  • 编译机器的内存要大一些,默认老苏编译用的虚拟机都是 2G 的,会提示系统内存不足,直接调到了 8G才顺利通过了;
  • 因为 nginx 中未做任何处理,网页在 sign out 服务器时,页面不会跳转,会显示 nginx 的错误,不用理会;

老苏改编后的 Dockerfile 如下:

# 构建阶段
FROM node:18-bullseye as dev
RUN apt-get update -y && apt-get upgrade -y && apt-get install -y openssl

WORKDIR /app
COPY . .

# 使用阿里云的源
RUN npm config set registry https://registry.npm.taobao.org/
RUN yarn install

# 构建应用程序
RUN yarn run build:browser

# 运行阶段
FROM nginx:1.12-alpine
LABEL maintainer=laosu<wbsu2003@gmail.com>

# 复制静态文件
COPY --from=dev /app/packages/desktop-client/build /usr/share/nginx/html

# 暴露 80 端口
EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

构建镜像和容器运行的基本命令如下👇

# 下载代码
git clone https://github.com/actualbudget/actual.git

# 或者加个代理
git clone https://ghproxy.com/github.com/actualbudget/actual.git

# 进入目录  
cd actual

# 构建镜像
docker build -t wbsu2003/actual:v1 .

# 运行Web客户端容器
docker run -d \
   --restart unless-stopped \
   --name actual-web \
   -p 15005:80 \
   -v $(pwd)/app:/app \
   wbsu2003/actual:v1

按官方 Dockerfile 编译的镜像

按老苏的 Dockerfile 编译的镜像

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

服务端和客户端是可以分别安装、分别使用的,也就意味着服务端和客户端可以安装在不同的机器上,好处是数据多了一个存储点

# 新建文件夹 actual 和 子目录
mkdir -p /volume1/docker/actual/{app,data}

# 进入 actual 目录
cd /volume1/docker/actual

# 运行服务端容器
docker run -d \
   --restart unless-stopped \
   --name actual-server \
   -p 15006:5006 \
   -v $(pwd)/data:/data \
   actualbudget/actual-server:latest

# 运行Web客户端容器
docker run -d \
   --restart unless-stopped \
   --name actual-web \
   -p 15005:80 \
   -v $(pwd)/app:/app \
   wbsu2003/actual:latest

运行

服务端

服务端建议使用 https 访问,尤其是你部署在公网环境时。如果你只是在局域网里,使用 http 也不是不行

在浏览器中输入 http://群晖IP:15006,点 Adcanced options

勾选后就可以激活 Open Actual

第一次要设置密码

假如你之前使用过,可以点 Import my budget 导入数据,也可以点 Start fresh 重新开始

服务端的主界面

首先要新增一个本地账户

创建成功后,就可以开始记账了

当使用 https 协议时,设置中可以启用 端到端加密

启用 Show advanced settings 后,会有更多高级设置

web 客户端

只是在局域网使用的话,用 http 协议也可以,在浏览器中输入 http://群晖IP:15005

勾选后会激活 Open Actual

填入服务器地址,当然你也可以选择 Don't use a server

输入密码

选择账本

开始记账,右上角会有 Sync 用于和服务端同步

如果你前面选择了 Don't use a server,右上角会显示 No server

其他平台的桌面客户端,应该是差不多的

参考文档

actualbudget/actual: A local-first personal finance app
地址:https://github.com/actualbudget/actual

actualbudget/actual-server: Actual’s server
地址:https://github.com/actualbudget/actual-server/tree/master

Introduction | Actual Budget Documentation
地址:https://actualbudget.org/docs/

Actual
地址:https://actualbudget.com/

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

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

相关文章

ssm医院门诊挂号系统源码和论文PPT

ssm医院门诊挂号系统源码和论文PPT008 开题报告 任务书 源码 数据库sql 论文 开发环境&#xff1a; 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 1.选题的背景和意义 …

高性能MySQL实战(二):索引

大家好&#xff0c;我是 方圆。我们在上篇 高性能MySQL实战&#xff08;一&#xff09;&#xff1a;表结构 中已经建立好了表结构&#xff0c;这篇我们则是针对已有的表结构和搜索条件为表创建索引。除此之外&#xff0c;我还会讲一些关于索引必须要了解的知识。原文收录在我的…

原来这才叫休息!——科学家揭示真正的“休息模式”

什么叫做休息&#xff1f;好好休息个周末&#xff1f;好好出去旅游一下&#xff1f;但事实上&#xff0c;往往越休息越感觉累。为什么呢&#xff1f;也许我们对休息存在误解&#xff0c;这篇文章会帮我们分析究竟该如何休息。 为什么你睡了11个小时仍然觉得疲累&#xff1f;为什…

【量化课程】06_化调仓策略

文章目录 6.1 如何衡量投资组合的收益率6.1.1 投资组合收益率的计算方法6.1.2 投资组合的绝对收益率和相对收益率 6.2 如何衡量投资组合的风险6.2.1 风险的定义6.2.2 投资组合的风险6.2.3 衡量投资组合的风险 6.3 最优化方法计算投资组合的最佳仓位6.3.1 等权重6.3.2 市值加权6…

Linux下常见的代理服务器软件介绍

在Linux系统中&#xff0c;代理服务器是我们搭建网络环境和处理网络请求的常用工具。但是&#xff0c;你知道Linux下常见的代理服务器软件有哪些吗&#xff1f;本文将为你带来对几款常见的Linux代理服务器软件的介绍&#xff0c;帮助你选择适合的代理服务器。 一、Squid&#…

根据数组中元素的位置号x,y和指定的计算规则z=f(x,y)创建数组,让x,y位置上的值是znp.fromfunction()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 根据数组中元素的位置号x,y 和指定的计算规则zf(x,y) 创建数组&#xff0c;让x,y位置上的值是z np.fromfunction() 选择题 下列说法错误的是? import numpy as np def func(i, j): return …

书单背景图片素材哪里找?这个工具赶紧用起来

好的文案是很重要的&#xff0c;但是如何找到好的文案却是一件很困难的事情。以下是一些可以寻找好的文案的方法分析&#xff0c;以及如何把书单文章转到视频的操作分享。 1.书籍和杂志&#xff1a;阅读关于广告、营销、文案和创意的书籍和杂志可以帮助你了解不同的文案类型和风…

《零基础实践深度学习》(第2版)学习笔记,(二)机器学习和深度学习综述

文章目录 1. 人工智能、机器学习、深度学习的关系2. 机器学习2.1 实现原理2.2 如何实施 3. 深度学习神经网络核心概念 1. 人工智能、机器学习、深度学习的关系 **人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;**是研发用于模拟、延伸和扩展人的智能…

【MySQL--->数据类型】

文章目录 [TOC](文章目录) 一、数据类型分类二、整型类型三、bit(位)类型四、float类型五、decimal类型六、char和varchar类型1.char类型2.varchar3.char与varchar的区别 七、日期与时间类型八、enum和set 一、数据类型分类 二、整型类型 数值类型有数据存储上限,而且每个类型都…

Crond计划任务和用户权限提升

目录 前言 一、一次性任务 1、at实现&#xff0c;atd服务 2、查看atd服务的状态&#xff1a;systemctl status atd 二、周期性任务 1.在/etc/crontab文件中写入计划任务 2、crontab文件的含义&#xff1a; 3、操作设置 三、用户权限提升 3.1 su 3.2 sudo提权 总结 前言…

【灵商课堂】知识的结束就是智慧的开始

心无挂碍&#xff0c;心无恐惧 1、知识不会通向智慧。 我们累积了关于很多事情的大量知识&#xff0c;但是要按照学到的知识去明智地行动&#xff0c;看起来几乎是不可能的。学校、学院和大学传授有关行为、宇宙、科学和各种技术的知识&#xff0c;但是这些教育中心很少帮助一个…

油耳朵适合什么样的耳机听歌,到底有没有适合油耳的耳机?

骨传导耳机就是利用震动来传递声音的耳机&#xff0c;在运动时佩戴骨传导耳机&#xff0c;可以听歌也能听周围的声音&#xff0c;提高了运动时的安全性。目前市面上的骨传导耳机也是琳琅满目。今天就来给大家分享下目前市面上比较常见的几款骨传导耳机。希望对正在选购骨传导耳…

【Java】教你如何实现接口防刷

文章目录 前言思路分析具体实现编写 RedisUtils定义Interceptor 改进 前言 我们在浏览网站后台的时候&#xff0c;假如我们频繁请求&#xff0c;那么网站会提示 “请勿重复提交” 的字样&#xff0c;那么这个功能究竟有什么用呢&#xff0c;又是如何实现的呢&#xff1f; 其实…

张驰咨询:提高企业竞争力,六西格玛设计公司(DFSS)在行动

六西格玛设计公司(DFSS)是一种专业从事六西格玛设计的企业&#xff0c;其主要作用是为客户提供高效的六西格玛设计服务&#xff0c;以帮助客户实现高品质、低成本和高效率的产品开发过程。六西格玛设计公司通常拥有一支专业的团队&#xff0c;具有丰富的六西格玛设计经验和技术…

Mybatis 源码 ④ :TypeHandler

文章目录 一、前言二、DefaultParameterHandler1. DefaultParameterHandler#setParameters1.1 UnknownTypeHandler1.2 自定义 TypeHandler 三、DefaultResultSetHandler1. hasNestedResultMaps2. handleRowValuesForNestedResultMap2.1 resolveDiscriminatedResultMap2.2 creat…

git一次错误提交的回滚(不同分支因merge-需回滚)

场景&#xff1a;提交到sit的代码&#xff0c;结果解决冲突merge了DEV的代码&#xff0c;所以要回滚到合并之前的代码 &#xff08;原因是我再网页上处理了冲突&#xff0c;他就自动merge了,如图—所以还是idea处理冲突&#xff0c;可控&#xff09; 方式二&#xff1a; &…

【网络基础实战之路】基于BGP协议中的联邦号连接三个AS区域的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

Windows CMD 关闭,启动程序

Windows CMD 关闭&#xff0c;启动程序 1. Windows 通过 CMD 命令行关闭程序 示例&#xff1a;通过 taskkill 命令关闭 QQ 管家&#xff0c;但是这里有个问题&#xff0c;使用命令行关闭 QQ 管家时&#xff0c;会提示“错误: 无法终止 PID 1400 (属于 PID 22116 子进程)的进程…

CAR-T攻克实体瘤发展现状及未来挑战

CAR-T细胞疗法已经成为肿瘤治疗领域的一项重要新兴治疗方法。CAR-T&#xff08;Chimeric Antigen Receptor T-cell&#xff09;细胞疗法利用改造的T细胞来攻击患者体内的肿瘤细胞&#xff0c;具有针对性强、治疗效果显著等特点。 目前&#xff0c;在血液瘤领域&#xff0c;CAR-…

【vue】点击按钮弹出卡片,点击卡片中的取消按钮取消弹出的卡片(附代码)

实现思路&#xff1a; 在按钮上绑定一个点击事件&#xff0c;默认是true&#xff1b;在export default { }中注册变量给卡片标签用v-if判断是否要显示卡片&#xff0c;ture则显示&#xff1b;在卡片里面写好你想要展示的数据&#xff1b;给卡片添加一个取消按钮&#xff0c;绑…