家庭酒吧一体化解决方案Bar Assistant

news2024/11/27 0:50:08

在这里插入图片描述

什么是 Bar Assistant ?

Bar Assistant 是一个用于管理家庭酒吧的自托管应用程序。它允许您添加配料、搜索鸡尾酒和创建自定义鸡尾酒配方。是您所有最爱鸡尾酒配方和饮品的新家。

软件功能:

  • 包含超过 300 个鸡尾酒配方,附带详细信息
  • 包含超过 150 种基础成分,按类别分类
  • 添加和管理多个酒吧及酒吧成员
  • 细粒度用户控制,支持用户角色
  • 端点用于管理和过滤成分及鸡尾酒
  • ABV、基础成分、标签等过滤配方
  • 根据您是否拥有正确成分来过滤配方
  • 提供详细的鸡尾酒和成分信息
  • 支持为资源分配多个图像及图像排序
  • 根据您库存中的缺失成分生成购物清单
  • 使用 Meilisearch 自动索引数据
  • 支持自定义鸡尾酒成分替代品
  • 支持玻璃类型、器具、标签、成分类别等
  • 通过 URLJSONYAML 或自定义收藏导入鸡尾酒配方
  • 支持鸡尾酒评分
  • 创建用户特定的鸡尾酒收藏,便于引用和分享
  • 支持鸡尾酒和成分备注
  • 支持通过公共链接、自定义配方图像和打印分享配方
  • 创建公共酒吧菜单
  • 管理自定义 API 个人访问令牌,用户可设置自定义权限
  • 提供关于配方和用户口味的详细统计信息

构建镜像

官方提供了镜像,不过虽然支持多语言,但没有中文,所以老苏机翻之后,重新编译了一下镜像。

有几点需要说明一下:

  1. 老苏的英文很菜,用的是机翻,所以没有提交给官方的翻译计划;
  2. 翻译的是客户端,后续服务升级后,如果不配套,需要自己编译或者改用官方的客户端镜像;
  3. 老苏原本是想增加一种语言的,但弄不来,最后是用德语当中文用的;

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

# 下载代码
git clone https://github.com/karlomikus/vue-salt-rim.git
  
# 进入目录  
cd vue-salt-rim

# 将 Dockerfile 放入当前目录
  
# 构建镜像
docker build -t wbsu2003/salt-rim:v3 .

# 将 zh-CN.json 放入/src/locales/messages/ 目录
# 修改 de-DE.js,将指向了 de-DE.json 改为了 zh-CN.json

# 运行容器
docker run -d \
    --name salt-rim \
    -e API_URL=http://your-bar-assistant-url \
    -e MEILISEARCH_URL=http://your-meilisearch-url \
    -p 8080:8080 \
    wbsu2003/salt-rim:v3

为了省事,修改了 de-DE.js

安装

在群晖上以 Docker 方式安装。

采用 docker-compose 安装,需要先准备好几个安装文件

env.tx

env.txt 是环境变量设置

# Your Meilisearch master key
# Find out more here: https://docs.meilisearch.com/learn/getting_started/quick_start.html#securing-meilisearch
MEILI_MASTER_KEY=masterKey-make-it-long-for-security

# Base URL of the application
# You should update this value to the URL you plan to use (ex: http://192.168.100.100, https://my-personal-bar.com)
# The value MUST be without trailing slash
BASE_URL=http://192.168.0.197:3652

# Meilisearch server instance URL, change if you are using different host from base url, otherwise leave as default
MEILISEARCH_URL=${BASE_URL}/search

# Bar Assistant server instance URL, change if you are using different host from base url, otherwise leave as default
API_URL=${BASE_URL}/bar

其中 192.168.0.197 为群晖主机的 IP

可变
MEILI_MASTER_KEYMeilisearch 的主密钥
BASE_URL应用程序的基本 URL,这是外部的可访问地址
MEILISEARCH_URLMeilisearch 服务器实例的 URL,保持默认即可
API_URLAPI 服务器实例的 URL,保持默认即可

nginx.conf

理论上 nginx.conf 不用做任何修改,这是 nginx 的配置文件

server {
    listen 3000 default_server;
    listen [::]:3000 default_server;
    server_name _;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    client_max_body_size 100M;

    location /bar/ {
        proxy_pass http://bar-assistant:8080/;
    }

    location /search/ {
        proxy_pass http://meilisearch:7700/;
    }

    location / {
        proxy_pass http://salt-rim:8080/;
    }
}

docker-compose.yml

如果你要用官方的镜像,请取消 image: barassistant/salt-rim:v3 的注释,同时将 image: wbsu2003/salt-rim:v3 注释掉

version: '3'

services:
  meilisearch:
    image: getmeili/meilisearch:v1.8 # Never use latest tag
    container_name: barassistant-meilisearch
    environment:
      - MEILI_MASTER_KEY=$MEILI_MASTER_KEY
      - MEILI_ENV=production
    restart: unless-stopped
    volumes:
      - ./mdata:/meili_data

  # Optional, but recommended
  redis:
    image: redis
    container_name: barassistant-redis
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    restart: unless-stopped

  bar-assistant:
    image: barassistant/server:v4
    container_name: barassistant-app
    depends_on:
      - meilisearch
      - redis # Remove if not using redis
    environment:
      - APP_URL=$API_URL
      - MEILISEARCH_KEY=$MEILI_MASTER_KEY
      - MEILISEARCH_HOST=http://meilisearch:7700 # This needs to be host that can be resolved from inside the container.
      - REDIS_HOST=redis # Remove if not using redis
      - CACHE_DRIVER=redis # Change to "file" if not using redis
      - SESSION_DRIVER=redis # Change to "file" if not using redis
      - ALLOW_REGISTRATION=true
    restart: unless-stopped
    volumes:
      - ./bdata:/var/www/cocktails/storage/bar-assistant

  salt-rim:
    # image: barassistant/salt-rim:v3
    image: wbsu2003/salt-rim:v3
    container_name: barassistant-salt-rim
    depends_on:
      - bar-assistant
    environment:
      - API_URL=$API_URL
      - MEILISEARCH_URL=$MEILISEARCH_URL
    restart: unless-stopped

  # Reverse proxy all web services
  # You can remove this service if you already have a reverse proxy somewhere in your stack,
  # but you will need to manually setup the configuration
  # Check included nginx.conf for reference
  webserver:
    image: nginx:alpine
    container_name: barassistant-web
    restart: unless-stopped
    depends_on:
      - bar-assistant
      - salt-rim
      - meilisearch
    ports:
      - 3652:3000
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf

然后执行下面的命令

# 新建文件夹 barassistant 和 子目录
mkdir -p /volume1/docker/barassistant/{bdata,mdata}

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

# 修改目录权限
chmod a+w bdata

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose --env-file env.txt up -d

运行

在浏览器中输入 http://群晖IP:3652 就能看到登录界面

第一次需要注册账号

登录后的主界面

汉化

右上角 User --> Profile --> Language

默认没有中文选项

如果你安装时使用了老苏编译的镜像 wbsu2003/salt-rim:v3,可以选择 German,保存之后,就变成了中文界面了

使用

创建一个酒吧

起个名字

保存之后,你就有一个酒吧了

进入酒吧

有兴趣的可以装一个研究研究

参考文档

karlomikus/bar-assistant: Bar assistant is a self hosted application for managing your home bar.
地址:https://github.com/karlomikus/bar-assistant

karlomikus/vue-salt-rim: Salt Rim is a Vue based web client used for connecting to Bar Assistant server instance.
地址:https://github.com/karlomikus/vue-salt-rim

All-in-one solution for managing your home bar · Bar Assistant
地址:https://barassistant.app/

Bar Assistant
地址:https://docs.barassistant.app/

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

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

相关文章

iPhone 16 Pro 拆解揭秘:设计改进与维修便利性

苹果最新推出的iPhone 16系列在许多方面都进行了更新和改进,而这次我们要聚焦的是其中的高端型号——iPhone 16 Pro。 这款手机不仅在性能上有所提升,在内部构造上也带来了不少变化,让我们一起来看看这些细节吧。 更容易进入的内部结构 对于…

【hadoop报错】JAR does not exist or is not a normal file

1. 环境 linux Ubuntu hadoop 执行 hadoop jar 命令时,一直报错 解决方法 2、确定自己的jar目录是切实存在的 /export/server/hadoop-3.3.6/shares/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.3.6-tests.jar 3、网上找了很多解决办法,最后…

QUUID 使用详解

UUID 通常由 128 位(16 字节)组成,通常表示为 32 个十六进制数字,分为五个部分,格式如下: QUuid 是 Qt 框架中用于生成和处理 UUID(通用唯一标识符)的类。UUID 是一种标准的标识符格…

厦门网站制作的趋势与最佳实践

厦门网站制作的趋势与最佳实践 随着数字化时代的到来,厦门的网站制作行业也在不断演变,呈现出多样化的趋势与最佳实践。这些变革不仅满足了市场的需求,也为企业的数字化转型提供了强有力的支持。 首先,响应式设计已成为网站制作的…

自由学习记录(5)

git命令行init仓库 mkdir的命令行使用 -p 是 mkdir 命令中的一个选项,表示 "parent",意思是创建所有必要的父目录。如果使用 -p,即使父目录不存在,命令也会自动创建它们,而不会报错。 在 Git 中&#xff0…

Android复杂问题分析工具bugreportz详解

文章目录 bugreportz详细介绍功能与作用使用方法生成详细报告检查进度bugreportz 的优势分析报告 如何分析1. 解压 ZIP 文件2. 分析主要文件2.1 bugreport.txt2.2 logcat.txt2.3 kernel.log / last_kmsg2.4 events.log2.5 traces.txt2.6 dumpstate_board.txt 3. 工具支持4. 重点…

计算机的错误计算(一百一十九)

摘要 用错数解释计算机的错误计算(一百一十八)中的错误计算。 计算机的错误计算(一百一十八)给出一个循环迭代 用C语言或Java编程计算,则 均是错误结果。 下面用错数解释其出错原因。 首先,将迭代看作 …

ARM base instruction -- umull

无符号乘法运算 Unsigned Multiply Long multiplies two 32-bit register values, and writes the result to the 64-bit destination register. 将两个32位寄存器值相乘&#xff0c;并将结果写入64位目标寄存器。 64-bit variant UMULL <Xd>, <Wn>, <Wm&g…

springmvc直接访问 上下文路径 302 后路径更改并跳转源码解析

【问题现状】 application.yml 配置如下属性&#xff1a; server:servlet:context-path: /learning直接访问&#xff1a;http://localhost:8888/learning 路径时&#xff0c;会返回302的响应状态&#xff1b;并跳转路径&#xff1a;http://localhost:8888/learning/ (原路径后…

MapReduce工作机制源码解析

目录 1. MapTask工作机制2. ReduceTask工作机制3. ReduceTask并行度决定机制4. MapTask & ReduceTask源码解析 1. MapTask工作机制 MapTask一共分为五个阶段&#xff1a;Read、Map、Collect、溢写、Merge阶段。 在第4步MrAppMaster启动之前都是job的提交流程&#xff0c;…

keras yolo8目标检测

是从coco数据集提取其中的veh_ids[3,6,8,10] labels[car,bus,truck,traffic light]来做目标检测,分别表示汽车,公交车&#xff0c;卡车&#xff0c;交通灯,用的backbone keras_cv.models.YOLOV8Backbone.from_preset( "yolo_v8_m_backbone_coco" ),不用预训练…

构造mex(牛客周赛 Round 59)

题目链接&#xff1b; D-构造mex_牛客周赛 Round 59 (nowcoder.com) 题目描述&#xff1a; 输出和输出描述&#xff1a; 输入样例&#xff1a; 3 6 3 3 7 4 3 6 6 0 输出样例&#xff1a; NO YES 4 0 1 2 YES 1 1 1 1 1 1 分析&#xff1a; 数学思维题&#xff0c;赛后看了一…

Spring Cloud Bus:实现分布式系统中的消息传递与状态同步

在分布式系统中&#xff0c;服务之间的消息传递和状态同步是一个关键需求。Spring Cloud Bus提供了一个轻量级的消息代理连接分布式系统的节点&#xff0c;用于广播状态更改或管理指令。本文将探讨Spring Cloud Bus的功能、使用场景及其在分布式系统中的作用。 Spring Cloud B…

【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕

前言 本人是一名嵌入式学习者&#xff0c;在大学期间也参加了不少的竞赛并获奖&#xff0c;包括&#xff1a;江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…

Node.js+Express毕设论文选题最新推荐题目和方向

目录 一、前言 二、毕设选题推荐 三、总结 四、附录&#xff08;手册、官网、资源教程等&#xff09; 1. Node.js 官方资源 2. Express 官方资源 3.安装方法 4 创建示例 一、前言 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许开发者使用…

ARM知识点三和串口代码的编写流程

ARM的一些常见问题 ARM 体系结构的主要特点是什么&#xff1f; 精简指令集 (RISC)&#xff1a;ARM 采用 RISC 结构&#xff0c;指令集较小且简单&#xff0c;执行效率高。相比于复杂指令集 (CISC)&#xff0c;RISC 更强调每条指令的执行速度。低功耗设计&#xff1a;ARM 处理…

在北京能不能设计一款可以多屏展示的调度桌

在北京这座科技与创新并蓄的国际大都市&#xff0c;设计一款集高效、智能与多屏展示功能于一体的调度桌&#xff0c;不仅是一个技术挑战&#xff0c;更是对未来工作场景的一次深刻探索与重塑。那么&#xff0c;在北京能不能设计一款可以多屏展示的调度桌呢? 随着信息技术的飞速…

实现MySQL异地多活场景

作为现代化的互联网企业 &#xff0c;最怕的是什么 &#xff1f;是意外&#xff01;由各种意外导致的数据库问题&#xff0c;磁盘问题、网络问题、人员误操作问题等等&#xff0c;这些问题都可能导致数据不可用或者丢失&#xff0c;造成重大损失。 因此&#xff0c;很少会有企…

【吊打面试官系列-微服务面试题】微服务架构有哪些优势?

大家好&#xff0c;我是锋哥。今天分享关于【微服务架构有哪些优势&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 微服务架构有哪些优势&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 微服务架构是一种软件架构风格&#xff0c;将单…

“Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南

目录 “Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南一、“FLASH闪存”是什么&#xff1f;1. 简介2. 分类3. 特点4. 虚拟化 二、SD NAND Flash1. 概述2. 特点3. 引脚分配4. 数据传输模式5. SD NAND寄存器6. 通电图7. 参考设计 三、STM32测试例程1. STM32F103读写代码…