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

什么是 Bar Assistant ?

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

软件功能:

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

构建镜像

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

有几点需要说明一下:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下载代码
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 是环境变量设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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_KEY Meilisearch 的主密钥
BASE_URL 应用程序的基本 URL,这是外部的可访问地址
MEILISEARCH_URL Meilisearch 服务器实例的 URL,保持默认即可
API_URL API 服务器实例的 URL,保持默认即可

nginx.conf

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 注释掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 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/