火焰

描述
Flame 是一个自托管的服务器起始页。其设计深受 SUI 的启发。Flame 的设置和使用都非常简单。借助内置编辑器,您可以快速搭建自己的应用程序中心——无需编辑文件。
功能
- 📝 使用内置 GUI 编辑器直接在应用中创建、更新和删除您的应用程序和书签
- 📌 将您喜爱的项目固定到主屏幕,以便快速轻松访问
- 🔍 集成搜索栏,支持本地过滤、11 个网络搜索提供商以及添加自定义搜索
- 🔑 身份验证系统,用于保护您的设置、应用程序和书签
- 🔨 数十个选项,可根据您的需求自定义 Flame 界面,包括支持自定义 CSS、15 个内置颜色主题和自定义主题构建器
- ☀️ 天气小部件,显示当前温度、云量覆盖率和动态天气状态
- 🐳 Docker 集成,根据标签自动选择并添加应用程序
安装
使用 Docker(推荐)
docker pull pawelmalak/flame
# for ARM architecture (e.g. RaspberryPi)
docker pull pawelmalak/flame:multiarch
# installing specific version
docker pull pawelmalak/flame:2.0.0
部署
# run container
docker run -p 5005:5005 -v /path/to/data:/app/data -e PASSWORD=change_me pawelmalak/flame
构建镜像
# build image for amd64 only
docker build -t flame -f .docker/Dockerfile .
# build multiarch image for amd64, armv7 and arm64
# building failed multiple times with 2GB memory usage limit so you might want to increase it
docker buildx build \
--platform linux/arm/v7,linux/arm64,linux/amd64 \
-f .docker/Dockerfile.multiarch \
-t flame:multiarch .
Docker-Compose
version: '3.6'
services:
flame:
image: pawelmalak/flame
container_name: flame
volumes:
- /path/to/host/data:/app/data
- /var/run/docker.sock:/var/run/docker.sock # optional but required for Docker integration
ports:
- 5005:5005
secrets:
- password # optional but required for (1)
environment:
- PASSWORD=change_me
- PASSWORD_FILE=/run/secrets/password # optional but required for (1)
restart: unless-stopped
# optional but required for Docker secrets (1)
secrets:
password:
file: /path/to/secrets/password
Docker Secrets
所有环境变量都可以通过在变量值后附加 _FILE 来覆盖。例如,你可以使用 PASSWORD_FILE 来传递一个 docker secret,而不是使用 PASSWORD。如果同时设置了 PASSWORD 和 PASSWORD_FILE,则 docker secret 将优先。
# ./secrets/flame_password
my_custom_secret_password_123
# ./docker-compose.yml
secrets:
password:
file: ./secrets/flame_password
Skaffold
# use skaffold
skaffold dev
不使用 Docker
请遵循 wiki 中的说明:不使用 Docker 安装
开发
技术
- 后端
- Node.js + Express
- Sequelize ORM + SQLite
- 前端
- React
- Redux
- TypeScript
- 部署
- Docker
- Kubernetes
创建开发环境
# clone repository
git clone https://github.com/pawelmalak/flame
cd flame
# run only once
npm run dev-init
# start backend and frontend development servers
npm run dev
截图




用法
身份验证
访问 项目 wiki 以阅读更多关于身份验证的内容
搜索栏
搜索
默认搜索设置是搜索您所有的应用和书签。如果您想使用特定的搜索引擎进行搜索,您需要使用选定的前缀输入搜索查询。例如,要使用 google search 搜索 "what is docker",您会输入:/g what is docker。
要查看支持的搜索引擎列表、快捷键以及有关搜索功能的更多信息,请访问 项目 wiki。
设置天气模块
- 从 Weather API 获取 API Key。
免费计划允许每月 1M 次调用。Flame 每月进行的 API 调用少于 3K 次。
- 获取您所在位置的 lat/long。您可以从 latlong.net 获取它们。
- 输入并保存数据。天气小部件现在将更新,并且应该显示在 Home 页面上。
Docker 集成
为了使用 Docker 集成,每个容器必须具有以下标签:
labels:
- flame.type=application # "app" works too
- flame.name=My container
- flame.url=https://example.com
- flame.icon=icon-name # optional, default is "docker"
# - flame.icon=custom to make changes in app. ie: custom icon upload
必须启用“使用 Docker API”选项,此功能才能正常工作。您可以在 设置 > Docker 中找到该选项
您还可以在同一标签中设置不同的应用,并在每个应用之间添加 ;。
labels:
- flame.type=application
- flame.name=First App;Second App
- flame.url=https://example1.com;https://example2.com
- flame.icon=icon-name1;icon-name2
如果您想使用远程 docker 主机,请在该主机上遵循以下说明:
- 打开文件
/lib/systemd/system/docker.service,搜索ExecStart并编辑其值
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:${PORT} -H unix:///var/run/docker.sock
上述命令会将 docker 引擎服务器绑定到 Unix 套接字以及您选择的 TCP 端口。“0.0.0.0” 表示 docker-engine 接受来自所有 IP 地址的连接。
- 重启守护进程和 Docker 服务
sudo systemctl daemon-reload
sudo service docker restart
- 测试其是否正常工作
curl http://${IP}:${PORT}/version
Kubernetes 集成
若要使用 Kubernetes 集成,每个 ingress 必须具有以下 annotations:
metadata:
annotations:
- flame.pawelmalak/type=application # "app" works too
- flame.pawelmalak/name=My container
- flame.pawelmalak/url=https://example.com
- flame.pawelmalak/icon=icon-name # optional, default is "kubernetes"
必须启用“使用 Kubernetes Ingress API”选项,此功能才能正常工作。您可以在 设置 > Docker 中找到该选项
导入 HTML 书签(实验性)
- 要求
- python3
- pip 包:Pillow, beautifulsoup4
- 运行脚本前请备份您的
db.sqlite! - 已知问题:
- 生成的图标有时不正确
pip3 install Pillow, beautifulsoup4
cd flame/.dev
python3 bookmarks_importer.py --bookmarks <path to bookmarks.html> --data <path to flame data folder>
自定义 CSS 和主题
参见项目 wiki 中的 Custom CSS 和 Custom theme with CSS。