Update Apps
This commit is contained in:
parent
fb2d7887ca
commit
00cadf9c2c
|
|
@ -1,6 +1,6 @@
|
|||
services:
|
||||
new-api:
|
||||
image: ghcr.io/veloera/veloera:latest
|
||||
image: ghcr.io/veloera/veloera:v0.3.28.1
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
ports:
|
||||
|
|
@ -0,0 +1,347 @@
|
|||

|
||||
|
||||
# Veloera
|
||||
|
||||
[](https://app.codacy.com/gh/Veloera/Veloera/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [](https://goreportcard.com/report/github.com/Veloera/Veloera)
|
||||
[](https://github.com/Veloera/Veloera/blob/main/LICENSE) [](https://github.com/Veloera/Veloera/releases)
|
||||
|
||||
[](https://github.com/Veloera/Veloera/stargazers) [](https://github.com/Veloera/Veloera/actions/workflows/docker.yml) [](https://github.com/Veloera/Veloera/actions/workflows/release.yml)
|
||||
|
||||
<a href="https://opencollective.com/veloeraorg/donate" target="_blank">
|
||||
<img src="https://opencollective.com/veloeraorg/donate/button.png?color=blue" width=200 />
|
||||
</a>
|
||||
|
||||
|
||||
优秀的 AI API 网关系统
|
||||
|
||||
原汁原味的 New API 体验, 对界面无大改动, 遵循 GPL 3.0 协议, 无商用限制, 承诺不变质.
|
||||
添加极多原版不计划添加的特性. 以下只是部分.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 我们近期更新了许可证, 查看整个 README 以了解详情
|
||||
|
||||
## 特性
|
||||
|
||||
- 支持以 `,` 分割的单渠道多 Key, 随机选取.
|
||||
- 支持礼品码, 全局每用户一次, 可控制总使用次数
|
||||
- 原生支持 /hf/v1 接口
|
||||
- 支持正则表达式屏蔽词
|
||||
- 渠道 Key 不再加密, 发送到前端显示
|
||||
- 日志支持刷新
|
||||
- 日志显示渠道名
|
||||
- 更新加载样式
|
||||
- 当没有聊天链接可用时, 不显示聊天按钮
|
||||
- 空回复不计费
|
||||
- 在日志表增加总/输入/输出 Tokens
|
||||
- 还有更多...
|
||||
|
||||
## 迁移
|
||||
|
||||
本程序基于 new-api 二开, 数据库结构基本兼容, 会自动运行迁移.
|
||||
其他类似程序不保证支持, 后续有计划做手动迁移指南.
|
||||
|
||||
### new-api
|
||||
|
||||
除了使用 SQLite, 均可无缝迁移.
|
||||
对于 SQLite, 建议将 `one-api.db` 重命名为 `veloera.db`, 系统会尝试自动处理, 但未经过测试.
|
||||
|
||||
## 部署
|
||||
|
||||
> [!TIP]
|
||||
> 最新版 Docker 镜像:`ghcr.io/veloera/veloera:latest`
|
||||
|
||||
### docker-compose
|
||||
|
||||
1. 克隆此仓库
|
||||
|
||||
```shell
|
||||
git clone https://github.com/veloera/veloera.git
|
||||
cd veloera
|
||||
```
|
||||
|
||||
2. 修改配置文件
|
||||
|
||||
```shell
|
||||
nano docker-compose.yml
|
||||
```
|
||||
|
||||
3. 启动服务
|
||||
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 环境变量
|
||||
|
||||
- `GENERATE_DEFAULT_TOKEN`:是否为新注册用户生成初始令牌,默认为 `false`
|
||||
- `STREAMING_TIMEOUT`:流式回复超时时间,默认 60 秒
|
||||
- `DIFY_DEBUG`:Dify 渠道是否输出工作流和节点信息,默认 `true`
|
||||
- `FORCE_STREAM_OPTION`:是否覆盖客户端 stream_options 参数,默认 `true`
|
||||
- `GET_MEDIA_TOKEN`:是否统计图片 token,默认 `true`
|
||||
- `GET_MEDIA_TOKEN_NOT_STREAM`:非流情况下是否统计图片 token,默认 `true`
|
||||
- `UPDATE_TASK`:是否更新异步任务(Midjourney、Suno),默认 `true`
|
||||
- `COHERE_SAFETY_SETTING`:Cohere 模型安全设置,可选值为 `NONE`, `CONTEXTUAL`, `STRICT`,默认 `NONE`
|
||||
- `GEMINI_VISION_MAX_IMAGE_NUM`:Gemini 模型最大图片数量,默认 `16`
|
||||
- `MAX_FILE_DOWNLOAD_MB`: 最大文件下载大小,单位 MB,默认 `20`
|
||||
- `CRYPTO_SECRET`:加密密钥,用于加密数据库内容
|
||||
- `AZURE_DEFAULT_API_VERSION`:Azure 渠道默认 API 版本,默认 `2024-12-01-preview`
|
||||
- `NOTIFICATION_LIMIT_DURATION_MINUTE`:通知限制持续时间,默认 `10`分钟
|
||||
- `NOTIFY_LIMIT_COUNT`:用户通知在指定持续时间内的最大数量,默认 `2`
|
||||
|
||||
## 赞助商
|
||||
|
||||
感谢这些厂商对 Veloera 的支持:
|
||||
|
||||
<a href="https://edgeone.ai/?from=github" target="_blank">
|
||||
<img src="https://edgeone.ai/_next/static/media/headLogo.daeb48ad.png?auto=format&fit=max&w=200" width=200 />
|
||||
</a>
|
||||
<br />CDN acceleration and security protection for this project are sponsored by Tencent EdgeOne.
|
||||
|
||||
<br />
|
||||
|
||||
成为赞助者:
|
||||
<a href="https://opencollective.com/veloeraorg/donate" target="_blank">
|
||||
<img src="https://opencollective.com/veloeraorg/donate/button.png?color=blue" width=200 />
|
||||
</a>
|
||||
|
||||
## ⚠️ 法律声明(Legal Notice)
|
||||
|
||||
> [!TIP]
|
||||
> **TL;DR**
|
||||
> - 如果你是普通用户:
|
||||
> 此更新没有任何影响. 我们会为您处理好合规.
|
||||
> - 如果你在运行二开版本:
|
||||
> 这是一个重要更新, 如果您希望合规运行 `v0.2.27.1` 以上版本(不含), 则请仔细阅读以下更新.
|
||||
>
|
||||
> **更新概要**
|
||||
> 若您以任何形式使用、修改或分发本项目,**除遵循 GPL v3 外,还需遵守以下补充条款**:
|
||||
>
|
||||
> 1. **不得移除或遮盖**所有页面页脚或“关于”页面中的 `Powered by Veloera` 标识。
|
||||
> 2. **必须保留**项目根目录下的 `VELOERA_PROJ` 文件,且**不得修改内容**。
|
||||
> 3. **不得更改或移除** `/veloera` 路由及其功能行为。
|
||||
>
|
||||
> > 本部分仅用于信息说明,不构成法律意见。如您对许可条款存在疑问或面临合规要求,强烈建议咨询法律专业人士。
|
||||
|
||||
自 `v0.3.27.2` 起,本项目更改为 **GPL v3 许可证**,并附加了额外使用条款。详见本文档下方“许可证”部分。
|
||||
|
||||
本项目基于 `new-api` 项目,原始许可证 *Apache License 2.0* 已保留于 `new-api-stuffs/LICENSE.new-api`,截至 fork 时原项目未包含 NOTICE 文件,故无需保留。
|
||||
|
||||
截至 commit `c956fd3`(含该提交),项目仍遵循 **Apache 2.0 许可证**,附加条款**不适用**。
|
||||
|
||||
本声明仅用于信息说明,**不构成法律建议**。如有法律合规方面疑问,请咨询专业律师。
|
||||
|
||||
## 许可证
|
||||
|
||||
本项目自版本 `v0.3.27.2` 起,采用 **GNU 通用公共许可证第 3 版(GPL v3)** 授权,并附加以下补充条款:
|
||||
|
||||
### 附加条款(Additional Terms):
|
||||
|
||||
除非事先获得书面授权,您在使用、修改、分发本项目时,**必须同时遵守以下附加要求**:
|
||||
|
||||
1. **不得移除或遮盖**所有页面页脚或“关于”页面中的 `Powered by Veloera` 徽标或文字标识。
|
||||
2. **必须保留**项目根目录下的 `VELOERA_PROJ` 文件,且不得修改其内容。
|
||||
3. **必须保留**并不得修改 `/veloera` 路由路径及其对应的页面行为。
|
||||
|
||||
这些附加条款依照 GPL v3 第 7 节的规定添加,并构成本项目许可证的组成部分。
|
||||
|
||||
截至 commit `c956fd3`(含),本项目代码仍遵循 Apache License 2.0,附加条款不适用。详情请参阅历史版本与 [LICENSE 文件](./LICENSE)。
|
||||
|
||||
> ⚠️ 本声明不构成法律建议。如您对许可证条款有任何疑问,请咨询专业法律顾问。
|
||||
|
||||
## 🌟 Star History
|
||||
|
||||
[](https://star-history.com/#Veloera/Veloera&Date)
|
||||
|
||||
<!--
|
||||
|
||||
<p align="right">
|
||||
<strong>中文</strong> | <a href="./README.en.md">English</a>
|
||||
</p>
|
||||
<div align="center">
|
||||
|
||||

|
||||
|
||||
# New API
|
||||
|
||||
🍥新一代大模型网关与AI资产管理系统
|
||||
|
||||
<a href="https://trendshift.io/repositories/8227" target="_blank"><img src="https://trendshift.io/api/badge/repositories/8227" alt="Calcium-Ion%2Fnew-api | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://raw.githubusercontent.com/Calcium-Ion/new-api/main/LICENSE">
|
||||
<img src="https://img.shields.io/github/license/Calcium-Ion/new-api?color=brightgreen" alt="license">
|
||||
</a>
|
||||
<a href="https://github.com/Calcium-Ion/new-api/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/Calcium-Ion/new-api?color=brightgreen&include_prereleases" alt="release">
|
||||
</a>
|
||||
<a href="https://github.com/users/Calcium-Ion/packages/container/package/new-api">
|
||||
<img src="https://img.shields.io/badge/docker-ghcr.io-blue" alt="docker">
|
||||
</a>
|
||||
<a href="https://hub.docker.com/r/CalciumIon/new-api">
|
||||
<img src="https://img.shields.io/badge/docker-dockerHub-blue" alt="docker">
|
||||
</a>
|
||||
<a href="https://goreportcard.com/report/github.com/Calcium-Ion/new-api">
|
||||
<img src="https://goreportcard.com/badge/github.com/Calcium-Ion/new-api" alt="GoReportCard">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## 📝 项目说明
|
||||
|
||||
> [!NOTE]
|
||||
> 本项目为开源项目,在[One API](https://github.com/songquanpeng/veloera)的基础上进行二次开发
|
||||
|
||||
> [!IMPORTANT]
|
||||
> - 本项目仅供个人学习使用,不保证稳定性,且不提供任何技术支持。
|
||||
> - 使用者必须在遵循 OpenAI 的[使用条款](https://openai.com/policies/terms-of-use)以及**法律法规**的情况下使用,不得用于非法用途。
|
||||
> - 根据[《生成式人工智能服务管理暂行办法》](http://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm)的要求,请勿对中国地区公众提供一切未经备案的生成式人工智能服务。
|
||||
|
||||
## 📚 文档
|
||||
|
||||
详细文档请访问我们的官方Wiki:[https://docs.newapi.pro/](https://docs.newapi.pro/)
|
||||
|
||||
## ✨ 主要特性
|
||||
|
||||
New API提供了丰富的功能,详细特性请参考[特性说明](https://docs.newapi.pro/wiki/features-introduction):
|
||||
|
||||
1. 🎨 全新的UI界面
|
||||
2. 🌍 多语言支持
|
||||
3. 💰 支持在线充值功能(易支付)
|
||||
4. 🔍 支持用key查询使用额度(配合[neko-api-key-tool](https://github.com/Calcium-Ion/neko-api-key-tool))
|
||||
5. 🔄 兼容原版One API的数据库
|
||||
6. 💵 支持模型按次数收费
|
||||
7. ⚖️ 支持渠道加权随机
|
||||
8. 📈 数据看板(控制台)
|
||||
9. 🔒 令牌分组、模型限制
|
||||
10. 🤖 支持更多授权登陆方式(LinuxDO,Telegram、OIDC)
|
||||
11. 🔄 支持Rerank模型(Cohere和Jina),[接口文档](https://docs.newapi.pro/api/jinaai-rerank)
|
||||
12. ⚡ 支持OpenAI Realtime API(包括Azure渠道),[接口文档](https://docs.newapi.pro/api/openai-realtime)
|
||||
13. ⚡ 支持Claude Messages 格式,[接口文档](https://docs.newapi.pro/api/anthropic-chat)
|
||||
14. 支持使用路由/chat2link进入聊天界面
|
||||
15. 🧠 支持通过模型名称后缀设置 reasoning effort:
|
||||
1. OpenAI o系列模型
|
||||
- 添加后缀 `-high` 设置为 high reasoning effort (例如: `o3-mini-high`)
|
||||
- 添加后缀 `-medium` 设置为 medium reasoning effort (例如: `o3-mini-medium`)
|
||||
- 添加后缀 `-low` 设置为 low reasoning effort (例如: `o3-mini-low`)
|
||||
2. Claude 思考模型
|
||||
- 添加后缀 `-thinking` 启用思考模式 (例如: `claude-3-7-sonnet-20250219-thinking`)
|
||||
16. 🔄 思考转内容功能
|
||||
17. 🔄 针对用户的模型限流功能
|
||||
18. 💰 缓存计费支持,开启后可以在缓存命中时按照设定的比例计费:
|
||||
1. 在 `系统设置-运营设置` 中设置 `提示缓存倍率` 选项
|
||||
2. 在渠道中设置 `提示缓存倍率`,范围 0-1,例如设置为 0.5 表示缓存命中时按照 50% 计费
|
||||
3. 支持的渠道:
|
||||
- [x] OpenAI
|
||||
- [x] Azure
|
||||
- [x] DeepSeek
|
||||
- [x] Claude
|
||||
|
||||
## 模型支持
|
||||
|
||||
此版本支持多种模型,详情请参考[接口文档-中继接口](https://docs.newapi.pro/api):
|
||||
|
||||
1. 第三方模型 **gpts** (gpt-4-gizmo-*)
|
||||
2. 第三方渠道[Midjourney-Proxy(Plus)](https://github.com/novicezk/midjourney-proxy)接口,[接口文档](https://docs.newapi.pro/api/midjourney-proxy-image)
|
||||
3. 第三方渠道[Suno API](https://github.com/Suno-API/Suno-API)接口,[接口文档](https://docs.newapi.pro/api/suno-music)
|
||||
4. 自定义渠道,支持填入完整调用地址
|
||||
5. Rerank模型([Cohere](https://cohere.ai/)和[Jina](https://jina.ai/)),[接口文档](https://docs.newapi.pro/api/jinaai-rerank)
|
||||
6. Claude Messages 格式,[接口文档](https://docs.newapi.pro/api/anthropic-chat)
|
||||
7. Dify,当前仅支持chatflow
|
||||
|
||||
## 环境变量配置
|
||||
|
||||
详细配置说明请参考[安装指南-环境变量配置](https://docs.newapi.pro/installation/environment-variables):
|
||||
|
||||
- `GENERATE_DEFAULT_TOKEN`:是否为新注册用户生成初始令牌,默认为 `false`
|
||||
- `STREAMING_TIMEOUT`:流式回复超时时间,默认60秒
|
||||
- `DIFY_DEBUG`:Dify渠道是否输出工作流和节点信息,默认 `true`
|
||||
- `FORCE_STREAM_OPTION`:是否覆盖客户端stream_options参数,默认 `true`
|
||||
- `GET_MEDIA_TOKEN`:是否统计图片token,默认 `true`
|
||||
- `GET_MEDIA_TOKEN_NOT_STREAM`:非流情况下是否统计图片token,默认 `true`
|
||||
- `UPDATE_TASK`:是否更新异步任务(Midjourney、Suno),默认 `true`
|
||||
- `COHERE_SAFETY_SETTING`:Cohere模型安全设置,可选值为 `NONE`, `CONTEXTUAL`, `STRICT`,默认 `NONE`
|
||||
- `GEMINI_VISION_MAX_IMAGE_NUM`:Gemini模型最大图片数量,默认 `16`
|
||||
- `MAX_FILE_DOWNLOAD_MB`: 最大文件下载大小,单位MB,默认 `20`
|
||||
- `CRYPTO_SECRET`:加密密钥,用于加密数据库内容
|
||||
- `AZURE_DEFAULT_API_VERSION`:Azure渠道默认API版本,默认 `2024-12-01-preview`
|
||||
- `NOTIFICATION_LIMIT_DURATION_MINUTE`:通知限制持续时间,默认 `10`分钟
|
||||
- `NOTIFY_LIMIT_COUNT`:用户通知在指定持续时间内的最大数量,默认 `2`
|
||||
|
||||
## 部署
|
||||
|
||||
详细部署指南请参考[安装指南-部署方式](https://docs.newapi.pro/installation):
|
||||
|
||||
> [!TIP]
|
||||
> 最新版Docker镜像:`calciumion/new-api:latest`
|
||||
|
||||
### 多机部署注意事项
|
||||
- 必须设置环境变量 `SESSION_SECRET`,否则会导致多机部署时登录状态不一致
|
||||
- 如果公用Redis,必须设置 `CRYPTO_SECRET`,否则会导致多机部署时Redis内容无法获取
|
||||
|
||||
### 部署要求
|
||||
- 本地数据库(默认):SQLite(Docker部署必须挂载`/data`目录)
|
||||
- 远程数据库:MySQL版本 >= 5.7.8,PgSQL版本 >= 9.6
|
||||
|
||||
### 部署方式
|
||||
|
||||
#### 使用宝塔面板Docker功能部署
|
||||
安装宝塔面板(**9.2.0版本**及以上),在应用商店中找到**New-API**安装即可。
|
||||
[图文教程](BT.md)
|
||||
|
||||
#### 使用Docker Compose部署(推荐)
|
||||
```shell
|
||||
# 下载项目
|
||||
git clone https://github.com/Calcium-Ion/new-api.git
|
||||
cd new-api
|
||||
# 按需编辑docker-compose.yml
|
||||
# 启动
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
#### 直接使用Docker镜像
|
||||
```shell
|
||||
# 使用SQLite
|
||||
docker run --name new-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest
|
||||
|
||||
# 使用MySQL
|
||||
docker run --name new-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest
|
||||
```
|
||||
|
||||
## 渠道重试与缓存
|
||||
渠道重试功能已经实现,可以在`设置->运营设置->通用设置`设置重试次数,**建议开启缓存**功能。
|
||||
|
||||
### 缓存设置方法
|
||||
1. `REDIS_CONN_STRING`:设置Redis作为缓存
|
||||
2. `MEMORY_CACHE_ENABLED`:启用内存缓存(设置了Redis则无需手动设置)
|
||||
|
||||
## 接口文档
|
||||
|
||||
详细接口文档请参考[接口文档](https://docs.newapi.pro/api):
|
||||
|
||||
- [聊天接口(Chat)](https://docs.newapi.pro/api/openai-chat)
|
||||
- [图像接口(Image)](https://docs.newapi.pro/api/openai-image)
|
||||
- [重排序接口(Rerank)](https://docs.newapi.pro/api/jinaai-rerank)
|
||||
- [实时对话接口(Realtime)](https://docs.newapi.pro/api/openai-realtime)
|
||||
- [Claude聊天接口(messages)](https://docs.newapi.pro/api/anthropic-chat)
|
||||
|
||||
## 相关项目
|
||||
- [One API](https://github.com/songquanpeng/veloera):原版项目
|
||||
- [Midjourney-Proxy](https://github.com/novicezk/midjourney-proxy):Midjourney接口支持
|
||||
- [chatnio](https://github.com/Deeptrain-Community/chatnio):下一代AI一站式B/C端解决方案
|
||||
- [neko-api-key-tool](https://github.com/Calcium-Ion/neko-api-key-tool):用key查询使用额度
|
||||
|
||||
其他基于New API的项目:
|
||||
- [new-api-horizon](https://github.com/Calcium-Ion/new-api-horizon):New API高性能优化版
|
||||
- [VoAPI](https://github.com/VoAPI/VoAPI):基于New API的前端美化版本
|
||||
|
||||
## 帮助支持
|
||||
|
||||
如有问题,请参考[帮助支持](https://docs.newapi.pro/support):
|
||||
- [社区交流](https://docs.newapi.pro/support/community-interaction)
|
||||
- [反馈问题](https://docs.newapi.pro/support/feedback-issues)
|
||||
- [常见问题](https://docs.newapi.pro/support/faq)
|
||||
|
||||
## 🌟 Star History
|
||||
|
||||
[](https://star-history.com/#Calcium-Ion/new-api&Date)
|
||||
-->
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
name: new api by Veloera
|
||||
tags:
|
||||
- AI / 大模型
|
||||
title: OpenAI 接口管理 & 分发系统
|
||||
description: OpenAI 接口管理 & 分发系统
|
||||
additionalProperties:
|
||||
key: new-api-Veloera
|
||||
name: new api by Veloera
|
||||
tags:
|
||||
- AI
|
||||
shortDescZh: 优秀的 AI API 网关系统,本项目基于 new-api 二次开发。
|
||||
shortDescEn: Excellent AI API gateway system, this project is based on new-api secondary development.
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/Veloera/Veloera
|
||||
github: https://github.com/Veloera/Veloera
|
||||
document: https://github.com/Veloera/Veloera
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
|
|
@ -1,36 +1,30 @@
|
|||
**English** | [中文](https://p3terx.com/archives/docker-aria2-pro.html)
|
||||
|
||||
# Aria2 Pro Docker
|
||||
|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/LICENSE)
|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/stargazers)
|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/fork)
|
||||
[](https://hub.docker.com/r/p3terx/aria2-pro)
|
||||
[](https://hub.docker.com/r/p3terx/aria2-pro)
|
||||

|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/LICENSE) [](https://github.com/P3TERX/Aria2-Pro-Docker/stargazers) [](https://github.com/P3TERX/Aria2-Pro-Docker/fork) [](https://hub.docker.com/r/p3terx/aria2-pro) [](https://hub.docker.com/r/p3terx/aria2-pro) 
|
||||
|
||||
A perfect Aria2 Docker image. Out of the box, just add download tasks and don't need to think about anything else.
|
||||
一个完美的 Aria2 Docker 镜像。开箱即用,只需添加下载任务,无需考虑其他任何事情。
|
||||
|
||||
## Features
|
||||
## 功能
|
||||
|
||||
* Supported platforms: `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`
|
||||
* Full Function: `Async DNS`, `BitTorrent`, `Firefox3 Cookie`, `GZip`, `HTTPS`, `Message Digest`, `Metalink`, `XML-RPC`, `SFTP`
|
||||
* `max-connection-per-server` unlimited.
|
||||
* retry on slow speed (`lowest-speed-limit`) and connection close
|
||||
* High BT download rate and speed
|
||||
* Get BitTorrent tracker automatically
|
||||
* Download error automatically delete files
|
||||
* Download cancel automatically delete files
|
||||
* Automatically clear `.aria2` suffix files
|
||||
* Automatically clear `.torrent` suffix files
|
||||
* No lost task progress, no repeated downloads
|
||||
* And more powerful features
|
||||
* 支持平台: `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`
|
||||
* 完整功能: `Async DNS`, `BitTorrent`, `Firefox3 Cookie`, `GZip`, `HTTPS`, `Message Digest`, `Metalink`, `XML-RPC`, `SFTP`
|
||||
* `max-connection-per-server` 无限制。
|
||||
* 在慢速传输(`lowest-speed-limit`)和连接关闭时重试
|
||||
* 高速 BT 下载
|
||||
* 自动获取 BitTorrent 跟踪器
|
||||
* 下载错误自动删除文件
|
||||
* 下载取消自动删除文件
|
||||
* 自动清除 `.aria2` 后缀文件
|
||||
* 自动清除 `.torrent` 后缀文件
|
||||
* 不丢失任务进度,不重复下载
|
||||
* 更多强大功能
|
||||
|
||||
## Usage
|
||||
## 使用方法
|
||||
|
||||
### Docker CLI
|
||||
|
||||
- No matter what architecture platform is used, just use the following command to start the container ( Just need to replace the `<TOKEN>` field ):
|
||||
* 无论使用何种架构平台,只需使用以下命令启动容器(只需替换 `<TOKEN>` 字段):
|
||||
|
||||
```
|
||||
docker run -d \
|
||||
--name aria2-pro \
|
||||
|
|
@ -50,7 +44,8 @@ docker run -d \
|
|||
p3terx/aria2-pro
|
||||
```
|
||||
|
||||
- Then you need a WebUI for control, such as [AriaNg](https://github.com/mayswind/AriaNg). [This link](http://ariang.mayswind.net/latest) is provided by the developer and can be used directly. Or use Docker to deploy it yourself:
|
||||
* 然后你需要一个 WebUI 来进行控制,比如 [AriaNg](https://github.com/mayswind/AriaNg)。开发者提供了这个链接[可以直达](http://ariang.mayswind.net/latest) 。或者你可以使用 Docker 自行部署:
|
||||
|
||||
```
|
||||
docker run -d \
|
||||
--name ariang \
|
||||
|
|
@ -60,62 +55,65 @@ docker run -d \
|
|||
p3terx/ariang
|
||||
```
|
||||
|
||||
> **TIPS:** It is important for the firewall to open ports.
|
||||
> **提示:** 防火墙需要打开端口。
|
||||
|
||||
### Docker Compose
|
||||
|
||||
- Download [Compose file](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/docker-compose.yml)
|
||||
* 下载 [组合文件](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/docker-compose.yml)
|
||||
|
||||
```
|
||||
wget git.io/aria2-pro.yml
|
||||
```
|
||||
|
||||
- Edit Compose file
|
||||
* 编辑 Compose 文件
|
||||
|
||||
```
|
||||
vim aria2-pro.yml
|
||||
```
|
||||
|
||||
- Compose up
|
||||
* Compose up
|
||||
|
||||
```
|
||||
docker-compose -f aria2-pro.yml up -d
|
||||
```
|
||||
|
||||
### Other
|
||||
### 其他
|
||||
|
||||
- [Docker templates for UNRAID](https://github.com/P3TERX/unraid-docker-templates)
|
||||
- [Docker Tutorial for Synology DSM (Chinese)](https://p3terx.com/archives/synology-nas-docker-advanced-tutorial-deploy-aria2-pro.html)
|
||||
* [UNRAID 的 Docker 模板](https://github.com/P3TERX/unraid-docker-templates)
|
||||
* [Synology DSM 下的 Docker 使用教程(中文)](https://p3terx.com/archives/synology-nas-docker-advanced-tutorial-deploy-aria2-pro.html)
|
||||
|
||||
## Parameters
|
||||
## 参数
|
||||
|
||||
| Parameter | Function |
|
||||
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-e PUID=$UID`<br>`-e PGID=$GID` | Bind UID and GID to the container, which means you can use a non-root user to manage downloaded files. |
|
||||
| `-e UMASK_SET=022` | For umask setting of Aria2, optional , default if left unset is `022` |
|
||||
| `-e RPC_SECRET=<TOKEN>` | Set RPC secret authorization token. Default: `P3TERX` |
|
||||
| `-e RPC_PORT=6800` | Set RPC listen port. |
|
||||
| `-p 6800:6800` | bind RPC listen port. |
|
||||
| `-e LISTEN_PORT=6888` | Set TCP/UDP port number for BitTorrent/DHT listen. |
|
||||
| `-p 6888:6888` | Bind BT listen port (TCP). |
|
||||
| `-p 6888:6888/udp` | Bind DHT lisen port (UDP). |
|
||||
| `-v <PATH>:/config` | Contains all relevant configuration files. |
|
||||
| `-v <PATH>:/downloads` | Location of downloads on disk. |
|
||||
| `-e DISK_CACHE=<SIZE>` | Set up disk cache. SIZE can include `K` or `M` (1K = 1024, 1M = 1024K), e.g `64M`. |
|
||||
| `-e IPV6_MODE=<BOOLEAN>` | Whether to enable IPv6 support for Aria2. Optional: `true` or `false`. Set the options `disable-ipv6=false` and `enable-dht6=true` in the configuration file(aria2.conf). |
|
||||
| `-e UPDATE_TRACKERS=<BOOLEAN>` | Whether to update BT Trackers List automatically. Optional: `true` or `flase`, default if left unset is `true` |
|
||||
| `-e CUSTOM_TRACKER_URL=<URL>` | Custom BT Trackers List URL. If not set, it will be get from https://trackerslist.com/all_aria2.txt. |
|
||||
| `-e TZ=Asia/Shanghai` | Specify a timezone to use e.g. `Asia/Shanghai` |
|
||||
| 参数 | 功能 |
|
||||
| --- | --- |
|
||||
| \-e PUID=$UID-e PGID=$GID | 将 UID 和 GID 绑定到容器中,这意味着你可以使用非 root 用户来管理下载的文件。 |
|
||||
| \-e UMASK\_SET=022 | 对于 Aria2 的 umask 设置,可选,默认如果不设置为 \`022\`。 |
|
||||
| \-e RPC\_SECRET= | 设置 RPC 保密授权令牌。默认值:\`P3TERX\` |
|
||||
| \-e RPC\_PORT=6800 | 设置 RPC 监听端口。 |
|
||||
| \-p 6800:6800 | 绑定 RPC 监听端口。 |
|
||||
| \-e LISTEN\_PORT=6888 | 设置 BitTorrent/DHT 监听的 TCP/UDP 端口号。 |
|
||||
| \-p 6888:6888 | 绑定 BT 监听端口(TCP)。 |
|
||||
| \-p 6888:6888/udp | 绑定 DHT 监听端口(UDP)。 |
|
||||
| \-v :/config | 包含所有相关的配置文件。 |
|
||||
| \-v :/downloads | 磁盘下载位置。 |
|
||||
| \-e DISK\_CACHE= | 设置磁盘缓存大小。SIZE 可以包含 K 或 M(1K = 1024,1M = 1024K),例如 64M。 |
|
||||
| \-e IPV6\_MODE= | 是否启用 Aria2 的 IPv6 支持。可选:\`true\` 或 \`false\`。在配置文件(aria2.conf)中设置选项 \`disable-ipv6=false\` 和 \`enable-dht6=true\`。 |
|
||||
| \-e UPDATE\_TRACKERS= | 是否自动更新 BT 跟踪器列表。可选:\`true\` 或 \`false\`,未设置时默认为 \`true\`。 |
|
||||
| \-e CUSTOM\_TRACKER\_URL= | 自定义 BT 跟踪器列表 URL。未设置时,将从 \`https://trackerslist.com/all\_aria2.txt\` 获取。 |
|
||||
| \-e TZ=Asia/Shanghai | 指定时区,例如 \`Asia/Shanghai\`。 |
|
||||
|
||||
## Advanced
|
||||
## 高级
|
||||
|
||||
I am working hard on my English, so this part may be explained in detail later. If you can read Chinese, read the details in [my blog](https://p3terx.com/archives/docker-aria2-pro.html).
|
||||
我正在努力提高我的英语水平,所以这部分以后可能会有详细的解释。如果你能看中文,可以去我的博客 [查看详细内容](https://p3terx.com/archives/docker-aria2-pro.html) 。
|
||||
|
||||
## Credits
|
||||
## 致谢
|
||||
|
||||
* [aria2](https://github.com/aria2/aria2)
|
||||
* [P3TERX/aria2.conf](https://github.com/P3TERX/aria2.conf)
|
||||
* [P3TERX/Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core)
|
||||
* [just-containers/s6-overlay](https://github.com/just-containers/s6-overlay)
|
||||
* [XIU2/TrackersListCollection](https://github.com/XIU2/TrackersListCollection)
|
||||
* [aria2](https://github.com/aria2/aria2)
|
||||
* [P3TERX/aria2.conf](https://github.com/P3TERX/aria2.conf)
|
||||
* [P3TERX/Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core)
|
||||
* [just-containers/s6-overlay](https://github.com/just-containers/s6-overlay)
|
||||
* [XIU2/TrackersListCollection](https://github.com/XIU2/TrackersListCollection)
|
||||
|
||||
## License
|
||||
## 许可证
|
||||
|
||||
[MIT](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/LICENSE) © P3TERX
|
||||
[MIT](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/LICENSE) © P3TERX
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
# Aria2 Pro Docker
|
||||
|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/LICENSE)
|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/stargazers)
|
||||
[](https://github.com/P3TERX/Aria2-Pro-Docker/fork)
|
||||
[](https://hub.docker.com/r/p3terx/aria2-pro)
|
||||
[](https://hub.docker.com/r/p3terx/aria2-pro)
|
||||

|
||||
|
||||
A perfect Aria2 Docker image. Out of the box, just add download tasks and don't need to think about anything else.
|
||||
|
||||
## Features
|
||||
|
||||
* Supported platforms: `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6`
|
||||
* Full Function: `Async DNS`, `BitTorrent`, `Firefox3 Cookie`, `GZip`, `HTTPS`, `Message Digest`, `Metalink`, `XML-RPC`, `SFTP`
|
||||
* `max-connection-per-server` unlimited.
|
||||
* retry on slow speed (`lowest-speed-limit`) and connection close
|
||||
* High BT download rate and speed
|
||||
* Get BitTorrent tracker automatically
|
||||
* Download error automatically delete files
|
||||
* Download cancel automatically delete files
|
||||
* Automatically clear `.aria2` suffix files
|
||||
* Automatically clear `.torrent` suffix files
|
||||
* No lost task progress, no repeated downloads
|
||||
* And more powerful features
|
||||
|
||||
## Usage
|
||||
|
||||
### Docker CLI
|
||||
|
||||
- No matter what architecture platform is used, just use the following command to start the container ( Just need to replace the `<TOKEN>` field ):
|
||||
```
|
||||
docker run -d \
|
||||
--name aria2-pro \
|
||||
--restart unless-stopped \
|
||||
--log-opt max-size=1m \
|
||||
-e PUID=$UID \
|
||||
-e PGID=$GID \
|
||||
-e UMASK_SET=022 \
|
||||
-e RPC_SECRET=<TOKEN> \
|
||||
-e RPC_PORT=6800 \
|
||||
-p 6800:6800 \
|
||||
-e LISTEN_PORT=6888 \
|
||||
-p 6888:6888 \
|
||||
-p 6888:6888/udp \
|
||||
-v $PWD/aria2-config:/config \
|
||||
-v $PWD/aria2-downloads:/downloads \
|
||||
p3terx/aria2-pro
|
||||
```
|
||||
|
||||
- Then you need a WebUI for control, such as [AriaNg](https://github.com/mayswind/AriaNg). [This link](http://ariang.mayswind.net/latest) is provided by the developer and can be used directly. Or use Docker to deploy it yourself:
|
||||
```
|
||||
docker run -d \
|
||||
--name ariang \
|
||||
--log-opt max-size=1m \
|
||||
--restart unless-stopped \
|
||||
-p 6880:6880 \
|
||||
p3terx/ariang
|
||||
```
|
||||
|
||||
> **TIPS:** It is important for the firewall to open ports.
|
||||
|
||||
### Docker Compose
|
||||
|
||||
- Download [Compose file](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/docker-compose.yml)
|
||||
```
|
||||
wget git.io/aria2-pro.yml
|
||||
```
|
||||
|
||||
- Edit Compose file
|
||||
```
|
||||
vim aria2-pro.yml
|
||||
```
|
||||
|
||||
- Compose up
|
||||
```
|
||||
docker-compose -f aria2-pro.yml up -d
|
||||
```
|
||||
|
||||
### Other
|
||||
|
||||
- [Docker templates for UNRAID](https://github.com/P3TERX/unraid-docker-templates)
|
||||
- [Docker Tutorial for Synology DSM (Chinese)](https://p3terx.com/archives/synology-nas-docker-advanced-tutorial-deploy-aria2-pro.html)
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Function |
|
||||
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-e PUID=$UID`<br>`-e PGID=$GID` | Bind UID and GID to the container, which means you can use a non-root user to manage downloaded files. |
|
||||
| `-e UMASK_SET=022` | For umask setting of Aria2, optional , default if left unset is `022` |
|
||||
| `-e RPC_SECRET=<TOKEN>` | Set RPC secret authorization token. Default: `P3TERX` |
|
||||
| `-e RPC_PORT=6800` | Set RPC listen port. |
|
||||
| `-p 6800:6800` | bind RPC listen port. |
|
||||
| `-e LISTEN_PORT=6888` | Set TCP/UDP port number for BitTorrent/DHT listen. |
|
||||
| `-p 6888:6888` | Bind BT listen port (TCP). |
|
||||
| `-p 6888:6888/udp` | Bind DHT lisen port (UDP). |
|
||||
| `-v <PATH>:/config` | Contains all relevant configuration files. |
|
||||
| `-v <PATH>:/downloads` | Location of downloads on disk. |
|
||||
| `-e DISK_CACHE=<SIZE>` | Set up disk cache. SIZE can include `K` or `M` (1K = 1024, 1M = 1024K), e.g `64M`. |
|
||||
| `-e IPV6_MODE=<BOOLEAN>` | Whether to enable IPv6 support for Aria2. Optional: `true` or `false`. Set the options `disable-ipv6=false` and `enable-dht6=true` in the configuration file(aria2.conf). |
|
||||
| `-e UPDATE_TRACKERS=<BOOLEAN>` | Whether to update BT Trackers List automatically. Optional: `true` or `flase`, default if left unset is `true` |
|
||||
| `-e CUSTOM_TRACKER_URL=<URL>` | Custom BT Trackers List URL. If not set, it will be get from https://trackerslist.com/all_aria2.txt. |
|
||||
| `-e TZ=Asia/Shanghai` | Specify a timezone to use e.g. `Asia/Shanghai` |
|
||||
|
||||
## Advanced
|
||||
|
||||
I am working hard on my English, so this part may be explained in detail later. If you can read Chinese, read the details in [my blog](https://p3terx.com/archives/docker-aria2-pro.html).
|
||||
|
||||
## Credits
|
||||
|
||||
* [aria2](https://github.com/aria2/aria2)
|
||||
* [P3TERX/aria2.conf](https://github.com/P3TERX/aria2.conf)
|
||||
* [P3TERX/Aria2-Pro-Core](https://github.com/P3TERX/Aria2-Pro-Core)
|
||||
* [just-containers/s6-overlay](https://github.com/just-containers/s6-overlay)
|
||||
* [XIU2/TrackersListCollection](https://github.com/XIU2/TrackersListCollection)
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/P3TERX/Aria2-Pro-Docker/blob/master/LICENSE) © P3TERX
|
||||
|
|
@ -3,7 +3,7 @@ networks:
|
|||
external: true
|
||||
services:
|
||||
aria2-superng6:
|
||||
image: superng6/aria2:a2b-stable-24-11-01
|
||||
image: superng6/aria2:stable-25-06-09
|
||||
container_name: ${CONTAINER_NAME}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
|
@ -1,91 +1,75 @@
|
|||
<br />
|
||||
<div align="center">
|
||||
<img alt="Audiobookshelf Banner" src="https://github.com/advplyr/audiobookshelf/raw/master/images/banner.svg" width="600">
|
||||

|
||||
|
||||
<p align="center">
|
||||
<br />
|
||||
<a href="https://audiobookshelf.org/docs">Documentation</a>
|
||||
·
|
||||
<a href="https://audiobookshelf.org/guides">User Guides</a>
|
||||
·
|
||||
<a href="https://audiobookshelf.org/support">Support</a>
|
||||
</p>
|
||||
</div>
|
||||
[文档](https://audiobookshelf.org/docs) · [用户指南](https://audiobookshelf.org/guides) · [支持](https://audiobookshelf.org/support)
|
||||
|
||||
# About
|
||||
# 关于
|
||||
|
||||
Audiobookshelf is a self-hosted audiobook and podcast server.
|
||||
Audiobookshelf 是一个自托管的有声书和播客服务器。
|
||||
|
||||
### Features
|
||||
### 功能
|
||||
|
||||
* Fully **open-source**, including the [android & iOS app](https://github.com/advplyr/audiobookshelf-app) *(in beta)*
|
||||
* Stream all audio formats on the fly
|
||||
* Search and add podcasts to download episodes w/ auto-download
|
||||
* Multi-user support w/ custom permissions
|
||||
* Keeps progress per user and syncs across devices
|
||||
* Auto-detects library updates, no need to re-scan
|
||||
* Upload books and podcasts w/ bulk upload drag and drop folders
|
||||
* Backup your metadata + automated daily backups
|
||||
* Progressive Web App (PWA)
|
||||
* Chromecast support on the web app and android app
|
||||
* Fetch metadata and cover art from several sources
|
||||
* Chapter editor and chapter lookup (using [Audnexus API](https://audnex.us/))
|
||||
* Merge your audio files into a single m4b
|
||||
* Embed metadata and cover image into your audio files (using [Tone](https://github.com/sandreas/tone))
|
||||
* Basic ebook support and ereader
|
||||
* Epub, pdf, cbr, cbz
|
||||
* Send ebook to device (i.e. Kindle)
|
||||
* Open RSS feeds for podcasts and audiobooks
|
||||
* 完全 **开源** ,包括 [Android & iOS 应用](https://github.com/advplyr/audiobookshelf-app) *(内测中)*
|
||||
* 实时流式传输所有音频格式
|
||||
* 搜索并添加播客以自动下载集数
|
||||
* 支持多用户,并可自定义权限
|
||||
* 按用户保存进度并在设备间同步
|
||||
* 自动检测库更新,无需重新扫描
|
||||
* 批量上传书籍和播客,支持拖放文件夹
|
||||
* 备份元数据,并提供每日自动备份
|
||||
* 渐进式网络应用(PWA)
|
||||
* 支持通过网页和安卓应用使用 Chromecast
|
||||
* 从多个来源获取元数据和封面艺术
|
||||
* 章节编辑和章节查找(使用 Audnexus API)
|
||||
* 将你的音频文件合并为一个 m4b 文件
|
||||
* 将元数据和封面图片嵌入到你的音频文件中(使用 Tone)
|
||||
* 基本的电子书支持和电子阅读器
|
||||
* Epub, pdf, cbr, cbz
|
||||
* 将电子书发送到设备(例如:Kindle)
|
||||
* 打开播客和有声书的 RSS 订阅源
|
||||
|
||||
Is there a feature you are looking for? [Suggest it](https://github.com/advplyr/audiobookshelf/issues/new/choose)
|
||||
您在寻找某个功能吗? [提出来](https://github.com/advplyr/audiobookshelf/issues/new/choose)
|
||||
|
||||
Join us on [Discord](https://discord.gg/pJsjuNCKRq) or [Matrix](https://matrix.to/#/#audiobookshelf:matrix.org)
|
||||
加入我们,在 [Discord](https://discord.gg/pJsjuNCKRq) 或 [Matrix](https://matrix.to/#/#audiobookshelf:matrix.org)
|
||||
|
||||
### Android App (beta)
|
||||
Try it out on the [Google Play Store](https://play.google.com/store/apps/details?id=com.audiobookshelf.app)
|
||||
### Android 应用(测试版)
|
||||
|
||||
### iOS App (beta)
|
||||
Available using Test Flight: https://testflight.apple.com/join/wiic7QIW - [Join the discussion](https://github.com/advplyr/audiobookshelf-app/discussions/60)
|
||||
在 [Google Play 商店](https://play.google.com/store/apps/details?id=com.audiobookshelf.app)试用
|
||||
|
||||
### Build your own tools & clients
|
||||
Check out the [API documentation](https://api.audiobookshelf.org/)
|
||||
### iOS App(测试版)
|
||||
|
||||
<br />
|
||||
通过 Test Flight 获取:[https://testflight.apple.com/join/wiic7QIW](https://testflight.apple.com/join/wiic7QIW) - [加入讨论](https://testflight.apple.com/join/wiic7QIW)
|
||||
|
||||
<img alt="Library Screenshot" src="https://github.com/advplyr/audiobookshelf/raw/master/images/DemoLibrary.png" />
|
||||
### 自建工具与客户端
|
||||
|
||||
<br />
|
||||
查看 [API 文档](API 文档)
|
||||
|
||||
# Organizing your audiobooks
|
||||

|
||||
|
||||
#### Directory structure and folder names are important to Audiobookshelf!
|
||||
# 整理有声书
|
||||
|
||||
See [documentation](https://audiobookshelf.org/docs#book-directory-structure) for supported directory structure, folder naming conventions, and audio file metadata usage.
|
||||
#### 目录结构和文件夹名称对 Audiobookshelf 非常重要!
|
||||
|
||||
<br />
|
||||
请参阅[文档](https://audiobookshelf.org/docs#book-directory-structure)了解支持的目录结构、文件夹命名约定以及音频文件元数据的使用方法。
|
||||
|
||||
# Installation
|
||||
# 安装
|
||||
|
||||
See [install docs](https://www.audiobookshelf.org/docs)
|
||||
请参阅[安装文档](https://www.audiobookshelf.org/docs)
|
||||
|
||||
<br />
|
||||
# 反向代理设置
|
||||
|
||||
# Reverse Proxy Set Up
|
||||
#### 重要!Audiobookshelf 需要建立 WebSocket 连接。
|
||||
|
||||
#### Important! Audiobookshelf requires a websocket connection.
|
||||
#### 注意:子文件夹路径(例如 /audiobooks)尚未支持。详见 [issue](https://github.com/advplyr/audiobookshelf/issues/385)
|
||||
|
||||
#### Note: Subfolder paths (e.g. /audiobooks) are not supported yet. See [issue](https://github.com/advplyr/audiobookshelf/issues/385)
|
||||
### NGINX 反向代理管理器
|
||||
|
||||
### NGINX Proxy Manager
|
||||
启用 WebSockets 支持
|
||||
|
||||
Toggle websockets support.
|
||||

|
||||
|
||||
<img alt="NGINX Web socket" src="https://user-images.githubusercontent.com/67830747/153679106-b2a7f5b9-0702-48c6-9740-b26b401986e9.png" />
|
||||
|
||||
### NGINX Reverse Proxy
|
||||
|
||||
Add this to the site config file on your nginx server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths.
|
||||
### NGINX 反向代理
|
||||
|
||||
在你的 Nginx 服务器的站点配置文件中添加以下内容,更改 <> 中的相关部分,并插入你的证书路径,然后保存文件。
|
||||
|
||||
```bash
|
||||
server
|
||||
|
|
@ -114,17 +98,18 @@ server
|
|||
}
|
||||
```
|
||||
|
||||
### Apache Reverse Proxy
|
||||
### Apache 反向代理
|
||||
|
||||
Add this to the site config file on your Apache server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths.
|
||||
在你的 Apache 服务器的站点配置文件中添加以下内容,更改 <> 中的相关部分,并插入你的证书路径,然后保存文件。
|
||||
|
||||
For this to work you must enable at least the following mods using `a2enmod`:
|
||||
- `ssl`
|
||||
- `proxy`
|
||||
- `proxy_http`
|
||||
- `proxy_balancer`
|
||||
- `proxy_wstunnel`
|
||||
- `rewrite`
|
||||
要使此功能正常工作,你必须使用 `a2enmod` 启用以下模块中的至少一个:
|
||||
|
||||
* `ssl`
|
||||
* `proxy`
|
||||
* `proxy_http`
|
||||
* `proxy_balancer`
|
||||
* `proxy_wstunnel`
|
||||
* `rewrite`
|
||||
|
||||
```bash
|
||||
<IfModule mod_ssl.c>
|
||||
|
|
@ -149,9 +134,8 @@ For this to work you must enable at least the following mods using `a2enmod`:
|
|||
</IfModule>
|
||||
```
|
||||
|
||||
Some SSL certificates like those signed by Let's Encrypt require ACME validation. To allow Let's Encrypt to write and confirm
|
||||
the ACME challenge, edit your VirtualHost definition to prevent proxying traffic that queries `/.well-known` and instead
|
||||
serve that directly:
|
||||
某些由 Let's Encrypt 签名的 SSL 证书(如 Let's Encrypt 证书)需要进行 ACME 验证。为了允许 Let's Encrypt 写入并确认 ACME 挑战,请编辑您的 VirtualHost 定义,以防止代理查询 `/.well-known` 的流量,而是直接提供这些内容:
|
||||
|
||||
```bash
|
||||
<VirtualHost *:443>
|
||||
# ...
|
||||
|
|
@ -169,36 +153,32 @@ serve that directly:
|
|||
</VirtualHost>
|
||||
```
|
||||
|
||||
### SWAG 反向代理
|
||||
|
||||
### SWAG Reverse Proxy
|
||||
[请参阅 LinuxServer.io 配置示例](https://github.com/linuxserver/reverse-proxy-confs/blob/master/audiobookshelf.subdomain.conf.sample)
|
||||
|
||||
[See LinuxServer.io config sample](https://github.com/linuxserver/reverse-proxy-confs/blob/master/audiobookshelf.subdomain.conf.sample)
|
||||
### Synology 反向代理
|
||||
|
||||
### Synology Reverse Proxy
|
||||
1. 打开控制面板 > 应用程序门户
|
||||
2. 切换到反向代理选项卡
|
||||
3. 选择您想要启用 Websockets 的代理规则,然后点击编辑
|
||||
4. 切换到“自定义标头”选项卡
|
||||
5. 点击创建 > WebSocket
|
||||
6. 点击保存
|
||||
|
||||
1. Open Control Panel > Application Portal
|
||||
2. Change to the Reverse Proxy tab
|
||||
3. Select the proxy rule for which you want to enable Websockets and click on Edit
|
||||
4. Change to the "Custom Header" tab
|
||||
5. Click Create > WebSocket
|
||||
6. Click Save
|
||||
[来自 @silentArtifact](https://github.com/advplyr/audiobookshelf/issues/241#issuecomment-1036732329)
|
||||
|
||||
[from @silentArtifact](https://github.com/advplyr/audiobookshelf/issues/241#issuecomment-1036732329)
|
||||
### [Traefik 反向代理](https://doc.traefik.io/traefik/)
|
||||
|
||||
### [Traefik Reverse Proxy](https://doc.traefik.io/traefik/)
|
||||
与 CORS 相关的中间件会导致在登录时应用程序报告未知错误。为了避免这种情况,请不要为该站点的路由器应用以下标头:
|
||||
|
||||
Middleware relating to CORS will cause the app to report Unknown Error when logging in. To prevent this don't apply any of the following headers to the router for this site:
|
||||
* accessControlAllowMethods
|
||||
* accessControlAllowOriginList
|
||||
* accessControlMaxAge
|
||||
|
||||
<ul>
|
||||
<li>accessControlAllowMethods</li>
|
||||
<li>accessControlAllowOriginList</li>
|
||||
<li>accessControlMaxAge</li>
|
||||
</ul>
|
||||
来自 @Dondochaka 和 @BeastleeUK
|
||||
|
||||
From [@Dondochaka](https://discord.com/channels/942908292873723984/942914154254176257/945074590374318170) and [@BeastleeUK](https://discord.com/channels/942908292873723984/942914154254176257/970366039294611506)
|
||||
<br />
|
||||
|
||||
### Example Caddyfile - [Caddy Reverse Proxy](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy)
|
||||
### 示例 Caddyfile - [Caddy 反向代理](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy)
|
||||
|
||||
```
|
||||
subdomain.domain.com {
|
||||
|
|
@ -207,78 +187,56 @@ subdomain.domain.com {
|
|||
}
|
||||
```
|
||||
|
||||
# 从源代码运行
|
||||
|
||||
# Run from source
|
||||
# 贡献
|
||||
|
||||
# Contributing
|
||||
该应用使用 [NodeJs](https://nodejs.org/) 构建。
|
||||
|
||||
This application is built using [NodeJs](https://nodejs.org/).
|
||||
### Dev Container 设置
|
||||
|
||||
### Dev Container Setup
|
||||
The easiest way to begin developing this project is to use a dev container. An introduction to dev containers in VSCode can be found [here](https://code.visualstudio.com/docs/devcontainers/containers).
|
||||
开始开发这个项目最简单的方法是使用开发容器。在 VSCode 中使用开发容器的介绍可以在这里找到 [这里](https://code.visualstudio.com/docs/devcontainers/containers) 。
|
||||
|
||||
Required Software:
|
||||
* [Docker Desktop](https://www.docker.com/products/docker-desktop/)
|
||||
* [VSCode](https://code.visualstudio.com/download)
|
||||
所需软件:
|
||||
|
||||
*Note, it is possible to use other container software than Docker and IDEs other than VSCode. However, this setup is more complicated and not covered here.*
|
||||
* [Docker Desktop](https://www.docker.com/products/docker-desktop/)
|
||||
* [VSCode](https://code.visualstudio.com/download)
|
||||
|
||||
<div>
|
||||
<details>
|
||||
<summary>Install the required software on Windows with <a href=(https://docs.microsoft.com/en-us/windows/package-manager/winget/#production-recommended)>winget</a></summary>
|
||||
*请注意,除了使用 Docker 作为容器软件,还可以使用其他容器软件;除了使用 VSCode 作为 IDE,还可以使用其他 IDE。然而,这种设置更为复杂,这里不予涵盖。*
|
||||
|
||||
<p>
|
||||
Note: This requires a PowerShell prompt with winget installed. You should be able to copy and paste the code block to install. If you use an elevated PowerShell prompt, UAC will not pop up during the installs.
|
||||
在 Windows 上使用安装所需的软件
|
||||
|
||||
注意:这需要一个带有 winget 的 PowerShell 提示符。你应该能够复制并粘贴代码块进行安装。如果你使用的是提升的 PowerShell 提示符,安装过程中不会弹出 UAC 提示。
|
||||
|
||||
```PowerShell
|
||||
winget install -e --id Docker.DockerDesktop; `
|
||||
winget install -e --id Microsoft.VisualStudioCode
|
||||
```
|
||||
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<details>
|
||||
<summary>Install the required software on MacOS with <a href=(https://snapcraft.io/)>homebrew</a></summary>
|
||||
|
||||
<p>
|
||||
在 MacOS 上使用安装所需的软件
|
||||
|
||||
```sh
|
||||
brew install --cask docker visual-studio-code
|
||||
```
|
||||
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div style="padding-bottom: 1em">
|
||||
<details>
|
||||
<summary>Install the required software on Linux with <a href=(https://brew.sh/)>snap</a></summary>
|
||||
|
||||
<p>
|
||||
使用 snap 在 Linux 上安装所需的软件
|
||||
|
||||
```sh
|
||||
sudo snap install docker; \
|
||||
sudo snap install docker;
|
||||
sudo snap install code --classic
|
||||
```
|
||||
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
安装这些包后,您现在可以安装 VSCode 的 [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) 扩展。安装完此扩展后,打开命令面板(`ctrl+shift+p` 或 `cmd+shift+p`),然后选择命令 `>Dev Containers: Rebuild and Reopen in Container` 。这将导致开发环境容器被构建并启动。
|
||||
|
||||
After installing these packages, you can now install the [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension for VSCode. After installing this extension open the command pallet (`ctrl+shift+p` or `cmd+shift+p`) and select the command `>Dev Containers: Rebuild and Reopen in Container`. This will cause the development environment container to be built and launched.
|
||||
现在您可以开始开发了!
|
||||
|
||||
You are now ready to start development!
|
||||
### 手动设置环境
|
||||
|
||||
### Manual Environment Setup
|
||||
如果你不想使用开发容器,仍然可以开发这个项目。首先,你需要安装 [NodeJs](https://nodejs.org/)(版本 16)和 [FFmpeg](https://ffmpeg.org/)。
|
||||
|
||||
If you don't want to use the dev container, you can still develop this project. First, you will need to install [NodeJs](https://nodejs.org/) (version 16) and [FFmpeg](https://ffmpeg.org/).
|
||||
接下来,你需要在项目的根目录中创建一个 `dev.js` 文件。这个文件包含配置信息和与你的开发环境相关的路径。你可以在 `.devcontainer/dev.js` 中找到这个文件的一个示例。
|
||||
|
||||
Next you will need to create a `dev.js` file in the project's root directory. This contains configuration information and paths unique to your development environment. You can find an example of this file in `.devcontainer/dev.js`.
|
||||
|
||||
You are now ready to build the client:
|
||||
你现在可以构建客户端了:
|
||||
|
||||
```sh
|
||||
npm ci
|
||||
|
|
@ -288,21 +246,20 @@ npm run generate
|
|||
cd ..
|
||||
```
|
||||
|
||||
### Development Commands
|
||||
### 开发命令
|
||||
|
||||
After setting up your development environment, either using the dev container or using your own custom environment, the following commands will help you run the server and client.
|
||||
设置完开发环境后(无论是使用开发容器还是自定义环境),以下命令可以帮助你运行服务器和客户端。
|
||||
|
||||
To run the server, you can use the command `npm run dev`. This will use the client that was built when you ran `npm run generate` in the client directory or when you started the dev container. If you make changes to the server, you will need to restart the server. If you make changes to the client, you will need to run the command `(cd client; npm run generate)` and then restart the server. By default the client runs at `localhost:3333`, though the port can be configured in `dev.js`.
|
||||
要运行服务器,可以使用命令 ``npm run dev``。这将使用你在客户端目录中运行 ``npm run generate`` 时构建的客户端,或者在启动开发容器时构建的客户端。如果你对服务器进行了修改,需要重启服务器。如果你对客户端进行了修改,需要运行命令 ``(cd client; npm run generate)``,然后重启服务器。默认情况下,客户端运行在 ``localhost:3333``,但端口可以在 ``dev.js`` 中进行配置。
|
||||
|
||||
You can also build a version of the client that supports live reloading. To do this, start the server, then run the command `(cd client; npm run dev)`. This will run a separate instance of the client at `localhost:3000` that will be automatically updated as you make changes to the client.
|
||||
你也可以构建一个支持实时重载的客户端版本。要实现这一点,先启动服务器,然后运行命令 ``(cd client; npm run dev)``。这将在 ``localhost:3000`` 上运行一个客户端实例,并且当你对客户端进行修改时会自动更新。
|
||||
|
||||
If you are using VSCode, this project includes a couple of pre-defined targets to speed up this process. First, if you build the project (`ctrl+shift+b` or `cmd+shift+b`) it will automatically generate the client. Next, there are debug commands for running the server and client. You can view these targets using the debug panel (bring it up with (`ctrl+shift+d` or `cmd+shift+d`):
|
||||
如果你使用的是 VSCode,这个项目包含几个预定义的目标来加快这个过程。首先,如果你构建项目(`ctrl+shift+b` 或 `cmd+shift+b`),它会自动生成客户端。接下来,有调试命令可以运行服务器和客户端。你可以通过调试面板查看这些目标(使用 `ctrl+shift+d` 或 `cmd+shift+d` 打开调试面板):
|
||||
|
||||
* `Debug server`—Run the server.
|
||||
* `Debug client (nuxt)`—Run the client with live reload.
|
||||
* `Debug server and client (nuxt)`—Runs both the preceding two debug targets.
|
||||
* `Debug server`—运行服务器。
|
||||
* `Debug client (nuxt)`—运行客户端并启用实时重载。
|
||||
* `Debug server and client (nuxt)` —运行上述两个调试目标。
|
||||
|
||||
# 如何支持
|
||||
|
||||
# How to Support
|
||||
|
||||
[See the incomplete "How to Support" page](https://www.audiobookshelf.org/support)
|
||||
[查看不完整的“支持方式”页面](https://www.audiobookshelf.org/support)
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
<br />
|
||||
<div align="center">
|
||||
<img alt="Audiobookshelf Banner" src="https://github.com/advplyr/audiobookshelf/raw/master/images/banner.svg" width="600">
|
||||
|
||||
<p align="center">
|
||||
<br />
|
||||
<a href="https://audiobookshelf.org/docs">Documentation</a>
|
||||
·
|
||||
<a href="https://audiobookshelf.org/guides">User Guides</a>
|
||||
·
|
||||
<a href="https://audiobookshelf.org/support">Support</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
# About
|
||||
|
||||
Audiobookshelf is a self-hosted audiobook and podcast server.
|
||||
|
||||
### Features
|
||||
|
||||
* Fully **open-source**, including the [android & iOS app](https://github.com/advplyr/audiobookshelf-app) *(in beta)*
|
||||
* Stream all audio formats on the fly
|
||||
* Search and add podcasts to download episodes w/ auto-download
|
||||
* Multi-user support w/ custom permissions
|
||||
* Keeps progress per user and syncs across devices
|
||||
* Auto-detects library updates, no need to re-scan
|
||||
* Upload books and podcasts w/ bulk upload drag and drop folders
|
||||
* Backup your metadata + automated daily backups
|
||||
* Progressive Web App (PWA)
|
||||
* Chromecast support on the web app and android app
|
||||
* Fetch metadata and cover art from several sources
|
||||
* Chapter editor and chapter lookup (using [Audnexus API](https://audnex.us/))
|
||||
* Merge your audio files into a single m4b
|
||||
* Embed metadata and cover image into your audio files (using [Tone](https://github.com/sandreas/tone))
|
||||
* Basic ebook support and ereader
|
||||
* Epub, pdf, cbr, cbz
|
||||
* Send ebook to device (i.e. Kindle)
|
||||
* Open RSS feeds for podcasts and audiobooks
|
||||
|
||||
Is there a feature you are looking for? [Suggest it](https://github.com/advplyr/audiobookshelf/issues/new/choose)
|
||||
|
||||
Join us on [Discord](https://discord.gg/pJsjuNCKRq) or [Matrix](https://matrix.to/#/#audiobookshelf:matrix.org)
|
||||
|
||||
### Android App (beta)
|
||||
Try it out on the [Google Play Store](https://play.google.com/store/apps/details?id=com.audiobookshelf.app)
|
||||
|
||||
### iOS App (beta)
|
||||
Available using Test Flight: https://testflight.apple.com/join/wiic7QIW - [Join the discussion](https://github.com/advplyr/audiobookshelf-app/discussions/60)
|
||||
|
||||
### Build your own tools & clients
|
||||
Check out the [API documentation](https://api.audiobookshelf.org/)
|
||||
|
||||
<br />
|
||||
|
||||
<img alt="Library Screenshot" src="https://github.com/advplyr/audiobookshelf/raw/master/images/DemoLibrary.png" />
|
||||
|
||||
<br />
|
||||
|
||||
# Organizing your audiobooks
|
||||
|
||||
#### Directory structure and folder names are important to Audiobookshelf!
|
||||
|
||||
See [documentation](https://audiobookshelf.org/docs#book-directory-structure) for supported directory structure, folder naming conventions, and audio file metadata usage.
|
||||
|
||||
<br />
|
||||
|
||||
# Installation
|
||||
|
||||
See [install docs](https://www.audiobookshelf.org/docs)
|
||||
|
||||
<br />
|
||||
|
||||
# Reverse Proxy Set Up
|
||||
|
||||
#### Important! Audiobookshelf requires a websocket connection.
|
||||
|
||||
#### Note: Subfolder paths (e.g. /audiobooks) are not supported yet. See [issue](https://github.com/advplyr/audiobookshelf/issues/385)
|
||||
|
||||
### NGINX Proxy Manager
|
||||
|
||||
Toggle websockets support.
|
||||
|
||||
<img alt="NGINX Web socket" src="https://user-images.githubusercontent.com/67830747/153679106-b2a7f5b9-0702-48c6-9740-b26b401986e9.png" />
|
||||
|
||||
### NGINX Reverse Proxy
|
||||
|
||||
Add this to the site config file on your nginx server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths.
|
||||
|
||||
|
||||
```bash
|
||||
server
|
||||
{
|
||||
listen 443 ssl;
|
||||
server_name <sub>.<domain>.<tld>;
|
||||
|
||||
access_log /var/log/nginx/audiobookshelf.access.log;
|
||||
error_log /var/log/nginx/audiobookshelf.error.log;
|
||||
|
||||
ssl_certificate /path/to/certificate;
|
||||
ssl_certificate_key /path/to/key;
|
||||
|
||||
location / {
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
proxy_http_version 1.1;
|
||||
|
||||
proxy_pass http://<URL_to_forward_to>;
|
||||
proxy_redirect http:// https://;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Apache Reverse Proxy
|
||||
|
||||
Add this to the site config file on your Apache server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths.
|
||||
|
||||
For this to work you must enable at least the following mods using `a2enmod`:
|
||||
- `ssl`
|
||||
- `proxy`
|
||||
- `proxy_http`
|
||||
- `proxy_balancer`
|
||||
- `proxy_wstunnel`
|
||||
- `rewrite`
|
||||
|
||||
```bash
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost *:443>
|
||||
ServerName <sub>.<domain>.<tld>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
|
||||
ProxyPreserveHost On
|
||||
ProxyPass / http://localhost:<audiobookshelf_port>/
|
||||
RewriteEngine on
|
||||
RewriteCond %{HTTP:Upgrade} websocket [NC]
|
||||
RewriteCond %{HTTP:Connection} upgrade [NC]
|
||||
RewriteRule ^/?(.*) "ws://localhost:<audiobookshelf_port>/$1" [P,L]
|
||||
|
||||
# unless you're doing something special this should be generated by a
|
||||
# tool like certbot by let's encrypt
|
||||
SSLCertificateFile /path/to/cert/file
|
||||
SSLCertificateKeyFile /path/to/key/file
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
```
|
||||
|
||||
Some SSL certificates like those signed by Let's Encrypt require ACME validation. To allow Let's Encrypt to write and confirm
|
||||
the ACME challenge, edit your VirtualHost definition to prevent proxying traffic that queries `/.well-known` and instead
|
||||
serve that directly:
|
||||
```bash
|
||||
<VirtualHost *:443>
|
||||
# ...
|
||||
|
||||
# create the directory structure /.well-known/acme-challenges
|
||||
# within DocumentRoot and give the HTTP user recursive write
|
||||
# access to it.
|
||||
DocumentRoot /path/to/local/directory
|
||||
|
||||
ProxyPreserveHost On
|
||||
ProxyPass /.well-known !
|
||||
ProxyPass / http://localhost:<audiobookshelf_port>/
|
||||
|
||||
# ...
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
|
||||
### SWAG Reverse Proxy
|
||||
|
||||
[See LinuxServer.io config sample](https://github.com/linuxserver/reverse-proxy-confs/blob/master/audiobookshelf.subdomain.conf.sample)
|
||||
|
||||
### Synology Reverse Proxy
|
||||
|
||||
1. Open Control Panel > Application Portal
|
||||
2. Change to the Reverse Proxy tab
|
||||
3. Select the proxy rule for which you want to enable Websockets and click on Edit
|
||||
4. Change to the "Custom Header" tab
|
||||
5. Click Create > WebSocket
|
||||
6. Click Save
|
||||
|
||||
[from @silentArtifact](https://github.com/advplyr/audiobookshelf/issues/241#issuecomment-1036732329)
|
||||
|
||||
### [Traefik Reverse Proxy](https://doc.traefik.io/traefik/)
|
||||
|
||||
Middleware relating to CORS will cause the app to report Unknown Error when logging in. To prevent this don't apply any of the following headers to the router for this site:
|
||||
|
||||
<ul>
|
||||
<li>accessControlAllowMethods</li>
|
||||
<li>accessControlAllowOriginList</li>
|
||||
<li>accessControlMaxAge</li>
|
||||
</ul>
|
||||
|
||||
From [@Dondochaka](https://discord.com/channels/942908292873723984/942914154254176257/945074590374318170) and [@BeastleeUK](https://discord.com/channels/942908292873723984/942914154254176257/970366039294611506)
|
||||
<br />
|
||||
|
||||
### Example Caddyfile - [Caddy Reverse Proxy](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy)
|
||||
|
||||
```
|
||||
subdomain.domain.com {
|
||||
encode gzip zstd
|
||||
reverse_proxy <LOCAL_IP>:<PORT>
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
# Run from source
|
||||
|
||||
# Contributing
|
||||
|
||||
This application is built using [NodeJs](https://nodejs.org/).
|
||||
|
||||
### Dev Container Setup
|
||||
The easiest way to begin developing this project is to use a dev container. An introduction to dev containers in VSCode can be found [here](https://code.visualstudio.com/docs/devcontainers/containers).
|
||||
|
||||
Required Software:
|
||||
* [Docker Desktop](https://www.docker.com/products/docker-desktop/)
|
||||
* [VSCode](https://code.visualstudio.com/download)
|
||||
|
||||
*Note, it is possible to use other container software than Docker and IDEs other than VSCode. However, this setup is more complicated and not covered here.*
|
||||
|
||||
<div>
|
||||
<details>
|
||||
<summary>Install the required software on Windows with <a href=(https://docs.microsoft.com/en-us/windows/package-manager/winget/#production-recommended)>winget</a></summary>
|
||||
|
||||
<p>
|
||||
Note: This requires a PowerShell prompt with winget installed. You should be able to copy and paste the code block to install. If you use an elevated PowerShell prompt, UAC will not pop up during the installs.
|
||||
|
||||
```PowerShell
|
||||
winget install -e --id Docker.DockerDesktop; `
|
||||
winget install -e --id Microsoft.VisualStudioCode
|
||||
```
|
||||
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<details>
|
||||
<summary>Install the required software on MacOS with <a href=(https://snapcraft.io/)>homebrew</a></summary>
|
||||
|
||||
<p>
|
||||
|
||||
```sh
|
||||
brew install --cask docker visual-studio-code
|
||||
```
|
||||
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div style="padding-bottom: 1em">
|
||||
<details>
|
||||
<summary>Install the required software on Linux with <a href=(https://brew.sh/)>snap</a></summary>
|
||||
|
||||
<p>
|
||||
|
||||
```sh
|
||||
sudo snap install docker; \
|
||||
sudo snap install code --classic
|
||||
```
|
||||
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
After installing these packages, you can now install the [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension for VSCode. After installing this extension open the command pallet (`ctrl+shift+p` or `cmd+shift+p`) and select the command `>Dev Containers: Rebuild and Reopen in Container`. This will cause the development environment container to be built and launched.
|
||||
|
||||
You are now ready to start development!
|
||||
|
||||
### Manual Environment Setup
|
||||
|
||||
If you don't want to use the dev container, you can still develop this project. First, you will need to install [NodeJs](https://nodejs.org/) (version 16) and [FFmpeg](https://ffmpeg.org/).
|
||||
|
||||
Next you will need to create a `dev.js` file in the project's root directory. This contains configuration information and paths unique to your development environment. You can find an example of this file in `.devcontainer/dev.js`.
|
||||
|
||||
You are now ready to build the client:
|
||||
|
||||
```sh
|
||||
npm ci
|
||||
cd client
|
||||
npm ci
|
||||
npm run generate
|
||||
cd ..
|
||||
```
|
||||
|
||||
### Development Commands
|
||||
|
||||
After setting up your development environment, either using the dev container or using your own custom environment, the following commands will help you run the server and client.
|
||||
|
||||
To run the server, you can use the command `npm run dev`. This will use the client that was built when you ran `npm run generate` in the client directory or when you started the dev container. If you make changes to the server, you will need to restart the server. If you make changes to the client, you will need to run the command `(cd client; npm run generate)` and then restart the server. By default the client runs at `localhost:3333`, though the port can be configured in `dev.js`.
|
||||
|
||||
You can also build a version of the client that supports live reloading. To do this, start the server, then run the command `(cd client; npm run dev)`. This will run a separate instance of the client at `localhost:3000` that will be automatically updated as you make changes to the client.
|
||||
|
||||
If you are using VSCode, this project includes a couple of pre-defined targets to speed up this process. First, if you build the project (`ctrl+shift+b` or `cmd+shift+b`) it will automatically generate the client. Next, there are debug commands for running the server and client. You can view these targets using the debug panel (bring it up with (`ctrl+shift+d` or `cmd+shift+d`):
|
||||
|
||||
* `Debug server`—Run the server.
|
||||
* `Debug client (nuxt)`—Run the client with live reload.
|
||||
* `Debug server and client (nuxt)`—Runs both the preceding two debug targets.
|
||||
|
||||
|
||||
# How to Support
|
||||
|
||||
[See the incomplete "How to Support" page](https://www.audiobookshelf.org/support)
|
||||
|
|
@ -1,18 +1,19 @@
|
|||
# Docker Autoheal
|
||||
|
||||
Monitor and restart unhealthy docker containers.
|
||||
This functionality was proposed to be included with the addition of `HEALTHCHECK`, however didn't make the cut.
|
||||
This container is a stand-in till there is native support for `--exit-on-unhealthy` https://github.com/docker/docker/pull/22719.
|
||||
监控并重启不健康的 Docker 容器。此功能曾提议在增加 \``HEALTHCHECK`\` 后包含进来,但最终未能实现。此容器是一个临时替代品,直到有原生支持 \``--exit-on-unhealthy`\`[https://github.com/docker/docker/pull/22719](https://github.com/docker/docker/pull/22719)。
|
||||
|
||||
## Supported tags and Dockerfile links
|
||||
- [`latest` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/main/Dockerfile) - Built daily
|
||||
- [`1.1.0` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/1.1.0/Dockerfile)
|
||||
- [`v0.7.0` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/v0.7.0/Dockerfile)
|
||||
## 支持的标签和 Dockerfile 链接
|
||||
|
||||
* [`latest` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/main/Dockerfile) - 每日构建
|
||||
* [`1.1.0` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/1.1.0/Dockerfile)
|
||||
* [`v0.7.0` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/v0.7.0/Dockerfile)
|
||||
|
||||
 [](http://microbadger.com/images/willfarrell/autoheal "Docker layer breakdown")
|
||||
|
||||
## How to use
|
||||
### UNIX socket passthrough
|
||||
## 如何使用
|
||||
|
||||
### UNIX 套接字透传
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name autoheal \
|
||||
|
|
@ -21,7 +22,9 @@ docker run -d \
|
|||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
willfarrell/autoheal
|
||||
```
|
||||
|
||||
### TCP socket
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name autoheal \
|
||||
|
|
@ -31,28 +34,31 @@ docker run -d \
|
|||
-v /path/to/certs/:/certs/:ro \
|
||||
willfarrell/autoheal
|
||||
```
|
||||
a) Apply the label `autoheal=true` to your container to have it watched.
|
||||
|
||||
b) Set ENV `AUTOHEAL_CONTAINER_LABEL=all` to watch all running containers.
|
||||
a) 在你的容器上应用标签 \``autoheal=true`\` 以使其被监控。
|
||||
|
||||
c) Set ENV `AUTOHEAL_CONTAINER_LABEL` to existing label name that has the value `true`.
|
||||
b) 设置环境变量 \``AUTOHEAL_CONTAINER_LABEL=all`\` 以监控所有运行中的容器。
|
||||
|
||||
Note: You must apply `HEALTHCHECK` to your docker images first. See https://docs.docker.com/engine/reference/builder/#healthcheck for details.
|
||||
See https://docs.docker.com/engine/security/https/ for how to configure TCP with mTLS
|
||||
c) 设置环境变量 \``AUTOHEAL_CONTAINER_LABEL`\` 为具有值 \``true`\` 的现有标签名称。
|
||||
|
||||
The certificates, and keys need these names:
|
||||
* ca.pem
|
||||
* client-cert.pem
|
||||
* client-key.pem
|
||||
注意:您必须首先将 `HEALTHCHECK` 应用于您的 Docker 镜像。详情请参阅 [https://docs.docker.com/engine/reference/builder/#healthcheck](https://docs.docker.com/engine/reference/builder/#healthcheck)。有关如何使用 mTLS 配置 TCP,请参阅 [https://docs.docker.com/engine/security/https/](https://docs.docker.com/engine/security/https/)。
|
||||
|
||||
证书和密钥需要以下名称:
|
||||
|
||||
* ca.pem
|
||||
* client-cert.pem
|
||||
* client-key.pem
|
||||
|
||||
### 更改时区
|
||||
|
||||
如果需要时区与本地机器一致,可以将 `/etc/localtime` 映射到容器中。
|
||||
|
||||
### Change Timezone
|
||||
If you need the timezone to match the local machine, you can map the `/etc/localtime` into the container.
|
||||
```
|
||||
docker run ... -v /etc/localtime:/etc/localtime:ro
|
||||
```
|
||||
|
||||
## ENV 默认设置
|
||||
|
||||
## ENV Defaults
|
||||
```
|
||||
AUTOHEAL_CONTAINER_LABEL=autoheal
|
||||
AUTOHEAL_INTERVAL=5 # check every 5 seconds
|
||||
|
|
@ -63,12 +69,14 @@ CURL_TIMEOUT=30 # --max-time seconds for curl requests to Docker API
|
|||
WEBHOOK_URL="" # post message to the webhook if a container was restarted (or restart failed)
|
||||
```
|
||||
|
||||
### Optional Container Labels
|
||||
### 可选容器标签
|
||||
|
||||
```
|
||||
autoheal.stop.timeout=20 # Per containers override for stop timeout seconds during restart
|
||||
```
|
||||
|
||||
## Testing
|
||||
## 测试
|
||||
|
||||
```bash
|
||||
docker build -t autoheal .
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,79 @@
|
|||
# Docker Autoheal
|
||||
|
||||
Monitor and restart unhealthy docker containers.
|
||||
This functionality was proposed to be included with the addition of `HEALTHCHECK`, however didn't make the cut.
|
||||
This container is a stand-in till there is native support for `--exit-on-unhealthy` https://github.com/docker/docker/pull/22719.
|
||||
|
||||
## Supported tags and Dockerfile links
|
||||
- [`latest` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/main/Dockerfile) - Built daily
|
||||
- [`1.1.0` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/1.1.0/Dockerfile)
|
||||
- [`v0.7.0` (*Dockerfile*)](https://github.com/willfarrell/docker-autoheal/blob/v0.7.0/Dockerfile)
|
||||
|
||||
 [](http://microbadger.com/images/willfarrell/autoheal "Docker layer breakdown")
|
||||
|
||||
## How to use
|
||||
### UNIX socket passthrough
|
||||
```bash
|
||||
docker run -d \
|
||||
--name autoheal \
|
||||
--restart=always \
|
||||
-e AUTOHEAL_CONTAINER_LABEL=all \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
willfarrell/autoheal
|
||||
```
|
||||
### TCP socket
|
||||
```bash
|
||||
docker run -d \
|
||||
--name autoheal \
|
||||
--restart=always \
|
||||
-e AUTOHEAL_CONTAINER_LABEL=all \
|
||||
-e DOCKER_SOCK=tcp://HOST:PORT \
|
||||
-v /path/to/certs/:/certs/:ro \
|
||||
willfarrell/autoheal
|
||||
```
|
||||
a) Apply the label `autoheal=true` to your container to have it watched.
|
||||
|
||||
b) Set ENV `AUTOHEAL_CONTAINER_LABEL=all` to watch all running containers.
|
||||
|
||||
c) Set ENV `AUTOHEAL_CONTAINER_LABEL` to existing label name that has the value `true`.
|
||||
|
||||
Note: You must apply `HEALTHCHECK` to your docker images first. See https://docs.docker.com/engine/reference/builder/#healthcheck for details.
|
||||
See https://docs.docker.com/engine/security/https/ for how to configure TCP with mTLS
|
||||
|
||||
The certificates, and keys need these names:
|
||||
* ca.pem
|
||||
* client-cert.pem
|
||||
* client-key.pem
|
||||
|
||||
### Change Timezone
|
||||
If you need the timezone to match the local machine, you can map the `/etc/localtime` into the container.
|
||||
```
|
||||
docker run ... -v /etc/localtime:/etc/localtime:ro
|
||||
```
|
||||
|
||||
|
||||
## ENV Defaults
|
||||
```
|
||||
AUTOHEAL_CONTAINER_LABEL=autoheal
|
||||
AUTOHEAL_INTERVAL=5 # check every 5 seconds
|
||||
AUTOHEAL_START_PERIOD=0 # wait 0 seconds before first health check
|
||||
AUTOHEAL_DEFAULT_STOP_TIMEOUT=10 # Docker waits max 10 seconds (the Docker default) for a container to stop before killing during restarts (container overridable via label, see below)
|
||||
DOCKER_SOCK=/var/run/docker.sock # Unix socket for curl requests to Docker API
|
||||
CURL_TIMEOUT=30 # --max-time seconds for curl requests to Docker API
|
||||
WEBHOOK_URL="" # post message to the webhook if a container was restarted (or restart failed)
|
||||
```
|
||||
|
||||
### Optional Container Labels
|
||||
```
|
||||
autoheal.stop.timeout=20 # Per containers override for stop timeout seconds during restart
|
||||
```
|
||||
|
||||
## Testing
|
||||
```bash
|
||||
docker build -t autoheal .
|
||||
|
||||
docker run -d \
|
||||
-e AUTOHEAL_CONTAINER_LABEL=all \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
autoheal
|
||||
```
|
||||
|
|
@ -4,7 +4,7 @@ networks:
|
|||
|
||||
services:
|
||||
baota:
|
||||
image: btpanel/baota:9.0_lts_lnmp
|
||||
image: btpanel/baota:10.0_lts
|
||||
container_name: ${CONTAINER_NAME}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
|
@ -1,152 +1,86 @@
|
|||
<h1 align="center">
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://bytebase.com?source=github"
|
||||
>
|
||||
<img
|
||||
align="center"
|
||||
alt="Bytebase"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/banner.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</a>
|
||||
</h1>
|
||||
# [](https://bytebase.com?source=github)
|
||||
|
||||
<p align="center">
|
||||
<a href="https://demo.bytebase.com?source=github" target="_blank"><b>🔥 Live Demo</b></a> •
|
||||
<a href="https://bytebase.com/docs/get-started/install/overview" target="_blank"><b>⚙️ Install</b></a> •
|
||||
<a href="https://bytebase.com/docs"><b>📚 Docs</b></a> •
|
||||
<a href="https://discord.gg/huyw7gRsyA"><b>💬 Discord</b></a> •
|
||||
<a href="https://www.bytebase.com/request-demo/"><b>🙋♀️ Book Demo</b></a>
|
||||
</p>
|
||||
🔥 在线演示 • ⚙️ 安装 • 📚 文档 • [**💬 Discord**](https://discord.gg/huyw7gRsyA) • [**🙋♀️ Book Demo**](https://www.bytebase.com/request-demo/)
|
||||
|
||||
<p align="center">
|
||||
<a href="https://goreportcard.com/report/github.com/bytebase/bytebase">
|
||||
<img alt="go report" src="https://goreportcard.com/badge/github.com/bytebase/bytebase" />
|
||||
</a>
|
||||
<a href="https://artifacthub.io/packages/search?repo=bytebase">
|
||||
<img alt="Artifact Hub" src="https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/bytebase" />
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/bytebase/bytebase"
|
||||
target="_blank"
|
||||
>
|
||||
<img alt="Github Stars" src="https://img.shields.io/github/stars/bytebase/bytebase?logo=github">
|
||||
</a>
|
||||
</p>
|
||||
[](https://goreportcard.com/report/github.com/bytebase/bytebase)[ ](https://artifacthub.io/packages/search?repo=bytebase)[](https://github.com/bytebase/bytebase)
|
||||
|
||||
<p align="center">
|
||||
<b> Different </b> database development tasks
|
||||
</p>
|
||||
**不同的**数据库开发任务
|
||||
|
||||
<p align="center">
|
||||
<b> Multiple </b> database systems
|
||||
</p>
|
||||
**多个**数据库系统
|
||||
|
||||
<p align="center">
|
||||
<b> Unified </b> process
|
||||
</p>
|
||||
统一过程
|
||||
|
||||
<p align="center">
|
||||
<b> Single </b> tool
|
||||
</p>
|
||||
单一工具
|
||||
|
||||
<br />
|
||||

|
||||
|
||||
<p align="center" >
|
||||
<img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/old-to-new-world.webp" />
|
||||
</p>
|
||||

|
||||
|
||||
<br />
|
||||

|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/fish.webp" />
|
||||
</p>
|
||||
🪜
|
||||
|
||||
<br />
|
||||
# 更改
|
||||
|
||||
<p align="center" >
|
||||
<img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/change-query-secure-govern.webp" />
|
||||
</p>
|
||||
想要正式化数据库变更流程,但不知道如何操作?
|
||||
|
||||
<br />
|
||||
| | |
|
||||
| --- | --- |
|
||||
| **标准操作程序(SOP)**<br />标准化不同数据库系统、小型或大型表以及不同租户之间的数据库架构和数据变更流程。<br />**SQL 审查**<br />[100+条代码规范](https://www.bytebase.com/docs/sql-review/review-rules)用于检测 SQL 反模式并在组织中强制执行一致的 SQL 风格。<br />**GitOps**<br />[一键式 GitHub 和 GitLab 集成 ](https://www.bytebase.com/docs/vcs-integration/overview),以实现数据库变更的 GitOps 工作流。 | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/issue-detail.webp" /> |
|
||||
|
||||
<p align="center">🪜</p>
|
||||
<h1 align="center">Change</h1>
|
||||
<p align="center">
|
||||
Want to formalize the database change process but don't know how?
|
||||
</p>
|
||||
🔮
|
||||
|
||||
| | |
|
||||
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| <b>Standard Operating Procedure (SOP) </b><br />Standardize the database schema and data change process across different database systems, small or [large tables](https://www.bytebase.com/docs/change-database/online-schema-migration-for-mysql) and [different tenants](https://www.bytebase.com/docs/change-database/batch-change/#change-databases-from-multiple-tenants).<br /><br/><b>SQL Review</b><br />[100+ lint rules](https://www.bytebase.com/docs/sql-review/review-rules) to detect SQL anti-patterns and enforce consistent SQL style in the organization.<br /><br /><b>GitOps</b><br />[Point-and-click GitHub and GitLab integration](https://www.bytebase.com/docs/vcs-integration/overview) to enable GitOps workflow for changing database. | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/issue-detail.webp" /> |
|
||||
# 查询
|
||||
|
||||
<br />
|
||||
想控制数据访问却不知如何操作?
|
||||
|
||||
<p align="center">🔮</p>
|
||||
<h1 align="center">Query</h1>
|
||||
<p align="center">
|
||||
Want to control the data access but don't know how?
|
||||
</p>
|
||||
| | |
|
||||
| --- | --- |
|
||||
| **一站式 SQL 编辑器** <br/>专门用于执行 SQL 特定任务的基于 Web 的 IDE。<br/><br/>**数据脱敏**<br/>最先进的[列级掩码](https://www.bytebase.com/docs/sql-editor/mask-data)引擎,可覆盖子查询、CTE 等复杂情况。<br/><br/>**数据访问控制**<br/>组织层面政策以集中[数据访问控制 ](https://www.bytebase.com/docs/security/data-access-control)。 | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-editor.webp" /> |
|
||||
|
||||
| | |
|
||||
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
||||
| <b>All-in-one SQL Editor</b><br />Web-based IDE specifically for performing SQL specific tasks.<br /><br/><b>Data Masking</b><br />State-of-the-art [column level masking](https://www.bytebase.com/docs/sql-editor/mask-data) engine to cover complex situations like subquery, CTE.<br /><br /><b>Data Access Control</b><br />Organization level policy to centralize the [data access control](https://www.bytebase.com/docs/security/data-access-control). | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-editor.webp" /> |
|
||||
🔒
|
||||
|
||||
<br />
|
||||
# 安全
|
||||
|
||||
<p align="center">🔒</p>
|
||||
<h1 align="center">Secure</h1>
|
||||
<p align="center">
|
||||
Want to avoid data leakage, change outage and detect malicious behavior but don't know how?
|
||||
</p>
|
||||
想要避免数据泄露、服务中断并检测恶意行为却不知如何操作?
|
||||
|
||||
| | |
|
||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
||||
| <b>Centralize Change, Query and Admin Tasks</b><br />A single place to perform different tasks on different databases, thus enforce policy and monitor activity accordingly. <br /><br /><b>RBAC</b><br />[Two-level RBAC model](https://www.bytebase.com/docs/concepts/roles-and-permissions) mapping to the organization wide privileges and application team privileges respectively.<br /><br /><b>Anomaly Center and Audit Logging</b><br /> Capture all database [anomalies](https://www.bytebase.com/docs/administration/anomaly-center), user actions and system events and present them in a holistic view. | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/anomaly-center.webp" /> |
|
||||
| | |
|
||||
| --- | --- |
|
||||
| **集中变更、查询和管理任务** <br/>在一个地方执行不同数据库上的不同任务,从而执行策略并相应地监控活动。<br/><br/>**基于角色的访问控制(RBAC)**<br/>[两级基于角色的访问控制模型](https://www.bytebase.com/docs/concepts/roles-and-permissions)分别映射到组织范围内的权限和应用团队权限。<br/>**异常中心和审计日志**<br/><br/>捕获所有数据库 [异常 ](https://www.bytebase.com/docs/administration/anomaly-center)、用户操作和系统事件,并以整体视图呈现。 | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/grant-access.webp" /> |
|
||||
|
||||
<br />
|
||||
👩💼
|
||||
|
||||
<p align="center">👩💼</p>
|
||||
<h1 align="center">Govern</h1>
|
||||
<p align="center">
|
||||
Want to enforce organization policy but don't know how?
|
||||
</p>
|
||||
# 治理
|
||||
|
||||
| | |
|
||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| <b>Manage Database Resources</b><br /> A single place to manage environments, database instances, database users for application development, with optional [Terraform integration](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs). <br /><br /><b>Policy Enforcement</b><br />Enforce organization wide SQL Review policy, backup policy and data access policy.<br /><br/><b>SQL Editor Admin mode</b><br />[CLI like experience](https://www.bytebase.com/docs/sql-editor/admin-mode) without setting up bastion. | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-review-policy.webp" /> |
|
||||
想强制执行组织策略但不知道怎么做?
|
||||
|
||||
<br />
|
||||
| | |
|
||||
| --- | --- |
|
||||
| **管理数据库资源**<br/>一个地方管理环境、数据库实例、数据库用户以进行应用开发,可选的 [Terraform 集成 ](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs)。<br/><br/>**策略执行**<br/>强制执行组织范围内的 SQL 审查策略、备份策略和数据访问策略。<br/><br/>**SQL 编辑器管理员模式**<br/>[类似 CLI 的体验 ](https://www.bytebase.com/docs/sql-editor/admin-mode),无需设置堡垒机。 | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-review-policy.webp" /> |
|
||||
|
||||
# 🖖 Intro
|
||||
# 🪄 引言
|
||||
|
||||
Bytebase is a Database CI/CD solution for the Developers and DBAs. It's the **only database CI/CD project** included by the [CNCF Landscape](https://landscape.cncf.io/?selected=bytebase). The Bytebase family consists of these tools:
|
||||
Bytebase 是一个面向开发人员和数据库管理员的数据库持续集成/持续部署解决方案。它是 **唯一被 CNCF 景观收录的数据库 CI/CD 项目** 。Bytebase 家族包括以下这些工具:
|
||||
|
||||
- [Bytebase Console](https://bytebase.com/?source=github): A web-based GUI for developers and DBAs to manage the database development lifecycle.
|
||||
- [Bytebase CLI (bb)](https://www.bytebase.com/docs/cli/overview): The CLI to help developers integrate database changes into the existing CI/CD workflow.
|
||||
- [Bytebase GitHub App](https://github.com/marketplace/bytebase) and [SQL Review GitHub Action](https://github.com/marketplace/actions/sql-review): The GitHub App and GitHub Action to detect SQL anti-patterns and enforce a consistent SQL style guide during Pull Request.
|
||||
- [Terraform Bytebase Provider](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs): The Terraform
|
||||
provider enables team to manage Bytebase resources via Terraform. A typical setup involves teams using
|
||||
Terraform to provision database instances from Cloud vendors, followed by using Bytebase provider to
|
||||
prepare those instances ready for application use.
|
||||
* [Bytebase 控制台](https://bytebase.com/?source=github) : 一个基于 Web 的图形界面,供开发人员和数据库管理员管理数据库开发生命周期。
|
||||
* [Bytebase CLI (bb)](https://www.bytebase.com/docs/cli/overview): 一个命令行工具,帮助开发人员将数据库变更集成到现有的持续集成/持续部署流程中。
|
||||
* [Bytebase GitHub App](https://github.com/marketplace/bytebase) 和 [SQL Review GitHub Action](https://github.com/marketplace/actions/sql-review): 一个 GitHub 应用程序和 GitHub 动作,用于在 Pull Request 中检测 SQL 反模式并强制执行一致的 SQL 代码规范。
|
||||
* [Terraform Bytebase 提供程序](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs) : Terraform 提供程序使团队能够通过 Terraform 管理 Bytebase 资源。典型的设置是团队使用 Terraform 从云供应商处部署数据库实例,然后使用 Bytebase 提供程序将这些实例准备就绪以供应用程序使用。
|
||||
|
||||
| | Topic |
|
||||
| --- | :------------------------------------------------------------------ |
|
||||
| 🏗️ | <b>[Installation](#-installation)</b> |
|
||||
| 🎮 | <b>[Demo](#-demo)</b> |
|
||||
| 👩🏫 | <b>[Tutorials](#-tutorials)</b> |
|
||||
| 💎 | <b>[Design Principles](#-design-principles)</b> |
|
||||
| 🧩 | <b>[Data Model](#-data-model)</b> |
|
||||
| 🎭 | <b>[Roles](#-roles)</b> |
|
||||
| 🕊 | <b>[Developing and Contributing](#-developing-and-contributing)</b> |
|
||||
| 🤺 | <b>[Bytebase vs Alternatives](#-bytebase-vs-alternatives)</b> |
|
||||
| | 主题 |
|
||||
| --- | --- |
|
||||
| 🏗️ | 安装 |
|
||||
| 🎮 | 演示 |
|
||||
| 👩🏫 | 教程 |
|
||||
| 💎 | 设计原则 |
|
||||
| 🧩 | 数据模型 |
|
||||
| 🎭 | 角色 |
|
||||
| 🕊 | 开发与贡献 |
|
||||
| 🤺 | Bytebase vs 替代方案 |
|
||||
|
||||
<br />
|
||||
# 🏗️ 安装
|
||||
|
||||
# 🏗️ Installation
|
||||
|
||||
### One liner
|
||||
### 一句话概括
|
||||
|
||||
```bash
|
||||
# One-liner installation script from latest release
|
||||
|
|
@ -154,207 +88,167 @@ Bytebase is a Database CI/CD solution for the Developers and DBAs. It's the **on
|
|||
|
||||
```
|
||||
|
||||
- [Build from source](https://www.bytebase.com/docs/get-started/install/build-from-source-code)
|
||||
- [Docker](https://www.bytebase.com/docs/get-started/install/deploy-with-docker)
|
||||
- [Kubernetes](https://www.bytebase.com/docs/get-started/install/deploy-to-kubernetes)
|
||||
- [render.com](https://www.bytebase.com/docs/get-started/install/deploy-to-render)
|
||||
- [Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond)
|
||||
* [从源代码构建](https://www.bytebase.com/docs/get-started/install/build-from-source-code)
|
||||
* [Docker](https://www.bytebase.com/docs/get-started/install/deploy-with-docker)
|
||||
* [Kubernetes](https://www.bytebase.com/docs/get-started/install/deploy-to-kubernetes)
|
||||
* [render.com](https://www.bytebase.com/docs/get-started/install/deploy-to-render)
|
||||
* [Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond)
|
||||
|
||||
<br />
|
||||
# 🎮 示例
|
||||
|
||||
# 🎮 Demo
|
||||
Live demo at [https://demo.bytebase.com](https://demo.bytebase.com)
|
||||
|
||||
Live demo at https://demo.bytebase.com
|
||||
您还可以与我们的产品专家预约一个 30 分钟的产品导览。 [预约链接](https://cal.com/adela-bytebase/30min)
|
||||
|
||||
You can also [book a 30min product walkthrough](https://cal.com/adela-bytebase/30min) with one of
|
||||
our product experts.
|
||||
# 👩🏫 教程
|
||||
|
||||
<br />
|
||||
产品教程可在 [https://www.bytebase.com/tutorial](https://www.bytebase.com/tutorial) 获取。
|
||||
|
||||
# 👩🏫 Tutorials
|
||||
## 集成
|
||||
|
||||
Product tutorials are available at https://www.bytebase.com/tutorial.
|
||||
* [管理 Supabase PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/supabase)
|
||||
* [管理渲染 PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/render)
|
||||
* [管理 Neon 数据库](https://www.bytebase.com/docs/how-to/integrations/neon)
|
||||
* [部署到 sealos](https://www.bytebase.com/docs/get-started/install/deploy-to-sealos)
|
||||
* [部署到 Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond)
|
||||
|
||||
## Integrations
|
||||
# 💎 设计原则
|
||||
|
||||
- [Manage Supabase PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/supabase)
|
||||
- [Manage render PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/render)
|
||||
- [Manage Neon database](https://www.bytebase.com/docs/how-to/integrations/neon)
|
||||
- [Deploy to sealos](https://www.bytebase.com/docs/get-started/install/deploy-to-sealos)
|
||||
- [Deploy to Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond)
|
||||
| | | |
|
||||
| --- | --- | --- |
|
||||
| 🪶 | 无依赖 | 只需一条命令 ./bytebase 即可开始,无需任何外部依赖。外部的 PostgreSQL 数据存储和其他项均为可选。 |
|
||||
| 🔗 | 优先集成 | 专注于数据库管理,其余部分留给其他工具。我们原生集成了 GitHub/GitLab、Terraform 提供程序 、webhook 等版本控制系统集成。 |
|
||||
| 👩🦳 | 工程严谨 | 严谨的双周发布和工程实践。 |
|
||||
|
||||
<br />
|
||||
# 🧩 数据模型
|
||||
|
||||
# 💎 Design Principles
|
||||
更多详情参见 [数据模型文档](https://www.bytebase.com/docs/concepts/data-model) 。
|
||||
|
||||
| | | |
|
||||
| --- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| 🪶 | Dependency Free | Start with a single command `./bytebase` without any external dependency. External PostgreSQL data store and others are optional. |
|
||||
| 🔗 | Integration First | Solely focus on database management and leave the rest to others. We have native VCS integration with [GitHub/GitLab](https://www.bytebase.com/docs/vcs-integration/overview), [Terraform Provider](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs), [webhook](https://www.bytebase.com/docs/change-database/webhook), and etc. |
|
||||
| 💂♀️ | Engineering Disciplined | Disciplined [bi-weekly release](https://www.bytebase.com/changelog) and [engineering practice](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md). |
|
||||

|
||||
|
||||
<br />
|
||||
# 🎭 角色
|
||||
|
||||
# 🧩 Data Model
|
||||
更多详情请参阅[角色和权限文档](https://www.bytebase.com/docs/concepts/roles-and-permissions) 。
|
||||
|
||||
More details in [Data Model Doc](https://www.bytebase.com/docs/concepts/data-model).
|
||||
Bytebase 使用基于角色的访问控制(RBAC),并在工作空间和项目级别提供了两种角色集:
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
align="center"
|
||||
alt="Data Model"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/data-model-v2.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</p>
|
||||
* 工作空间角色:`Owner`、`DBA`、`Developer`。工作空间角色映射到工程组织中的角色。
|
||||
* 项目角色:`Owner`、`Developer`。项目级别角色映射到特定团队或项目的角色。
|
||||
|
||||
<br />
|
||||
每个用户都会被分配一个工作空间角色,如果某个用户参与了某个特定项目,那么她也会相应地被分配一个项目角色。
|
||||
|
||||
# 🎭 Roles
|
||||
下图描述了典型的技术团队与 Bytebase 工作空间中相应角色之间的映射关系。
|
||||
|
||||
More details in [Roles and Permissions Doc](https://www.bytebase.com/docs/concepts/roles-and-permissions).
|
||||

|
||||
|
||||
Bytebase employs RBAC (Role-Based-Access-Control) and provides two role sets at the workspace and project level:
|
||||
# 🕊 开发与贡献
|
||||
|
||||
- Workspace roles: `Owner`, `DBA`, `Developer`. The workspace role maps to the role in an engineering organization.
|
||||
- Project roles: `Owner`, `Developer`. The project level role maps to the role in a specific team or project.
|
||||

|
||||
|
||||
Every user is assigned a workspace role, and if a particular user is involved in a particular project, then she will also be assigned a project role accordingly.
|
||||
* Bytebase 使用了精心挑选的技术栈,它针对开发者的体验进行了优化,并且非常容易开始编写代码:
|
||||
|
||||
1. 它没有外部依赖。
|
||||
2. 无需任何配置。
|
||||
3. 启动后端和前端各一个命令,都支持实时重载。
|
||||
|
||||
* [模式变更的生命周期](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/life-of-a-schema-change.snb.md)
|
||||
* [SQL 审查](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/sql-review-source-code-tour.snb.md)
|
||||
* 查看 [功能生命周期](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md) 。
|
||||
|
||||
|
||||
Below diagram describes a typical mapping between an engineering org and the corresponding roles in the Bytebase workspace
|
||||
## 开发环境设置
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
align="center"
|
||||
alt="Role Mapping"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/org-role-mapping.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</p>
|
||||
### 先决条件
|
||||
|
||||
<br />
|
||||
* [Go](https://golang.org/doc/install) (1.21.3 或更高版本)
|
||||
* [pnpm](https://pnpm.io/installation)
|
||||
* [Air](https://github.com/bytebase/air) ( **我们的分支仓库 @87187cc,包含正确的信号处理** ). 这是为了实现后端实时刷新。
|
||||
|
||||
```bash
|
||||
go install github.com/bytebase/air@87187cc
|
||||
```
|
||||
|
||||
|
||||
# 🕊 Developing and Contributing
|
||||
### 步骤
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
align="center"
|
||||
alt="Tech Stack"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/techstack.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</p>
|
||||
1. 拉取源代码。
|
||||
|
||||
```bash
|
||||
git clone https://github.com/bytebase/bytebase
|
||||
```
|
||||
|
||||
2. 在本地主机上创建外部 Postgres 数据库。
|
||||
|
||||
|
||||
- Bytebase is built with a curated tech stack. It is optimized for **developer experience** and is very easy to start
|
||||
working on the code:
|
||||
```sql
|
||||
CREATE USER bbdev SUPERUSER;
|
||||
CREATE DATABASE bbdev;
|
||||
```
|
||||
|
||||
1. It has no external dependency.
|
||||
1. It requires zero config.
|
||||
1. 1 command to start backend and 1 command to start frontend, both with live reload support.
|
||||
1. 使用 air 启动后端(带有实时重载)。
|
||||
|
||||
```bash
|
||||
PG_URL=postgresql://bbdev@localhost/bbdev air -c scripts/.air.toml
|
||||
```
|
||||
|
||||
如果遇到“错误:打开的文件太多”的问题,请更改打开文件限制。
|
||||
|
||||
```bash
|
||||
ulimit -n 10240
|
||||
```
|
||||
|
||||
如果需要额外的运行时参数(如 --backup-bucket),请像这样添加它们:
|
||||
|
||||
```bash
|
||||
air -c scripts/.air.toml -- --backup-region us-east-1 --backup-bucket s3:\\/\\/example-bucket --backup-credential ~/.aws/credentials
|
||||
```
|
||||
|
||||
2. 启动前端(带有实时重载)。
|
||||
|
||||
```bash
|
||||
cd frontend && pnpm i && pnpm dev
|
||||
```
|
||||
|
||||
Bytebase 现在应该在 [http://localhost:3000](http://localhost:3000) 运行,并且修改前端或后端代码会触发实时重载。
|
||||
|
||||
|
||||
- Interactive code walkthrough
|
||||
### 提示
|
||||
|
||||
- [Life of a schema change](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/life-of-a-schema-change.snb.md)
|
||||
- [SQL Review](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/sql-review-source-code-tour.snb.md)
|
||||
|
||||
- Follow [Life of a Feature](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md).
|
||||
|
||||
## Dev Environment Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- [Go](https://golang.org/doc/install) (1.21.3 or later)
|
||||
- [pnpm](https://pnpm.io/installation)
|
||||
- [Air](https://github.com/bytebase/air) (**our forked repo @87187cc with the proper signal handling**). This is for backend live reload.
|
||||
```bash
|
||||
go install github.com/bytebase/air@87187cc
|
||||
```
|
||||
|
||||
### Steps
|
||||
|
||||
1. Pull source.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/bytebase/bytebase
|
||||
```
|
||||
|
||||
1. Create an external Postgres database on localhost.
|
||||
|
||||
```sql
|
||||
CREATE USER bbdev SUPERUSER;
|
||||
CREATE DATABASE bbdev;
|
||||
```
|
||||
|
||||
1. Start backend using air (with live reload).
|
||||
|
||||
```bash
|
||||
PG_URL=postgresql://bbdev@localhost/bbdev air -c scripts/.air.toml
|
||||
```
|
||||
|
||||
Change the open file limit if you encounter "error: too many open files".
|
||||
|
||||
```bash
|
||||
ulimit -n 10240
|
||||
```
|
||||
|
||||
If you need additional runtime parameters such as --backup-bucket, please add them like this:
|
||||
|
||||
```bash
|
||||
air -c scripts/.air.toml -- --backup-region us-east-1 --backup-bucket s3:\\/\\/example-bucket --backup-credential ~/.aws/credentials
|
||||
```
|
||||
|
||||
1. Start frontend (with live reload).
|
||||
|
||||
```bash
|
||||
cd frontend && pnpm i && pnpm dev
|
||||
```
|
||||
|
||||
Bytebase should now be running at http://localhost:3000 and change either frontend or backend code would trigger live reload.
|
||||
|
||||
### Tips
|
||||
|
||||
* Use [Code Inspector](https://en.inspector.fe-dev.cn/guide/start.html#method1-recommend) to locate
|
||||
frontend code from UI. Hold `Option + Shift` on Mac or `Alt + Shift` on Windows
|
||||
|
||||
|
||||
<br />
|
||||
* 使用 [Code Inspector](https://en.inspector.fe-dev.cn/guide/start.html#method1-recommend) 从界面定位前端代码。在 Mac 上按 `Option + Shift`,在 Windows 上按 `Alt + Shift`。
|
||||
|
||||
# Bytebase vs Flyway, Liquibase
|
||||
|
||||
- [Bytebase vs Liquibase](https://www.bytebase.com/blog/bytebase-vs-liquibase/)
|
||||
- [Bytebase vs Flyway](https://www.bytebase.com/blog/bytebase-vs-flyway/)
|
||||
* [Bytebase vs Liquibase](https://www.bytebase.com/blog/bytebase-vs-liquibase/)
|
||||
* [Bytebase vs Flyway](https://www.bytebase.com/blog/bytebase-vs-flyway/)
|
||||
|
||||
Either Flyway or Liquibase is a library and CLI focusing on schema change. While Bytebase is an one-stop
|
||||
solution covering the entire database development lifecycle for Developers and DBAs to collaborate.
|
||||
无论是 Liquibase 还是 Flyway 都是专注于数据库模式变更的库和命令行界面(CLI)。而 Bytebase 则是一个一站式解决方案,涵盖了整个数据库开发生命周期,支持开发人员和数据库管理员(DBA)协作。
|
||||
|
||||
Another key difference is Bytebase **doesn't** support Oracle and SQL Server. This is a conscious
|
||||
decision we make so that we can focus on supporting other databases without good tooling support.
|
||||
In particular, many of our users tell us Bytebase is by far the best (and sometimes the only) database
|
||||
tool that can support their PostgreSQL and ClickHouse use cases.
|
||||
另一个关键区别是,Bytebase **不**支持 Oracle 和 SQL Server。这是我们有意做出的决定,以便我们可以专注于支持其他工具支持不足的数据库。特别是,许多我们的用户告诉我们,Bytebase 无疑是(有时是唯一的选择)支持他们 PostgreSQL 和 ClickHouse 用例的最佳数据库工具。
|
||||
|
||||
[](https://star-history.com/#bytebase/bytebase&liquibase/liquibase&flyway/flyway&Date)
|
||||
|
||||
# Bytebase vs Yearning, Archery
|
||||
|
||||
Either Yearning or Archery provides a DBA operation portal. While Bytebase provides a collaboration
|
||||
workspace for DBAs and Developers, and brings DevOps practice to the Database Change Management (DCM).
|
||||
Bytebase has the similar `Project` concept seen in GitLab/GitHub and provides native GitOps integration
|
||||
with GitLab/GitHub.
|
||||
Either Yearning 或 Archery 提供了 DBA 操作门户。而 Bytebase 为 DBA 和开发者提供了一个协作工作空间,并将 DevOps 实践引入了数据库变更管理(DCM)。Bytebase 具有与 GitLab/GitHub 中的 `Project` 类似的概念,并提供了与 GitLab/GitHub 的原生 GitOps 集成。
|
||||
|
||||
Another key difference is Yearning, Archery are open source projects maintained by the individuals part-time. While Bytebase is open-sourced, it adopts an open-core model and is a commercialized product, supported
|
||||
by a [fully staffed team](https://www.bytebase.com/about#team) [releasing new version every 2 weeks](https://www.bytebase.com/changelog).
|
||||
另一个关键区别在于,Yearning 和 Archery 是由个人业余时间维护的开源项目。而 Bytebase 是开源的,但它采用了开放核心模型,并且是一个商业产品,由一个 全职团队 支持,并且每两周发布一次新版本。
|
||||
|
||||
[](https://star-history.com/#bytebase/bytebase&cookieY/Yearning&hhyo/Archery&Date)
|
||||
|
||||
# 👨👩👧👦 Community
|
||||
# FAMILY Community
|
||||
|
||||
[](https://discord.gg/huyw7gRsyA)
|
||||
|
||||
[](https://twitter.com/Bytebase)
|
||||
|
||||
<br />
|
||||
# 🤔 常见问题解答 (FAQs)
|
||||
|
||||
# 🤔 Frequently Asked Questions (FAQs)
|
||||
请查阅我们的 常见问题 。
|
||||
|
||||
# 🙋 联系我们
|
||||
|
||||
* 如果您有兴趣加入我们,请查阅我们的 职位页面 查看是否有适合您的职位。
|
||||
* 想要解决你的模式变更和数据库管理难题?预约与我们的产品专家进行一次 [30 分钟的演示](https://cal.com/adela-bytebase/30min) 。Qs)
|
||||
|
||||
Check out our [FAQ](https://www.bytebase.com/docs/faq).
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,366 @@
|
|||
<h1 align="center">
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://bytebase.com?source=github"
|
||||
>
|
||||
<img
|
||||
align="center"
|
||||
alt="Bytebase"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/banner.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</a>
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://demo.bytebase.com?source=github" target="_blank"><b>🔥 Live Demo</b></a> •
|
||||
<a href="https://bytebase.com/docs/get-started/install/overview" target="_blank"><b>⚙️ Install</b></a> •
|
||||
<a href="https://bytebase.com/docs"><b>📚 Docs</b></a> •
|
||||
<a href="https://discord.gg/huyw7gRsyA"><b>💬 Discord</b></a> •
|
||||
<a href="https://www.bytebase.com/request-demo/"><b>🙋♀️ Book Demo</b></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://goreportcard.com/report/github.com/bytebase/bytebase">
|
||||
<img alt="go report" src="https://goreportcard.com/badge/github.com/bytebase/bytebase" />
|
||||
</a>
|
||||
<a href="https://artifacthub.io/packages/search?repo=bytebase">
|
||||
<img alt="Artifact Hub" src="https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/bytebase" />
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/bytebase/bytebase"
|
||||
target="_blank"
|
||||
>
|
||||
<img alt="Github Stars" src="https://img.shields.io/github/stars/bytebase/bytebase?logo=github">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b> Different </b> database development tasks
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b> Multiple </b> database systems
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b> Unified </b> process
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b> Single </b> tool
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center" >
|
||||
<img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/old-to-new-world.webp" />
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/fish.webp" />
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center" >
|
||||
<img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/change-query-secure-govern.webp" />
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center">🪜</p>
|
||||
<h1 align="center">Change</h1>
|
||||
<p align="center">
|
||||
Want to formalize the database change process but don't know how?
|
||||
</p>
|
||||
|
||||
| | |
|
||||
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| <b>Standard Operating Procedure (SOP) </b><br />Standardize the database schema and data change process across different database systems, small or [large tables](https://www.bytebase.com/docs/change-database/online-schema-migration-for-mysql) and [different tenants](https://www.bytebase.com/docs/change-database/batch-change/#change-databases-from-multiple-tenants).<br /><br/><b>SQL Review</b><br />[100+ lint rules](https://www.bytebase.com/docs/sql-review/review-rules) to detect SQL anti-patterns and enforce consistent SQL style in the organization.<br /><br /><b>GitOps</b><br />[Point-and-click GitHub and GitLab integration](https://www.bytebase.com/docs/vcs-integration/overview) to enable GitOps workflow for changing database. | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/issue-detail.webp" /> |
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center">🔮</p>
|
||||
<h1 align="center">Query</h1>
|
||||
<p align="center">
|
||||
Want to control the data access but don't know how?
|
||||
</p>
|
||||
|
||||
| | |
|
||||
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
||||
| <b>All-in-one SQL Editor</b><br />Web-based IDE specifically for performing SQL specific tasks.<br /><br/><b>Data Masking</b><br />State-of-the-art [column level masking](https://www.bytebase.com/docs/sql-editor/mask-data) engine to cover complex situations like subquery, CTE.<br /><br /><b>Data Access Control</b><br />Organization level policy to centralize the [data access control](https://www.bytebase.com/docs/security/data-access-control). | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-editor.webp" /> |
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center">🔒</p>
|
||||
<h1 align="center">Secure</h1>
|
||||
<p align="center">
|
||||
Want to avoid data leakage, change outage and detect malicious behavior but don't know how?
|
||||
</p>
|
||||
|
||||
| | |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| <b>Centralize Change, Query and Admin Tasks</b><br />A single place to perform different tasks on different databases, thus enforce policy and monitor activity accordingly. <br /><br /><b>RBAC</b><br />[Two-level RBAC model](https://www.bytebase.com/docs/concepts/roles-and-permissions) mapping to the organization wide privileges and application team privileges respectively.<br /><br /><b>Anomaly Center and Audit Logging</b><br /> Capture all database [anomalies](https://www.bytebase.com/docs/administration/anomaly-center), user actions and system events and present them in a holistic view. | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/grant-access.webp" /> |
|
||||
|
||||
<br />
|
||||
|
||||
<p align="center">👩💼</p>
|
||||
<h1 align="center">Govern</h1>
|
||||
<p align="center">
|
||||
Want to enforce organization policy but don't know how?
|
||||
</p>
|
||||
|
||||
| | |
|
||||
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| <b>Manage Database Resources</b><br /> A single place to manage environments, database instances, database users for application development, with optional [Terraform integration](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs). <br /><br /><b>Policy Enforcement</b><br />Enforce organization wide SQL Review policy, backup policy and data access policy.<br /><br/><b>SQL Editor Admin mode</b><br />[CLI like experience](https://www.bytebase.com/docs/sql-editor/admin-mode) without setting up bastion. | <img src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-review-policy.webp" /> |
|
||||
|
||||
<br />
|
||||
|
||||
# 🖖 Intro
|
||||
|
||||
Bytebase is a Database CI/CD solution for the Developers and DBAs. It's the **only database CI/CD project** included by the [CNCF Landscape](https://landscape.cncf.io/?selected=bytebase). The Bytebase family consists of these tools:
|
||||
|
||||
- [Bytebase Console](https://bytebase.com/?source=github): A web-based GUI for developers and DBAs to manage the database development lifecycle.
|
||||
- [Bytebase CLI (bb)](https://www.bytebase.com/docs/cli/overview): The CLI to help developers integrate database changes into the existing CI/CD workflow.
|
||||
- [Bytebase GitHub App](https://github.com/marketplace/bytebase) and [SQL Review GitHub Action](https://github.com/marketplace/actions/sql-review): The GitHub App and GitHub Action to detect SQL anti-patterns and enforce a consistent SQL style guide during Pull Request.
|
||||
- [Terraform Bytebase Provider](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs): The Terraform
|
||||
provider enables team to manage Bytebase resources via Terraform. A typical setup involves teams using
|
||||
Terraform to provision database instances from Cloud vendors, followed by using Bytebase provider to
|
||||
prepare those instances ready for application use.
|
||||
|
||||
| | Topic |
|
||||
| --- | :------------------------------------------------------------------ |
|
||||
| 🏗️ | <b>[Installation](#-installation)</b> |
|
||||
| 🎮 | <b>[Demo](#-demo)</b> |
|
||||
| 👩🏫 | <b>[Tutorials](#-tutorials)</b> |
|
||||
| 💎 | <b>[Design Principles](#-design-principles)</b> |
|
||||
| 🧩 | <b>[Data Model](#-data-model)</b> |
|
||||
| 🎭 | <b>[Roles](#-roles)</b> |
|
||||
| 🕊 | <b>[Developing and Contributing](#-developing-and-contributing)</b> |
|
||||
| 🤺 | <b>[Bytebase vs Alternatives](#-bytebase-vs-alternatives)</b> |
|
||||
|
||||
<br />
|
||||
|
||||
# 🏗️ Installation
|
||||
|
||||
### One liner
|
||||
|
||||
```bash
|
||||
# One-liner installation script from latest release
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bytebase/install/main/install.sh)"
|
||||
|
||||
```
|
||||
|
||||
- [Build from source](https://www.bytebase.com/docs/get-started/install/build-from-source-code)
|
||||
- [Docker](https://www.bytebase.com/docs/get-started/install/deploy-with-docker)
|
||||
- [Kubernetes](https://www.bytebase.com/docs/get-started/install/deploy-to-kubernetes)
|
||||
- [render.com](https://www.bytebase.com/docs/get-started/install/deploy-to-render)
|
||||
- [Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond)
|
||||
|
||||
<br />
|
||||
|
||||
# 🎮 Demo
|
||||
|
||||
Live demo at https://demo.bytebase.com
|
||||
|
||||
You can also [book a 30min product walkthrough](https://cal.com/adela-bytebase/30min) with one of
|
||||
our product experts.
|
||||
|
||||
<br />
|
||||
|
||||
# 👩🏫 Tutorials
|
||||
|
||||
Product tutorials are available at https://www.bytebase.com/tutorial.
|
||||
|
||||
## Integrations
|
||||
|
||||
- [Manage Supabase PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/supabase)
|
||||
- [Manage render PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/render)
|
||||
- [Manage Neon database](https://www.bytebase.com/docs/how-to/integrations/neon)
|
||||
- [Deploy to sealos](https://www.bytebase.com/docs/get-started/install/deploy-to-sealos)
|
||||
- [Deploy to Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond)
|
||||
|
||||
<br />
|
||||
|
||||
# 💎 Design Principles
|
||||
|
||||
| | | |
|
||||
| --- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| 🪶 | Dependency Free | Start with a single command `./bytebase` without any external dependency. External PostgreSQL data store and others are optional. |
|
||||
| 🔗 | Integration First | Solely focus on database management and leave the rest to others. We have native VCS integration with [GitHub/GitLab](https://www.bytebase.com/docs/vcs-integration/overview), [Terraform Provider](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs), [webhook](https://www.bytebase.com/docs/change-database/webhook), and etc. |
|
||||
| 💂♀️ | Engineering Disciplined | Disciplined [bi-weekly release](https://www.bytebase.com/changelog) and [engineering practice](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md). |
|
||||
|
||||
<br />
|
||||
|
||||
# 🧩 Data Model
|
||||
|
||||
More details in [Data Model Doc](https://www.bytebase.com/docs/concepts/data-model).
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
align="center"
|
||||
alt="Data Model"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/data-model-v2.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
# 🎭 Roles
|
||||
|
||||
More details in [Roles and Permissions Doc](https://www.bytebase.com/docs/concepts/roles-and-permissions).
|
||||
|
||||
Bytebase employs RBAC (Role-Based-Access-Control) and provides two role sets at the workspace and project level:
|
||||
|
||||
- Workspace roles: `Owner`, `DBA`, `Developer`. The workspace role maps to the role in an engineering organization.
|
||||
- Project roles: `Owner`, `Developer`. The project level role maps to the role in a specific team or project.
|
||||
|
||||
Every user is assigned a workspace role, and if a particular user is involved in a particular project, then she will also be assigned a project role accordingly.
|
||||
|
||||
Below diagram describes a typical mapping between an engineering org and the corresponding roles in the Bytebase workspace
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
align="center"
|
||||
alt="Role Mapping"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/org-role-mapping.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
# 🕊 Developing and Contributing
|
||||
|
||||
<p align="center">
|
||||
<img
|
||||
align="center"
|
||||
alt="Tech Stack"
|
||||
src="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/techstack.webp"
|
||||
style="width:100%;"
|
||||
/>
|
||||
</p>
|
||||
|
||||
- Bytebase is built with a curated tech stack. It is optimized for **developer experience** and is very easy to start
|
||||
working on the code:
|
||||
|
||||
1. It has no external dependency.
|
||||
1. It requires zero config.
|
||||
1. 1 command to start backend and 1 command to start frontend, both with live reload support.
|
||||
|
||||
- Interactive code walkthrough
|
||||
|
||||
- [Life of a schema change](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/life-of-a-schema-change.snb.md)
|
||||
- [SQL Review](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/sql-review-source-code-tour.snb.md)
|
||||
|
||||
- Follow [Life of a Feature](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md).
|
||||
|
||||
## Dev Environment Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- [Go](https://golang.org/doc/install) (1.21.3 or later)
|
||||
- [pnpm](https://pnpm.io/installation)
|
||||
- [Air](https://github.com/bytebase/air) (**our forked repo @87187cc with the proper signal handling**). This is for backend live reload.
|
||||
```bash
|
||||
go install github.com/bytebase/air@87187cc
|
||||
```
|
||||
|
||||
### Steps
|
||||
|
||||
1. Pull source.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/bytebase/bytebase
|
||||
```
|
||||
|
||||
1. Create an external Postgres database on localhost.
|
||||
|
||||
```sql
|
||||
CREATE USER bbdev SUPERUSER;
|
||||
CREATE DATABASE bbdev;
|
||||
```
|
||||
|
||||
1. Start backend using air (with live reload).
|
||||
|
||||
```bash
|
||||
PG_URL=postgresql://bbdev@localhost/bbdev air -c scripts/.air.toml
|
||||
```
|
||||
|
||||
Change the open file limit if you encounter "error: too many open files".
|
||||
|
||||
```bash
|
||||
ulimit -n 10240
|
||||
```
|
||||
|
||||
If you need additional runtime parameters such as --backup-bucket, please add them like this:
|
||||
|
||||
```bash
|
||||
air -c scripts/.air.toml -- --backup-region us-east-1 --backup-bucket s3:\\/\\/example-bucket --backup-credential ~/.aws/credentials
|
||||
```
|
||||
|
||||
1. Start frontend (with live reload).
|
||||
|
||||
```bash
|
||||
cd frontend && pnpm i && pnpm dev
|
||||
```
|
||||
|
||||
Bytebase should now be running at http://localhost:3000 and change either frontend or backend code would trigger live reload.
|
||||
|
||||
### Tips
|
||||
|
||||
* Use [Code Inspector](https://en.inspector.fe-dev.cn/guide/start.html#method1-recommend) to locate
|
||||
frontend code from UI. Hold `Option + Shift` on Mac or `Alt + Shift` on Windows
|
||||
|
||||
|
||||
<br />
|
||||
|
||||
# Bytebase vs Flyway, Liquibase
|
||||
|
||||
- [Bytebase vs Liquibase](https://www.bytebase.com/blog/bytebase-vs-liquibase/)
|
||||
- [Bytebase vs Flyway](https://www.bytebase.com/blog/bytebase-vs-flyway/)
|
||||
|
||||
Either Flyway or Liquibase is a library and CLI focusing on schema change. While Bytebase is an one-stop
|
||||
solution covering the entire database development lifecycle for Developers and DBAs to collaborate.
|
||||
|
||||
Another key difference is Bytebase **doesn't** support Oracle and SQL Server. This is a conscious
|
||||
decision we make so that we can focus on supporting other databases without good tooling support.
|
||||
In particular, many of our users tell us Bytebase is by far the best (and sometimes the only) database
|
||||
tool that can support their PostgreSQL and ClickHouse use cases.
|
||||
|
||||
[](https://star-history.com/#bytebase/bytebase&liquibase/liquibase&flyway/flyway&Date)
|
||||
|
||||
# Bytebase vs Yearning, Archery
|
||||
|
||||
Either Yearning or Archery provides a DBA operation portal. While Bytebase provides a collaboration
|
||||
workspace for DBAs and Developers, and brings DevOps practice to the Database Change Management (DCM).
|
||||
Bytebase has the similar `Project` concept seen in GitLab/GitHub and provides native GitOps integration
|
||||
with GitLab/GitHub.
|
||||
|
||||
Another key difference is Yearning, Archery are open source projects maintained by the individuals part-time. While Bytebase is open-sourced, it adopts an open-core model and is a commercialized product, supported
|
||||
by a [fully staffed team](https://www.bytebase.com/about#team) [releasing new version every 2 weeks](https://www.bytebase.com/changelog).
|
||||
|
||||
[](https://star-history.com/#bytebase/bytebase&cookieY/Yearning&hhyo/Archery&Date)
|
||||
|
||||
# 👨👩👧👦 Community
|
||||
|
||||
[](https://discord.gg/huyw7gRsyA)
|
||||
|
||||
[](https://twitter.com/Bytebase)
|
||||
|
||||
<br />
|
||||
|
||||
# 🤔 Frequently Asked Questions (FAQs)
|
||||
|
||||
Check out our [FAQ](https://www.bytebase.com/docs/faq).
|
||||
|
||||
<br />
|
||||
|
||||
# 🙋 Contact Us
|
||||
|
||||
- Interested in joining us? Check out our [jobs page](https://bytebase.com/jobs?source=github) for openings.
|
||||
- Want to solve your schema change and database management headache? Book a [30min demo](https://cal.com/adela-bytebase/30min) with one of our product experts.
|
||||
|
|
@ -1,131 +1,128 @@
|
|||
## Web Site Change Detection, Restock monitoring and notifications.
|
||||
## 网站变更检测,库存监控及通知。
|
||||
|
||||
**_Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more._**
|
||||
***检测网站内容变化并执行有意义的操作——通过 Discord、邮件、Slack、Telegram、API 调用等多种方式触发通知。***
|
||||
|
||||
_Live your data-life pro-actively._
|
||||
*主动管理您的数据生活。*
|
||||
|
||||
[](https://changedetection.io?src=github)
|
||||
|
||||
[<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot.png" style="max-width:100%;" alt="Self-hosted web page change monitoring" title="Self-hosted web page change monitoring" />](https://changedetection.io?src=github)
|
||||
|
||||
[![Release Version][release-shield]][release-link] [![Docker Pulls][docker-pulls]][docker-link] [![License][license-shield]](https://github.com/dgtlmoon/changedetection.io/blob/master/LICENSE.md)
|
||||
[](https://github.com/dgtlmoon/changedetection.io/releases) [](https://hub.docker.com/r/dgtlmoon/changedetection.io) [](https://github.com/dgtlmoon/changedetection.io/blob/master/LICENSE.md)
|
||||
|
||||

|
||||
|
||||
[**Don't have time? Let us host it for you! try our $8.99/month subscription - use our proxies and support!**](https://changedetection.io) , _half the price of other website change monitoring services!_
|
||||
[**没时间?让我们为您托管!试用我们的每月 8.99 美元订阅服务——使用我们的代理服务器并获得支持!**](https://changedetection.io), *价格仅为其他网站变更监控服务的一半!*
|
||||
|
||||
- Chrome browser included.
|
||||
- Super fast, no registration needed setup.
|
||||
- Get started watching and receiving website change notifications straight away.
|
||||
* 包含 Chrome 浏览器。
|
||||
* 无需注册,快速设置。
|
||||
* 立即开始观看并接收网站更改通知。
|
||||
|
||||
### 使用视觉选择工具针对网页的特定部分进行操作。
|
||||
|
||||
### Target specific parts of the webpage using the Visual Selector tool.
|
||||
连接到 [playwright 内容获取器](https://github.com/dgtlmoon/changedetection.io/wiki/Playwright-content-fetcher)时可用(作为我们订阅服务的一部分提供)
|
||||
|
||||
Available when connected to a <a href="https://github.com/dgtlmoon/changedetection.io/wiki/Playwright-content-fetcher">playwright content fetcher</a> (included as part of our subscription service)
|
||||
[](https://changedetection.io?src=github)
|
||||
|
||||
[<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/visualselector-anim.gif" style="max-width:100%;" alt="Self-hosted web page change monitoring context difference " title="Self-hosted web page change monitoring context difference " />](https://changedetection.io?src=github)
|
||||
### 轻松查看更改内容,按词、行或个别字符进行检查。
|
||||
|
||||
### Easily see what changed, examine by word, line, or individual character.
|
||||
[](https://changedetection.io?src=github)
|
||||
|
||||
[<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot-diff.png" style="max-width:100%;" alt="Self-hosted web page change monitoring context difference " title="Self-hosted web page change monitoring context difference " />](https://changedetection.io?src=github)
|
||||
### 执行交互式浏览器步骤
|
||||
|
||||
填写文本框、点击按钮等,设置您的更改检测场景。
|
||||
|
||||
### Perform interactive browser steps
|
||||
使用**浏览器步骤**配置,在进行变更检测之前添加基本步骤,例如登录网站、将产品添加到购物车、接受 Cookie 登录、输入日期并精炼搜索。
|
||||
|
||||
Fill in text boxes, click buttons and more, setup your changedetection scenario.
|
||||
[](https://changedetection.io?src=github)
|
||||
|
||||
Using the **Browser Steps** configuration, add basic steps before performing change detection, such as logging into websites, adding a product to a cart, accept cookie logins, entering dates and refining searches.
|
||||
运行完**浏览器步骤**后,然后访问**视觉选择器**标签以精炼您感兴趣的内容。需要启用 Playwright。
|
||||
|
||||
[<img src="docs/browsersteps-anim.gif" style="max-width:100%;" alt="Self-hosted web page change monitoring context difference " title="Website change detection with interactive browser steps, login, cookies etc" />](https://changedetection.io?src=github)
|
||||
### 示例使用场景
|
||||
|
||||
After **Browser Steps** have been run, then visit the **Visual Selector** tab to refine the content you're interested in.
|
||||
Requires Playwright to be enabled.
|
||||
* 产品和服务的价格发生变化
|
||||
* *缺货通知*和*库存恢复通知*
|
||||
* 监控和跟踪 PDF 文件的变化,了解 PDF 文件何时进行了文本修改。
|
||||
* 政府部门更新(更改通常仅在其网站上)
|
||||
* 新软件发布、安全公告(当你不在他们的邮件列表中时)
|
||||
* 有变动的节日
|
||||
* Discogs 补货提醒和监控
|
||||
* 房地产列表变动
|
||||
* 抢先知道你喜爱的威士忌打折,或是在别人之前获悉其他特别优惠
|
||||
* 政府网站上的新冠疫情相关新闻
|
||||
* 他们网站上的大学/组织新闻
|
||||
* 检测和监控 JSON API 响应的变化
|
||||
* JSON API 监控和告警
|
||||
* 法律及其他文档中的变更
|
||||
* 通过通知触发 API 调用,当网站上出现特定文本时
|
||||
* 使用 JSON 过滤器和 JSON 通知将 API 粘合在一起
|
||||
* 根据网页内容的变更创建 RSS 订阅源
|
||||
* 监控 HTML 源代码以防止意外更改,加强你的 PCI 合规性
|
||||
* 你有一份非常敏感的 URL 列表需要监控,你*不*想使用付费替代方案。(记住, *你*就是产品)
|
||||
* 当某些关键词出现在 Twitter 搜索结果中时收到通知
|
||||
* 主动搜索职位信息,当公司更新其招聘页面或在求职网站中出现关键词时收到通知
|
||||
* 当 Bamboo HR 和其他招聘平台上新职位开放时获取通知
|
||||
* 网站篡改监控
|
||||
* 宝可梦卡库存追踪器 / 宝可梦 TCG 追踪器
|
||||
|
||||
*需要支持 JavaScript 的实际 Chrome 运行器吗?我们支持通过 WebDriver 和 Playwright 获取数据!*
|
||||
|
||||
### Example use cases
|
||||
#### 主要功能
|
||||
|
||||
- Products and services have a change in pricing
|
||||
- _Out of stock notification_ and _Back In stock notification_
|
||||
- Monitor and track PDF file changes, know when a PDF file has text changes.
|
||||
- Governmental department updates (changes are often only on their websites)
|
||||
- New software releases, security advisories when you're not on their mailing list.
|
||||
- Festivals with changes
|
||||
- Discogs restock alerts and monitoring
|
||||
- Realestate listing changes
|
||||
- Know when your favourite whiskey is on sale, or other special deals are announced before anyone else
|
||||
- COVID related news from government websites
|
||||
- University/organisation news from their website
|
||||
- Detect and monitor changes in JSON API responses
|
||||
- JSON API monitoring and alerting
|
||||
- Changes in legal and other documents
|
||||
- Trigger API calls via notifications when text appears on a website
|
||||
- Glue together APIs using the JSON filter and JSON notifications
|
||||
- Create RSS feeds based on changes in web content
|
||||
- Monitor HTML source code for unexpected changes, strengthen your PCI compliance
|
||||
- You have a very sensitive list of URLs to watch and you do _not_ want to use the paid alternatives. (Remember, _you_ are the product)
|
||||
- Get notified when certain keywords appear in Twitter search results
|
||||
- Proactively search for jobs, get notified when companies update their careers page, search job portals for keywords.
|
||||
- Get alerts when new job positions are open on Bamboo HR and other job platforms
|
||||
- Website defacement monitoring
|
||||
- Pokémon Card Restock Tracker / Pokémon TCG Tracker
|
||||
* 包含多种触发过滤器,如“文本触发”,“通过选择器移除文本”,“忽略文本”,“提取文本”,还支持正则表达式!
|
||||
* 使用 xPath 和 CSS 选择器定位目标元素,使用 JSONPath 或 jq 轻松监控复杂 JSON
|
||||
* 在快速非 JS 模式和基于 Chrome JS 的“fetchers”之间切换
|
||||
* 监控 PDF 文件中的更改(监控 PDF 中的文本更改,同时监控 PDF 文件大小和校验和)
|
||||
* 轻松指定检查站点的频率
|
||||
* 在提取文本前执行 JS(适用于登录操作,请参阅 UI 中的示例!)
|
||||
* 覆盖请求头,指定 `POST` 或 `GET` 及其他方法
|
||||
* 使用“视觉选择器”来帮助目标特定元素
|
||||
* 每项监控配置代理
|
||||
* 检测到网页更改时,随通知发送屏幕截图
|
||||
|
||||
_Need an actual Chrome runner with Javascript support? We support fetching via WebDriver and Playwright!</a>_
|
||||
我们推荐并使用 Bright Data 全球代理服务,通过我们的注册链接,Bright Data 将为您提供最高 100 美元的首次存款匹配。
|
||||
|
||||
#### Key Features
|
||||
请给这个项目点个星标🌟,帮助它成长!\[https://github.com/dgtlmoon/changedetection.io/\](https://github.com/dgtlmoon/changedetection.io/)
|
||||
|
||||
- Lots of trigger filters, such as "Trigger on text", "Remove text by selector", "Ignore text", "Extract text", also using regular-expressions!
|
||||
- Target elements with xPath and CSS Selectors, Easily monitor complex JSON with JSONPath or jq
|
||||
- Switch between fast non-JS and Chrome JS based "fetchers"
|
||||
- Track changes in PDF files (Monitor text changed in the PDF, Also monitor PDF filesize and checksums)
|
||||
- Easily specify how often a site should be checked
|
||||
- Execute JS before extracting text (Good for logging in, see examples in the UI!)
|
||||
- Override Request Headers, Specify `POST` or `GET` and other methods
|
||||
- Use the "Visual Selector" to help target specific elements
|
||||
- Configurable [proxy per watch](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration)
|
||||
- Send a screenshot with the notification when a change is detected in the web page
|
||||
|
||||
We [recommend and use Bright Data](https://brightdata.grsm.io/n0r16zf7eivq) global proxy services, Bright Data will match any first deposit up to $100 using our signup link.
|
||||
|
||||
Please :star: star :star: this project and help it grow! https://github.com/dgtlmoon/changedetection.io/
|
||||
|
||||
## Installation
|
||||
## 安装
|
||||
|
||||
### Docker
|
||||
|
||||
With Docker composer, just clone this repository and..
|
||||
使用 Docker Compose,只需克隆这个仓库并...
|
||||
|
||||
```bash
|
||||
$ docker-compose up -d
|
||||
```
|
||||
|
||||
Docker standalone
|
||||
Docker 独立版本
|
||||
|
||||
```bash
|
||||
$ docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io
|
||||
```
|
||||
|
||||
`:latest` tag is our latest stable release, `:dev` tag is our bleeding edge `master` branch.
|
||||
\`:latest\` 标签是我们最新的稳定版本,\`:dev\` 标签是我们的尖端 \`master\` 分支。
|
||||
|
||||
Alternative docker repository over at ghcr - [ghcr.io/dgtlmoon/changedetection.io](https://ghcr.io/dgtlmoon/changedetection.io)
|
||||
替代的 Docker 仓库位于 ghcr - [ghcr.io/dgtlmoon/changedetection.io](https://ghcr.io/dgtlmoon/changedetection.io)
|
||||
|
||||
### Windows
|
||||
|
||||
See the install instructions at the wiki https://github.com/dgtlmoon/changedetection.io/wiki/Microsoft-Windows
|
||||
请参阅 wiki 中的安装说明 [https://github.com/dgtlmoon/changedetection.io/wiki/Microsoft-Windows](https://github.com/dgtlmoon/changedetection.io/wiki/Microsoft-Windows)
|
||||
|
||||
### Python Pip
|
||||
|
||||
Check out our pypi page https://pypi.org/project/changedetection.io/
|
||||
请访问我们的 PyPI 页面 [https://pypi.org/project/changedetection.io/](https://pypi.org/project/changedetection.io/)
|
||||
|
||||
```bash
|
||||
$ pip3 install changedetection.io
|
||||
$ changedetection.io -d /path/to/empty/data/dir -p 5000
|
||||
```
|
||||
|
||||
Then visit http://127.0.0.1:5000 , You should now be able to access the UI.
|
||||
然后访问 [http://127.0.0.1:5000](http://127.0.0.1:5000),您现在应该可以访问 UI 了。
|
||||
|
||||
_Now with per-site configurable support for using a fast built in HTTP fetcher or use a Chrome based fetcher for monitoring of JavaScript websites!_
|
||||
*现在支持每个站点配置使用内置的快速 HTTP 获取器,或者使用基于 Chrome 的获取器来监控 JavaScript 网站!*
|
||||
|
||||
## Updating changedetection.io
|
||||
## 更新 changedetection.io
|
||||
|
||||
### Docker
|
||||
|
||||
```
|
||||
docker pull dgtlmoon/changedetection.io
|
||||
docker kill $(docker ps -a -f name=changedetection.io -q)
|
||||
|
|
@ -139,59 +136,58 @@ docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/dat
|
|||
docker-compose pull && docker-compose up -d
|
||||
```
|
||||
|
||||
See the wiki for more information https://github.com/dgtlmoon/changedetection.io/wiki
|
||||
|
||||
参见维基以获取更多信息 [https://github.com/dgtlmoon/changedetection.io/wiki](https://github.com/dgtlmoon/changedetection.io/wiki)
|
||||
|
||||
## Filters
|
||||
|
||||
XPath, JSONPath, jq, and CSS support comes baked in! You can be as specific as you need, use XPath exported from various XPath element query creation tools.
|
||||
(We support LXML `re:test`, `re:match` and `re:replace`.)
|
||||
内置支持 XPath、JSONPath、jq 和 CSS!您可以根据需要进行精确匹配,使用来自各种 XPath 元素查询创建工具导出的 XPath。 (我们支持 LXML 的 `re:test`、`re:match` 和 `re:replace`。)
|
||||
|
||||
## Notifications
|
||||
|
||||
ChangeDetection.io supports a massive amount of notifications (including email, office365, custom APIs, etc) when a web-page has a change detected thanks to the <a href="https://github.com/caronc/apprise">apprise</a> library.
|
||||
Simply set one or more notification URL's in the _[edit]_ tab of that watch.
|
||||
ChangeDetection.io 通过 [apprise](https://github.com/caronc/apprise) 库支持大量通知(包括电子邮件、office365、自定义 API 等),当检测到网页发生变化时会发送通知。只需在“*\[编辑\]*”标签页中设置一个或多个通知 URL。
|
||||
|
||||
Just some examples
|
||||
仅作一些示例
|
||||
|
||||
discord://webhook_id/webhook_token
|
||||
flock://app_token/g:channel_id
|
||||
gitter://token/room
|
||||
gchat://workspace/key/token
|
||||
msteams://TokenA/TokenB/TokenC/
|
||||
o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail
|
||||
rocket://user:password@hostname/#Channel
|
||||
mailto://user:pass@example.com?to=receivingAddress@example.com
|
||||
json://someserver.com/custom-api
|
||||
syslog://
|
||||
|
||||
<a href="https://github.com/caronc/apprise#popular-notification-services">And everything else in this list!</a>
|
||||
```
|
||||
discord://webhook_id/webhook_token
|
||||
flock://app_token/g:channel_id
|
||||
gitter://token/room
|
||||
gchat://workspace/key/token
|
||||
msteams://TokenA/TokenB/TokenC/
|
||||
o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail
|
||||
rocket://user:password@hostname/#Channel
|
||||
mailto://user:pass@example.com?to=receivingAddress@example.com
|
||||
json://someserver.com/custom-api
|
||||
syslog://
|
||||
```
|
||||
|
||||
<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot-notifications.png" style="max-width:100%;" alt="Self-hosted web page change monitoring notifications" title="Self-hosted web page change monitoring notifications" />
|
||||
[以及列表中的其他一切!](https://github.com/caronc/apprise#popular-notification-services)
|
||||
|
||||
Now you can also customise your notification content and use <a target="_new" href="https://jinja.palletsprojects.com/en/3.0.x/templates/">Jinja2 templating</a> for their title and body!
|
||||

|
||||
|
||||
## JSON API Monitoring
|
||||
现在你还可以自定义通知内容,并使用 [Jinja2 模板](https://jinja.palletsprojects.com/en/3.0.x/templates/) 来设置其标题和正文!
|
||||
|
||||
Detect changes and monitor data in JSON API's by using either JSONPath or jq to filter, parse, and restructure JSON as needed.
|
||||
## JSON API 监控
|
||||
|
||||
通过使用 JSONPath 或 jq 过滤、解析和重组 JSON,来检测 JSON API 中的变化和监控数据。
|
||||
|
||||

|
||||
|
||||
This will re-parse the JSON and apply formatting to the text, making it super easy to monitor and detect changes in JSON API results
|
||||
这将重新解析 JSON 并对文本进行格式化,使监控和检测 JSON API 结果中的变化变得极其简单
|
||||
|
||||

|
||||
|
||||
### JSONPath or jq?
|
||||
### JSONPath 或 jq?
|
||||
|
||||
For more complex parsing, filtering, and modifying of JSON data, jq is recommended due to the built-in operators and functions. Refer to the [documentation](https://stedolan.github.io/jq/manual/) for more specifc information on jq.
|
||||
对于更复杂的 JSON 数据解析、过滤和修改,推荐使用 jq,因为它内置了操作符和函数。更多具体信息请参阅\[jq 文档\](#0)。
|
||||
|
||||
One big advantage of `jq` is that you can use logic in your JSON filter, such as filters to only show items that have a value greater than/less than etc.
|
||||
jq 的一大优势是你可以使用逻辑来过滤 JSON 数据,例如只显示值大于/小于等条件的数据项。
|
||||
|
||||
See the wiki https://github.com/dgtlmoon/changedetection.io/wiki/JSON-Selector-Filter-help for more information and examples
|
||||
更多详细信息和示例请参阅维基页面\[https://github.com/dgtlmoon/changedetection.io/wiki/JSON-Selector-Filter-help\](#0)
|
||||
|
||||
### Parse JSON embedded in HTML!
|
||||
### 解析嵌入在 HTML 中的 JSON 数据!
|
||||
|
||||
When you enable a `json:` or `jq:` filter, you can even automatically extract and parse embedded JSON inside a HTML page! Amazingly handy for sites that build content based on JSON, such as many e-commerce websites.
|
||||
启用 `json:` 或 `jq:` 过滤器后,你甚至可以自动提取并解析 HTML 页面中的嵌入 JSON!这对于基于 JSON 构建内容的网站非常有用,比如许多电子商务网站。
|
||||
|
||||
```
|
||||
<html>
|
||||
|
|
@ -214,47 +210,36 @@ When you enable a `json:` or `jq:` filter, you can even automatically extract an
|
|||
"itemCondition":"NewCondition"
|
||||
}
|
||||
</script>
|
||||
```
|
||||
```
|
||||
|
||||
`json:$..price` or `jq:..price` would give `3949.99`, or you can extract the whole structure (use a JSONpath test website to validate with)
|
||||
`json:$..price` 或 `jq:..price` 会返回 `3949.99`,或者你可以提取整个结构(使用 JSONpath 测试网站进行验证)
|
||||
|
||||
The application also supports notifying you that it can follow this information automatically
|
||||
该应用还支持通知你它可以自动跟踪这些信息
|
||||
|
||||
## 代理配置
|
||||
|
||||
## Proxy Configuration
|
||||
参见维基 [https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration),我们还支持在可能的情况下使用 [BrightData 代理服务](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration#brightdata-proxy-support)
|
||||
|
||||
See the wiki https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration , we also support using [BrightData proxy services where possible]( https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration#brightdata-proxy-support)
|
||||
## Raspberry Pi 支持吗?
|
||||
|
||||
## Raspberry Pi support?
|
||||
Raspberry Pi 和 linux/arm/v6、linux/arm/v7、arm64 设备都支持!参见维基 [以获取详细信息](https://github.com/dgtlmoon/changedetection.io/wiki/Fetching-pages-with-WebDriver)
|
||||
|
||||
Raspberry Pi and linux/arm/v6 linux/arm/v7 arm64 devices are supported! See the wiki for [details](https://github.com/dgtlmoon/changedetection.io/wiki/Fetching-pages-with-WebDriver)
|
||||
## API 支持
|
||||
|
||||
## API Support
|
||||
支持通过我们的 API 管理网站监控列表 [via our API](https://changedetection.io/docs/api_v1/index.html)
|
||||
|
||||
Supports managing the website watch list [via our API](https://changedetection.io/docs/api_v1/index.html)
|
||||
## 支持我们
|
||||
|
||||
## Support us
|
||||
您是否利用 changedetection.io 来赚钱?它是否为您节省了时间或金钱?是否让您的生活更加轻松或减少压力?请记住,我们在编写此软件时本应从事有偿工作,我们也需要购买食物和支付房租,就像您一样。
|
||||
|
||||
Do you use changedetection.io to make money? does it save you time or money? Does it make your life easier? less stressful? Remember, we write this software when we should be doing actual paid work, we have to buy food and pay rent just like you.
|
||||
首先,考虑订阅一个 [change detection 月度订阅 - 无限次检查和监控](https://changedetection.io?src=github) ,即使您不使用它,您仍然会获得帮助项目的温暖感觉。(谁知道呢,您可能真的会用到它!)
|
||||
|
||||
或直接通过 PayPal 捐赠金额[](https://www.paypal.com/donate/?hosted_button_id=7CP6HR9ZCNDYJ)
|
||||
|
||||
Firstly, consider taking out a [change detection monthly subscription - unlimited checks and watches](https://changedetection.io?src=github) , even if you don't use it, you still get the warm fuzzy feeling of helping out the project. (And who knows, you might just use it!)
|
||||
或 BTC `1PLFN327GyUarpJd7nVe7Reqg9qHx5frNn`
|
||||
|
||||
Or directly donate an amount PayPal [](https://www.paypal.com/donate/?hosted_button_id=7CP6HR9ZCNDYJ)
|
||||

|
||||
|
||||
Or BTC `1PLFN327GyUarpJd7nVe7Reqg9qHx5frNn`
|
||||
## 商业支持
|
||||
|
||||
<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/btc-support.png" style="max-width:50%;" alt="Support us!" />
|
||||
|
||||
## Commercial Support
|
||||
|
||||
I offer commercial support, this software is depended on by network security, aerospace , data-science and data-journalist professionals just to name a few, please reach out at dgtlmoon@gmail.com for any enquiries, I am more than glad to work with your organisation to further the possibilities of what can be done with changedetection.io
|
||||
|
||||
|
||||
[release-shield]: https://img.shields.io:/github/v/release/dgtlmoon/changedetection.io?style=for-the-badge
|
||||
[docker-pulls]: https://img.shields.io/docker/pulls/dgtlmoon/changedetection.io?style=for-the-badge
|
||||
[test-shield]: https://github.com/dgtlmoon/changedetection.io/actions/workflows/test-only.yml/badge.svg?branch=master
|
||||
|
||||
[license-shield]: https://img.shields.io/github/license/dgtlmoon/changedetection.io.svg?style=for-the-badge
|
||||
[release-link]: https://github.com/dgtlmoon/changedetection.io/releases
|
||||
[docker-link]: https://hub.docker.com/r/dgtlmoon/changedetection.io
|
||||
我提供商业支持,此软件被网络安全、航空航天、数据科学和数据记者等专业人士依赖,如有任何咨询,请联系 [dgtlmoon@gmail.com](mailto:dgtlmoon@gmail.com),我很乐意与贵组织合作,进一步探索 changedetection.io 的可能性
|
||||
|
|
@ -0,0 +1,260 @@
|
|||
## Web Site Change Detection, Restock monitoring and notifications.
|
||||
|
||||
**_Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more._**
|
||||
|
||||
_Live your data-life pro-actively._
|
||||
|
||||
|
||||
[<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot.png" style="max-width:100%;" alt="Self-hosted web page change monitoring" title="Self-hosted web page change monitoring" />](https://changedetection.io?src=github)
|
||||
|
||||
[![Release Version][release-shield]][release-link] [![Docker Pulls][docker-pulls]][docker-link] [![License][license-shield]](https://github.com/dgtlmoon/changedetection.io/blob/master/LICENSE.md)
|
||||
|
||||

|
||||
|
||||
[**Don't have time? Let us host it for you! try our $8.99/month subscription - use our proxies and support!**](https://changedetection.io) , _half the price of other website change monitoring services!_
|
||||
|
||||
- Chrome browser included.
|
||||
- Super fast, no registration needed setup.
|
||||
- Get started watching and receiving website change notifications straight away.
|
||||
|
||||
|
||||
### Target specific parts of the webpage using the Visual Selector tool.
|
||||
|
||||
Available when connected to a <a href="https://github.com/dgtlmoon/changedetection.io/wiki/Playwright-content-fetcher">playwright content fetcher</a> (included as part of our subscription service)
|
||||
|
||||
[<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/visualselector-anim.gif" style="max-width:100%;" alt="Self-hosted web page change monitoring context difference " title="Self-hosted web page change monitoring context difference " />](https://changedetection.io?src=github)
|
||||
|
||||
### Easily see what changed, examine by word, line, or individual character.
|
||||
|
||||
[<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot-diff.png" style="max-width:100%;" alt="Self-hosted web page change monitoring context difference " title="Self-hosted web page change monitoring context difference " />](https://changedetection.io?src=github)
|
||||
|
||||
|
||||
### Perform interactive browser steps
|
||||
|
||||
Fill in text boxes, click buttons and more, setup your changedetection scenario.
|
||||
|
||||
Using the **Browser Steps** configuration, add basic steps before performing change detection, such as logging into websites, adding a product to a cart, accept cookie logins, entering dates and refining searches.
|
||||
|
||||
[<img src="docs/browsersteps-anim.gif" style="max-width:100%;" alt="Self-hosted web page change monitoring context difference " title="Website change detection with interactive browser steps, login, cookies etc" />](https://changedetection.io?src=github)
|
||||
|
||||
After **Browser Steps** have been run, then visit the **Visual Selector** tab to refine the content you're interested in.
|
||||
Requires Playwright to be enabled.
|
||||
|
||||
|
||||
### Example use cases
|
||||
|
||||
- Products and services have a change in pricing
|
||||
- _Out of stock notification_ and _Back In stock notification_
|
||||
- Monitor and track PDF file changes, know when a PDF file has text changes.
|
||||
- Governmental department updates (changes are often only on their websites)
|
||||
- New software releases, security advisories when you're not on their mailing list.
|
||||
- Festivals with changes
|
||||
- Discogs restock alerts and monitoring
|
||||
- Realestate listing changes
|
||||
- Know when your favourite whiskey is on sale, or other special deals are announced before anyone else
|
||||
- COVID related news from government websites
|
||||
- University/organisation news from their website
|
||||
- Detect and monitor changes in JSON API responses
|
||||
- JSON API monitoring and alerting
|
||||
- Changes in legal and other documents
|
||||
- Trigger API calls via notifications when text appears on a website
|
||||
- Glue together APIs using the JSON filter and JSON notifications
|
||||
- Create RSS feeds based on changes in web content
|
||||
- Monitor HTML source code for unexpected changes, strengthen your PCI compliance
|
||||
- You have a very sensitive list of URLs to watch and you do _not_ want to use the paid alternatives. (Remember, _you_ are the product)
|
||||
- Get notified when certain keywords appear in Twitter search results
|
||||
- Proactively search for jobs, get notified when companies update their careers page, search job portals for keywords.
|
||||
- Get alerts when new job positions are open on Bamboo HR and other job platforms
|
||||
- Website defacement monitoring
|
||||
- Pokémon Card Restock Tracker / Pokémon TCG Tracker
|
||||
|
||||
_Need an actual Chrome runner with Javascript support? We support fetching via WebDriver and Playwright!</a>_
|
||||
|
||||
#### Key Features
|
||||
|
||||
- Lots of trigger filters, such as "Trigger on text", "Remove text by selector", "Ignore text", "Extract text", also using regular-expressions!
|
||||
- Target elements with xPath and CSS Selectors, Easily monitor complex JSON with JSONPath or jq
|
||||
- Switch between fast non-JS and Chrome JS based "fetchers"
|
||||
- Track changes in PDF files (Monitor text changed in the PDF, Also monitor PDF filesize and checksums)
|
||||
- Easily specify how often a site should be checked
|
||||
- Execute JS before extracting text (Good for logging in, see examples in the UI!)
|
||||
- Override Request Headers, Specify `POST` or `GET` and other methods
|
||||
- Use the "Visual Selector" to help target specific elements
|
||||
- Configurable [proxy per watch](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration)
|
||||
- Send a screenshot with the notification when a change is detected in the web page
|
||||
|
||||
We [recommend and use Bright Data](https://brightdata.grsm.io/n0r16zf7eivq) global proxy services, Bright Data will match any first deposit up to $100 using our signup link.
|
||||
|
||||
Please :star: star :star: this project and help it grow! https://github.com/dgtlmoon/changedetection.io/
|
||||
|
||||
## Installation
|
||||
|
||||
### Docker
|
||||
|
||||
With Docker composer, just clone this repository and..
|
||||
|
||||
```bash
|
||||
$ docker-compose up -d
|
||||
```
|
||||
|
||||
Docker standalone
|
||||
```bash
|
||||
$ docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io
|
||||
```
|
||||
|
||||
`:latest` tag is our latest stable release, `:dev` tag is our bleeding edge `master` branch.
|
||||
|
||||
Alternative docker repository over at ghcr - [ghcr.io/dgtlmoon/changedetection.io](https://ghcr.io/dgtlmoon/changedetection.io)
|
||||
|
||||
### Windows
|
||||
|
||||
See the install instructions at the wiki https://github.com/dgtlmoon/changedetection.io/wiki/Microsoft-Windows
|
||||
|
||||
### Python Pip
|
||||
|
||||
Check out our pypi page https://pypi.org/project/changedetection.io/
|
||||
|
||||
```bash
|
||||
$ pip3 install changedetection.io
|
||||
$ changedetection.io -d /path/to/empty/data/dir -p 5000
|
||||
```
|
||||
|
||||
Then visit http://127.0.0.1:5000 , You should now be able to access the UI.
|
||||
|
||||
_Now with per-site configurable support for using a fast built in HTTP fetcher or use a Chrome based fetcher for monitoring of JavaScript websites!_
|
||||
|
||||
## Updating changedetection.io
|
||||
|
||||
### Docker
|
||||
```
|
||||
docker pull dgtlmoon/changedetection.io
|
||||
docker kill $(docker ps -a -f name=changedetection.io -q)
|
||||
docker rm $(docker ps -a -f name=changedetection.io -q)
|
||||
docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io
|
||||
```
|
||||
|
||||
### docker-compose
|
||||
|
||||
```bash
|
||||
docker-compose pull && docker-compose up -d
|
||||
```
|
||||
|
||||
See the wiki for more information https://github.com/dgtlmoon/changedetection.io/wiki
|
||||
|
||||
|
||||
## Filters
|
||||
|
||||
XPath, JSONPath, jq, and CSS support comes baked in! You can be as specific as you need, use XPath exported from various XPath element query creation tools.
|
||||
(We support LXML `re:test`, `re:match` and `re:replace`.)
|
||||
|
||||
## Notifications
|
||||
|
||||
ChangeDetection.io supports a massive amount of notifications (including email, office365, custom APIs, etc) when a web-page has a change detected thanks to the <a href="https://github.com/caronc/apprise">apprise</a> library.
|
||||
Simply set one or more notification URL's in the _[edit]_ tab of that watch.
|
||||
|
||||
Just some examples
|
||||
|
||||
discord://webhook_id/webhook_token
|
||||
flock://app_token/g:channel_id
|
||||
gitter://token/room
|
||||
gchat://workspace/key/token
|
||||
msteams://TokenA/TokenB/TokenC/
|
||||
o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail
|
||||
rocket://user:password@hostname/#Channel
|
||||
mailto://user:pass@example.com?to=receivingAddress@example.com
|
||||
json://someserver.com/custom-api
|
||||
syslog://
|
||||
|
||||
<a href="https://github.com/caronc/apprise#popular-notification-services">And everything else in this list!</a>
|
||||
|
||||
<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot-notifications.png" style="max-width:100%;" alt="Self-hosted web page change monitoring notifications" title="Self-hosted web page change monitoring notifications" />
|
||||
|
||||
Now you can also customise your notification content and use <a target="_new" href="https://jinja.palletsprojects.com/en/3.0.x/templates/">Jinja2 templating</a> for their title and body!
|
||||
|
||||
## JSON API Monitoring
|
||||
|
||||
Detect changes and monitor data in JSON API's by using either JSONPath or jq to filter, parse, and restructure JSON as needed.
|
||||
|
||||

|
||||
|
||||
This will re-parse the JSON and apply formatting to the text, making it super easy to monitor and detect changes in JSON API results
|
||||
|
||||

|
||||
|
||||
### JSONPath or jq?
|
||||
|
||||
For more complex parsing, filtering, and modifying of JSON data, jq is recommended due to the built-in operators and functions. Refer to the [documentation](https://stedolan.github.io/jq/manual/) for more specifc information on jq.
|
||||
|
||||
One big advantage of `jq` is that you can use logic in your JSON filter, such as filters to only show items that have a value greater than/less than etc.
|
||||
|
||||
See the wiki https://github.com/dgtlmoon/changedetection.io/wiki/JSON-Selector-Filter-help for more information and examples
|
||||
|
||||
### Parse JSON embedded in HTML!
|
||||
|
||||
When you enable a `json:` or `jq:` filter, you can even automatically extract and parse embedded JSON inside a HTML page! Amazingly handy for sites that build content based on JSON, such as many e-commerce websites.
|
||||
|
||||
```
|
||||
<html>
|
||||
...
|
||||
<script type="application/ld+json">
|
||||
|
||||
{
|
||||
"@context":"http://schema.org/",
|
||||
"@type":"Product",
|
||||
"offers":{
|
||||
"@type":"Offer",
|
||||
"availability":"http://schema.org/InStock",
|
||||
"price":"3949.99",
|
||||
"priceCurrency":"USD",
|
||||
"url":"https://www.newegg.com/p/3D5-000D-001T1"
|
||||
},
|
||||
"description":"Cobratype King Cobra Hero Desktop Gaming PC",
|
||||
"name":"Cobratype King Cobra Hero Desktop Gaming PC",
|
||||
"sku":"3D5-000D-001T1",
|
||||
"itemCondition":"NewCondition"
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
`json:$..price` or `jq:..price` would give `3949.99`, or you can extract the whole structure (use a JSONpath test website to validate with)
|
||||
|
||||
The application also supports notifying you that it can follow this information automatically
|
||||
|
||||
|
||||
## Proxy Configuration
|
||||
|
||||
See the wiki https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration , we also support using [BrightData proxy services where possible]( https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration#brightdata-proxy-support)
|
||||
|
||||
## Raspberry Pi support?
|
||||
|
||||
Raspberry Pi and linux/arm/v6 linux/arm/v7 arm64 devices are supported! See the wiki for [details](https://github.com/dgtlmoon/changedetection.io/wiki/Fetching-pages-with-WebDriver)
|
||||
|
||||
## API Support
|
||||
|
||||
Supports managing the website watch list [via our API](https://changedetection.io/docs/api_v1/index.html)
|
||||
|
||||
## Support us
|
||||
|
||||
Do you use changedetection.io to make money? does it save you time or money? Does it make your life easier? less stressful? Remember, we write this software when we should be doing actual paid work, we have to buy food and pay rent just like you.
|
||||
|
||||
|
||||
Firstly, consider taking out a [change detection monthly subscription - unlimited checks and watches](https://changedetection.io?src=github) , even if you don't use it, you still get the warm fuzzy feeling of helping out the project. (And who knows, you might just use it!)
|
||||
|
||||
Or directly donate an amount PayPal [](https://www.paypal.com/donate/?hosted_button_id=7CP6HR9ZCNDYJ)
|
||||
|
||||
Or BTC `1PLFN327GyUarpJd7nVe7Reqg9qHx5frNn`
|
||||
|
||||
<img src="https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/btc-support.png" style="max-width:50%;" alt="Support us!" />
|
||||
|
||||
## Commercial Support
|
||||
|
||||
I offer commercial support, this software is depended on by network security, aerospace , data-science and data-journalist professionals just to name a few, please reach out at dgtlmoon@gmail.com for any enquiries, I am more than glad to work with your organisation to further the possibilities of what can be done with changedetection.io
|
||||
|
||||
|
||||
[release-shield]: https://img.shields.io:/github/v/release/dgtlmoon/changedetection.io?style=for-the-badge
|
||||
[docker-pulls]: https://img.shields.io/docker/pulls/dgtlmoon/changedetection.io?style=for-the-badge
|
||||
[test-shield]: https://github.com/dgtlmoon/changedetection.io/actions/workflows/test-only.yml/badge.svg?branch=master
|
||||
|
||||
[license-shield]: https://img.shields.io/github/license/dgtlmoon/changedetection.io.svg?style=for-the-badge
|
||||
[release-link]: https://github.com/dgtlmoon/changedetection.io/releases
|
||||
[docker-link]: https://hub.docker.com/r/dgtlmoon/changedetection.io
|
||||
|
|
@ -1,70 +1,68 @@
|
|||
# CloudBeaver Community
|
||||
# CloudBeaver 社区版
|
||||
|
||||
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/cloudbeaver-logo.png" width="250"/>
|
||||

|
||||
|
||||
Cloud Database Manager - Community Edition.
|
||||
CloudBeaver is a web server which provides rich web interface. Server itself is a Java application, web part is written on TypeScript and React.
|
||||
It is free to use and open-source (licensed under [Apache 2](https://github.com/dbeaver/cloudbeaver/blob/devel/LICENSE) license).
|
||||
See out [WIKI](https://github.com/dbeaver/cloudbeaver/wiki) for more details.
|
||||
Cloud 数据库管理器 - 社区版。
|
||||
CloudBeaver 是一个 web 服务器,提供丰富的 web 界面。服务器本身是一个 Java 应用程序,web 部分使用 TypeScript 和 React 编写。
|
||||
它免费提供使用,并且是开源的(采用 [Apache 2](https://github.com/dbeaver/cloudbeaver/blob/devel/LICENSE) 许可证)。 %%
|
||||
访问 [WIKI](https://github.com/dbeaver/cloudbeaver/wiki) 以获取更多细节。
|
||||
|
||||

|
||||
|
||||
## Run in Docker
|
||||
## 使用 Docker 运行
|
||||
|
||||
- [Official Docker repository](https://hub.docker.com/r/dbeaver/cloudbeaver)
|
||||
- [Running instructions](https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container)
|
||||
* [官方 Docker 仓库](https://hub.docker.com/r/dbeaver/cloudbeaver)
|
||||
* [运行说明](https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container)
|
||||
|
||||
## Demo server
|
||||
## 演示服务器
|
||||
|
||||
You can see live demo of CloudBeaver here: https://demo.cloudbeaver.io
|
||||
您可以在以下地址查看 CloudBeaver 的实时演示:\[https://demo.cloudbeaver.io\](https://demo.cloudbeaver.io)
|
||||
|
||||
[Database access instructions](https://github.com/dbeaver/cloudbeaver/wiki/Demo-Server)
|
||||
[数据库访问说明](https://github.com/dbeaver/cloudbeaver/wiki/Demo-Server)
|
||||
|
||||
## Changelog
|
||||
## 更新日志
|
||||
|
||||
### CloudBeaver 23.1.3 - 2023-07-24
|
||||
|
||||
- Users can simultaneously edit resources, allowing them to work together;
|
||||
- We have improved the UX in the search bar - users can delete a query or request by clicking on the cross icon;
|
||||
- The search request considers file names and exclude the .sql file extension for now;
|
||||
- Different bug fixes and enhancements have been made.
|
||||
* 用户可以同时编辑资源,从而可以协同工作;
|
||||
* 我们改进了搜索栏的用户体验——用户可以通过点击叉号图标删除查询或请求;
|
||||
* 搜索请求目前会考虑文件名,但不包括.sql 文件扩展名;
|
||||
* 已进行了不同的错误修复和增强。
|
||||
|
||||
### CloudBeaver 23.1.2 - 2023-07-10
|
||||
|
||||
- We have improved the SQL Editor functionality by adding support for displaying tables with nested arrays of objects;
|
||||
- The ability to compress files during export allows for faster download speeds, particularly for larger files;
|
||||
- New Settings panel displays the product configuration settings such as Minimum fetch size, Maximum fetch size, and Default fetch size from the Data Editor;
|
||||
- Different bug fixes and enhancements have been made.
|
||||
* 我们改进了 SQL 编辑器的功能,增加了显示嵌套对象数组的表格的支持;
|
||||
* 导出时压缩文件的能力可以提高下载速度,尤其是对于大文件;
|
||||
* 新的设置面板显示来自数据编辑器的最小获取大小、最大获取大小和默认获取大小等产品配置设置;
|
||||
* 不同问题已修复并增加了多项改进。
|
||||
|
||||
### CloudBeaver 23.1.1 - 2023-06-26
|
||||
|
||||
- Connections are consistently displayed now when they are pre-configured into the workspace in the Global Configuration json file.
|
||||
- Different bug fixes and enhancements have been made.
|
||||
* 现在,当连接在全局配置 json 文件中预配置到工作空间时,连接将始终显示。
|
||||
* 不同问题已修复并增加了多项改进。
|
||||
|
||||
### CloudBeaver 23.1.0 - 2023-06-05
|
||||
|
||||
Changes since 23.0.0
|
||||
自 23.0.0 版以来的更改
|
||||
|
||||
- Data viewer:
|
||||
- New grouping panel menu was added in the Data Viewer. This panel extracts unique values from the database column for count. Users can drag and drop the column to the grouping panel and get the results immediately. Sorting, filtering and exporting of the results are available on the Grouping panel.
|
||||
- SQL Editor:
|
||||
- We improved the performance of the SQL-editor - as a result, handling scripts with up to 10 000 lines does not present any challenges;
|
||||
- In the SQL-editor, pressing Tab/Space followed by Enter now causes the cursor to move to a new line;
|
||||
- In the SQL editor, when the cursor goes back on the query, the previous hints are displayed;
|
||||
- Error when running SQL with semicolon has been fixed.
|
||||
- Connections:
|
||||
- If there is an error in saving the data, the tab for the chosen connection dialog will stay open to allow corrections;
|
||||
- The URL-configuration for PostgreSQL now correctly displays only a single database.
|
||||
- Driver management:
|
||||
- The CE version now offers the updated sqlite-jdbc driver, version 3.41.2;
|
||||
- CloudBeaver has the option to connect to H2 database version 2;
|
||||
- The internal CloudBeaver database is upgraded to the newest H2 version 2 to avoid vulnerability issues. The database will be safely upgraded automatically for the servers with default configurations. You can perform this upgrade manually if you have a custom configuration for this database in your infrastructure.
|
||||
- Connections:
|
||||
- Option to increase the maximum size of text files displayed in the value panel (using the sqlTextPreviewMaxLength parameter) has been added;
|
||||
- Support for custom logging configuration has been added. An external configuration file can be used instead of the default configuration.
|
||||
* 数据查看器:
|
||||
* 在数据查看器中新增了分组面板菜单。此面板可以从数据库列中提取用于计数的唯一值。用户可以将列拖放到分组面板中并立即获得结果。分组面板中还提供了对结果进行排序、过滤和导出的功能。
|
||||
* SQL 编辑器:
|
||||
* 我们改进了 SQL 编辑器的性能——现在处理包含多达 10000 行的脚本不再有任何挑战;
|
||||
* 在 SQL 编辑器中,按下 Tab/Space 后跟 Enter 键会使光标移动到新行;
|
||||
* 在 SQL 编辑器中,当光标返回查询时,会显示之前的提示;
|
||||
* 运行包含分号的 SQL 时的错误已修复。
|
||||
* 连接:
|
||||
* 如果保存数据时出现错误,将打开所选连接对话框的选项卡以允许进行修正;
|
||||
* PostgreSQL 的 URL 配置现在正确地只显示一个数据库。
|
||||
* 驱动管理:
|
||||
* CE 版本现在提供了更新的 sqlite-jdbc 驱动,版本为 3.41.2;
|
||||
* CloudBeaver 可以连接到 H2 数据库版本 2;
|
||||
* CloudBeaver 内部数据库升级到最新的 H2 版本 2 以避免安全漏洞问题。对于默认配置的服务器,数据库将安全地自动升级。如果您在基础设施中为该数据库设置了自定义配置,可以手动执行此升级。
|
||||
* 连接:
|
||||
* 现在可以在值面板中显示更大尺寸的文本文件(通过使用 sqlTextPreviewMaxLength 参数);
|
||||
* 增加了对自定义日志配置的支持。可以使用外部配置文件替代默认配置。
|
||||
|
||||
### 旧版本的 CloudBeaver
|
||||
|
||||
### Old CloudBeaver releases
|
||||
|
||||
You can find information about earlier releases on the CloudBeaver wiki https://github.com/dbeaver/cloudbeaver/wiki/Releases.
|
||||
|
||||
您可以在 CloudBeaver 维基上找到关于早期版本的信息:[https://github.com/dbeaver/cloudbeaver/wiki/Releases](https://github.com/dbeaver/cloudbeaver/wiki/Releases)。
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
# CloudBeaver Community
|
||||
|
||||
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/cloudbeaver-logo.png" width="250"/>
|
||||
|
||||
Cloud Database Manager - Community Edition.
|
||||
CloudBeaver is a web server which provides rich web interface. Server itself is a Java application, web part is written on TypeScript and React.
|
||||
It is free to use and open-source (licensed under [Apache 2](https://github.com/dbeaver/cloudbeaver/blob/devel/LICENSE) license).
|
||||
See out [WIKI](https://github.com/dbeaver/cloudbeaver/wiki) for more details.
|
||||
|
||||

|
||||
|
||||
## Run in Docker
|
||||
|
||||
- [Official Docker repository](https://hub.docker.com/r/dbeaver/cloudbeaver)
|
||||
- [Running instructions](https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container)
|
||||
|
||||
## Demo server
|
||||
|
||||
You can see live demo of CloudBeaver here: https://demo.cloudbeaver.io
|
||||
|
||||
[Database access instructions](https://github.com/dbeaver/cloudbeaver/wiki/Demo-Server)
|
||||
|
||||
## Changelog
|
||||
|
||||
### CloudBeaver 23.1.3 - 2023-07-24
|
||||
|
||||
- Users can simultaneously edit resources, allowing them to work together;
|
||||
- We have improved the UX in the search bar - users can delete a query or request by clicking on the cross icon;
|
||||
- The search request considers file names and exclude the .sql file extension for now;
|
||||
- Different bug fixes and enhancements have been made.
|
||||
|
||||
### CloudBeaver 23.1.2 - 2023-07-10
|
||||
|
||||
- We have improved the SQL Editor functionality by adding support for displaying tables with nested arrays of objects;
|
||||
- The ability to compress files during export allows for faster download speeds, particularly for larger files;
|
||||
- New Settings panel displays the product configuration settings such as Minimum fetch size, Maximum fetch size, and Default fetch size from the Data Editor;
|
||||
- Different bug fixes and enhancements have been made.
|
||||
|
||||
### CloudBeaver 23.1.1 - 2023-06-26
|
||||
|
||||
- Connections are consistently displayed now when they are pre-configured into the workspace in the Global Configuration json file.
|
||||
- Different bug fixes and enhancements have been made.
|
||||
|
||||
### CloudBeaver 23.1.0 - 2023-06-05
|
||||
|
||||
Changes since 23.0.0
|
||||
|
||||
- Data viewer:
|
||||
- New grouping panel menu was added in the Data Viewer. This panel extracts unique values from the database column for count. Users can drag and drop the column to the grouping panel and get the results immediately. Sorting, filtering and exporting of the results are available on the Grouping panel.
|
||||
- SQL Editor:
|
||||
- We improved the performance of the SQL-editor - as a result, handling scripts with up to 10 000 lines does not present any challenges;
|
||||
- In the SQL-editor, pressing Tab/Space followed by Enter now causes the cursor to move to a new line;
|
||||
- In the SQL editor, when the cursor goes back on the query, the previous hints are displayed;
|
||||
- Error when running SQL with semicolon has been fixed.
|
||||
- Connections:
|
||||
- If there is an error in saving the data, the tab for the chosen connection dialog will stay open to allow corrections;
|
||||
- The URL-configuration for PostgreSQL now correctly displays only a single database.
|
||||
- Driver management:
|
||||
- The CE version now offers the updated sqlite-jdbc driver, version 3.41.2;
|
||||
- CloudBeaver has the option to connect to H2 database version 2;
|
||||
- The internal CloudBeaver database is upgraded to the newest H2 version 2 to avoid vulnerability issues. The database will be safely upgraded automatically for the servers with default configurations. You can perform this upgrade manually if you have a custom configuration for this database in your infrastructure.
|
||||
- Connections:
|
||||
- Option to increase the maximum size of text files displayed in the value panel (using the sqlTextPreviewMaxLength parameter) has been added;
|
||||
- Support for custom logging configuration has been added. An external configuration file can be used instead of the default configuration.
|
||||
|
||||
|
||||
### Old CloudBeaver releases
|
||||
|
||||
You can find information about earlier releases on the CloudBeaver wiki https://github.com/dbeaver/cloudbeaver/wiki/Releases.
|
||||
|
||||
|
|
@ -2,77 +2,61 @@
|
|||
|
||||
[](https://github.com/coder/code-server/discussions) [](https://coder.com/community) [](https://twitter.com/coderhq) [](https://codecov.io/gh/coder/code-server) [](https://coder.com/docs/code-server/latest)
|
||||
|
||||
Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and
|
||||
access it in the browser.
|
||||
在任何机器上运行 [VS Code](https://github.com/Microsoft/vscode),并通过浏览器访问它。
|
||||
|
||||

|
||||
|
||||
## Highlights
|
||||
## 亮点
|
||||
|
||||
- Code on any device with a consistent development environment
|
||||
- Use cloud servers to speed up tests, compilations, downloads, and more
|
||||
- Preserve battery life when you're on the go; all intensive tasks run on your
|
||||
server
|
||||
* 在任何设备上使用一致的开发环境进行编码
|
||||
* 使用云服务器加速测试、编译、下载等操作
|
||||
* 在移动时保护电池寿命;所有密集型任务都在您的服务器上运行
|
||||
|
||||
## Requirements
|
||||
## 要求
|
||||
|
||||
See [requirements](https://coder.com/docs/code-server/latest/requirements) for minimum specs, as well as instructions
|
||||
on how to set up a Google VM on which you can install code-server.
|
||||
查看[要求](https://coder.com/docs/code-server/latest/requirements)以获取最低配置信息,以及如何设置 Google VM 以安装 code-server 的说明。
|
||||
|
||||
**TL;DR:** Linux machine with WebSockets enabled, 1 GB RAM, and 2 vCPUs
|
||||
**TL;DR:** 开启 WebSockets 的 Linux 机器,1 GB RAM,2 个 vCPU
|
||||
|
||||
## Getting started
|
||||
## 入门指南
|
||||
|
||||
There are four ways to get started:
|
||||
有四种入门方式:
|
||||
|
||||
1. Using the [install
|
||||
script](https://github.com/coder/code-server/blob/main/install.sh), which
|
||||
automates most of the process. The script uses the system package manager if
|
||||
possible.
|
||||
2. Manually [installing
|
||||
code-server](https://coder.com/docs/code-server/latest/install)
|
||||
3. Deploy code-server to your team with [coder/coder](https://cdr.co/coder-github)
|
||||
4. Using our one-click buttons and guides to [deploy code-server to a cloud
|
||||
provider](https://github.com/coder/deploy-code-server) ⚡
|
||||
1. 使用[安装脚本](https://github.com/coder/code-server/blob/main/install.sh) ,该脚本自动化了大部分过程。如果可能,脚本会使用系统包管理器。
|
||||
2. 手动 [安装 code-server](https://coder.com/docs/code-server/latest/install)
|
||||
3. 使用 [coder/coder](https://cdr.co/coder-github) 将 code-server 部署到您的团队
|
||||
4. 通过我们的单点点击按钮和指南,将 [code-server 部署到云服务提供商](https://github.com/coder/deploy-code-server) ⚡
|
||||
|
||||
If you use the install script, you can preview what occurs during the install
|
||||
process:
|
||||
如果您使用安装脚本,可以预览安装过程中发生的情况:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
|
||||
```
|
||||
|
||||
To install, run:
|
||||
安装,运行:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://code-server.dev/install.sh | sh
|
||||
```
|
||||
|
||||
When done, the install script prints out instructions for running and starting
|
||||
code-server.
|
||||
完成安装后,安装脚本将打印出运行和启动 code-server 的说明。
|
||||
|
||||
> **Note**
|
||||
> To manage code-server for a team on your infrastructure, see: [coder/coder](https://cdr.co/coder-github)
|
||||
> **注意** 要在您的基础设施上为团队管理 code-server,请参阅:[coder/coder](https://cdr.co/coder-github)
|
||||
|
||||
We also have an in-depth [setup and
|
||||
configuration](https://coder.com/docs/code-server/latest/guide) guide.
|
||||
我们还有一份详细的 [设置和配置](https://coder.com/docs/code-server/latest/guide) 指南。
|
||||
|
||||
## Questions?
|
||||
## 疑问?
|
||||
|
||||
See answers to [frequently asked
|
||||
questions](https://coder.com/docs/code-server/latest/FAQ).
|
||||
查看[常见问题解答](https://coder.com/docs/code-server/latest/FAQ) 。
|
||||
|
||||
## Want to help?
|
||||
## 想要帮忙?
|
||||
|
||||
See [Contributing](https://coder.com/docs/code-server/latest/CONTRIBUTING) for
|
||||
details.
|
||||
查看[贡献指南](https://coder.com/docs/code-server/latest/CONTRIBUTING) 。
|
||||
|
||||
## Hiring
|
||||
## 招聘
|
||||
|
||||
Interested in [working at Coder](https://coder.com/careers)? Check out [our open
|
||||
positions](https://coder.com/careers#openings)!
|
||||
对在 Coder 工作感兴趣?查看[我们的开放职位](https://coder.com/careers#openings) !
|
||||
|
||||
## For Organizations
|
||||
## 为企业
|
||||
|
||||
Want remote development for your organization or enterprise? Visit [our
|
||||
website](https://coder.com) to learn more about Coder.
|
||||
想为您的组织或企业进行远程开发?访问[我们的网站](https://coder.com)了解有关 Coder 的更多信息。
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
# code-server
|
||||
|
||||
[](https://github.com/coder/code-server/discussions) [](https://coder.com/community) [](https://twitter.com/coderhq) [](https://codecov.io/gh/coder/code-server) [](https://coder.com/docs/code-server/latest)
|
||||
|
||||
Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and
|
||||
access it in the browser.
|
||||
|
||||

|
||||
|
||||
## Highlights
|
||||
|
||||
- Code on any device with a consistent development environment
|
||||
- Use cloud servers to speed up tests, compilations, downloads, and more
|
||||
- Preserve battery life when you're on the go; all intensive tasks run on your
|
||||
server
|
||||
|
||||
## Requirements
|
||||
|
||||
See [requirements](https://coder.com/docs/code-server/latest/requirements) for minimum specs, as well as instructions
|
||||
on how to set up a Google VM on which you can install code-server.
|
||||
|
||||
**TL;DR:** Linux machine with WebSockets enabled, 1 GB RAM, and 2 vCPUs
|
||||
|
||||
## Getting started
|
||||
|
||||
There are four ways to get started:
|
||||
|
||||
1. Using the [install
|
||||
script](https://github.com/coder/code-server/blob/main/install.sh), which
|
||||
automates most of the process. The script uses the system package manager if
|
||||
possible.
|
||||
2. Manually [installing
|
||||
code-server](https://coder.com/docs/code-server/latest/install)
|
||||
3. Deploy code-server to your team with [coder/coder](https://cdr.co/coder-github)
|
||||
4. Using our one-click buttons and guides to [deploy code-server to a cloud
|
||||
provider](https://github.com/coder/deploy-code-server) ⚡
|
||||
|
||||
If you use the install script, you can preview what occurs during the install
|
||||
process:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
|
||||
```
|
||||
|
||||
To install, run:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://code-server.dev/install.sh | sh
|
||||
```
|
||||
|
||||
When done, the install script prints out instructions for running and starting
|
||||
code-server.
|
||||
|
||||
> **Note**
|
||||
> To manage code-server for a team on your infrastructure, see: [coder/coder](https://cdr.co/coder-github)
|
||||
|
||||
We also have an in-depth [setup and
|
||||
configuration](https://coder.com/docs/code-server/latest/guide) guide.
|
||||
|
||||
## Questions?
|
||||
|
||||
See answers to [frequently asked
|
||||
questions](https://coder.com/docs/code-server/latest/FAQ).
|
||||
|
||||
## Want to help?
|
||||
|
||||
See [Contributing](https://coder.com/docs/code-server/latest/CONTRIBUTING) for
|
||||
details.
|
||||
|
||||
## Hiring
|
||||
|
||||
Interested in [working at Coder](https://coder.com/careers)? Check out [our open
|
||||
positions](https://coder.com/careers#openings)!
|
||||
|
||||
## For Organizations
|
||||
|
||||
Want remote development for your organization or enterprise? Visit [our
|
||||
website](https://coder.com) to learn more about Coder.
|
||||
|
|
@ -1,69 +1,28 @@
|
|||
<!-- markdownlint-disable -->
|
||||
<h1>
|
||||
<img src="https://github.com/MauriceNino/dashdot/raw/main/.github/images/banner_muted.png" alt="dash. - a modern server dashboard">
|
||||
</h1>
|
||||
# 
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/MauriceNino/dashdot/actions/workflows/deploy.yaml?branch=main" target="_blank">
|
||||
<img title="GitHub Actions" src="https://github.com/MauriceNino/dashdot/actions/workflows/deploy.yaml/badge.svg?branch=main">
|
||||
</a>
|
||||
[](https://github.com/MauriceNino/dashdot/actions/workflows/deploy.yaml?branch=main)[](https://discord.gg/3teHFBNQ9W)
|
||||
|
||||
<a href="https://discord.gg/3teHFBNQ9W" target="_blank">
|
||||
<img title="Discord" src="https://discord.com/api/guilds/986251291577688064/widget.png?style=shield">
|
||||
</a>
|
||||
</p>
|
||||
<p align="center">
|
||||
<i>Feel free to join the <b>Discord</b> and <b>star the repo</b> if you like the project!</i>
|
||||
</p>
|
||||
*欢迎加入 **Discord** 并 **star** 仓库,如果您喜欢这个项目!*
|
||||
|
||||
<br/>
|
||||
**dash.**(或 **dashdot**)是一个现代服务器仪表板,基于最新技术,以玻璃质感设计,旨在用于较小的 VPS 和私人服务器。
|
||||
|
||||
<p align="center">
|
||||
<b>dash.</b> (or <b>dashdot</b>) is a modern server dashboard,
|
||||
running on the latest tech, designed with glassmorphism in mind.
|
||||
It is intended to be used for smaller VPS and private servers.
|
||||
</p>
|
||||
<br />
|
||||
<p align="center">
|
||||
<a href="https://dash.mauz.dev" target="_blank">Live Demo</a>
|
||||
|
|
||||
<a href="https://hub.docker.com/r/mauricenino/dashdot" target="_blank">Docker Image</a>
|
||||
</p>
|
||||
[在线演示](https://dash.mauz.dev) | [容器镜像](https://hub.docker.com/r/mauricenino/dashdot)
|
||||
|
||||
#
|
||||
[](https://ko-fi.com/mauricenino)
|
||||
|
||||
<a href="https://ko-fi.com/mauricenino" target="_blank">
|
||||
<img
|
||||
align="right"
|
||||
width="160"
|
||||
style="padding-left: 20px; padding-bottom: 10px"
|
||||
alt="Consider sponsoring the development of this project"
|
||||
src="https://cdn.ko-fi.com/cdn/kofi2.png?v=3"
|
||||
/>
|
||||
</a>
|
||||
**dash. 是一个开源项目,因此任何贡献都备受赞赏。 如果您有兴趣进一步开发此项目,请查看 [Contributing.md](https://github.com/MauriceNino/dashdot/blob/main/.github/CONTRIBUTING.md).**
|
||||
|
||||
<!-- markdownlint-enable -->
|
||||
如果您想从经济上支持这个项目,您可以访问我的 [GitHub 赞助](https://github.com/sponsors/MauriceNino) ,或者我的 [Ko-Fi](https://ko-fi.com/mauricenino)。
|
||||
|
||||
**dash.** is a open-source project, so any contribution is highly appreciated.
|
||||
If you are interested in further developing this project, have a look at the
|
||||
[Contributing.md](https://github.com/MauriceNino/dashdot/blob/main/.github/CONTRIBUTING.md).
|
||||
## 预览
|
||||
|
||||
In case you want to financially support this project, you can visit my
|
||||
[GitHub Sponsors](https://github.com/sponsors/MauriceNino), or my [Ko-Fi](https://ko-fi.com/mauricenino).
|
||||
| 暗黑模式 | 亮色模式 |
|
||||
| --- | --- |
|
||||
| | |
|
||||
|
||||
## Preview
|
||||
## 快速安装(Docker)
|
||||
|
||||
<!-- markdownlint-disable -->
|
||||
|
||||
| Dark-Mode | Light-Mode |
|
||||
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| <img src="https://github.com/MauriceNino/dashdot/raw/main/apps/docs/static/img/screenshot_darkmode.png" alt="Screenshot of the dark-mode" /> | <img src="https://github.com/MauriceNino/dashdot/raw/main/apps/docs/static/img/screenshot_lightmode.png" alt="Screenshot of the light-mode" /> |
|
||||
|
||||
|
||||
## Quick Install (Docker)
|
||||
|
||||
Images are hosted on [DockerHub](https://hub.docker.com/r/mauricenino/dashdot),
|
||||
and are available for both AMD64 and ARM devices.
|
||||
镜像托管在 [DockerHub](https://hub.docker.com/r/mauricenino/dashdot),适用于 AMD64 和 ARM 设备。
|
||||
|
||||
```bash
|
||||
docker container run -it \
|
||||
|
|
@ -73,8 +32,6 @@ docker container run -it \
|
|||
mauricenino/dashdot
|
||||
```
|
||||
|
||||
To get more information on why which flag is needed, or if you want to use other
|
||||
install options instead (`docker-compose`, or from source), have a look at the
|
||||
[installation options](https://getdashdot.com/docs/install).
|
||||
要了解更多关于为什么需要哪个标志,或者如果您想使用其他安装选项(如 `docker-compose` 或从源代码安装),请查看 [安装选项](https://getdashdot.com/docs/install) 。
|
||||
|
||||
To read more about configuration options, you can visit the [configuration options](https://getdashdot.com/docs/config).
|
||||
要了解更多关于配置选项的信息,您可以访问[配置选项](https://getdashdot.com/docs/config) 。
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
<!-- markdownlint-disable -->
|
||||
<h1>
|
||||
<img src="https://github.com/MauriceNino/dashdot/raw/main/.github/images/banner_muted.png" alt="dash. - a modern server dashboard">
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/MauriceNino/dashdot/actions/workflows/deploy.yaml?branch=main" target="_blank">
|
||||
<img title="GitHub Actions" src="https://github.com/MauriceNino/dashdot/actions/workflows/deploy.yaml/badge.svg?branch=main">
|
||||
</a>
|
||||
|
||||
<a href="https://discord.gg/3teHFBNQ9W" target="_blank">
|
||||
<img title="Discord" src="https://discord.com/api/guilds/986251291577688064/widget.png?style=shield">
|
||||
</a>
|
||||
</p>
|
||||
<p align="center">
|
||||
<i>Feel free to join the <b>Discord</b> and <b>star the repo</b> if you like the project!</i>
|
||||
</p>
|
||||
|
||||
<br/>
|
||||
|
||||
<p align="center">
|
||||
<b>dash.</b> (or <b>dashdot</b>) is a modern server dashboard,
|
||||
running on the latest tech, designed with glassmorphism in mind.
|
||||
It is intended to be used for smaller VPS and private servers.
|
||||
</p>
|
||||
<br />
|
||||
<p align="center">
|
||||
<a href="https://dash.mauz.dev" target="_blank">Live Demo</a>
|
||||
|
|
||||
<a href="https://hub.docker.com/r/mauricenino/dashdot" target="_blank">Docker Image</a>
|
||||
</p>
|
||||
|
||||
#
|
||||
|
||||
<a href="https://ko-fi.com/mauricenino" target="_blank">
|
||||
<img
|
||||
align="right"
|
||||
width="160"
|
||||
style="padding-left: 20px; padding-bottom: 10px"
|
||||
alt="Consider sponsoring the development of this project"
|
||||
src="https://cdn.ko-fi.com/cdn/kofi2.png?v=3"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<!-- markdownlint-enable -->
|
||||
|
||||
**dash.** is a open-source project, so any contribution is highly appreciated.
|
||||
If you are interested in further developing this project, have a look at the
|
||||
[Contributing.md](https://github.com/MauriceNino/dashdot/blob/main/.github/CONTRIBUTING.md).
|
||||
|
||||
In case you want to financially support this project, you can visit my
|
||||
[GitHub Sponsors](https://github.com/sponsors/MauriceNino), or my [Ko-Fi](https://ko-fi.com/mauricenino).
|
||||
|
||||
## Preview
|
||||
|
||||
<!-- markdownlint-disable -->
|
||||
|
||||
| Dark-Mode | Light-Mode |
|
||||
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| <img src="https://github.com/MauriceNino/dashdot/raw/main/apps/docs/static/img/screenshot_darkmode.png" alt="Screenshot of the dark-mode" /> | <img src="https://github.com/MauriceNino/dashdot/raw/main/apps/docs/static/img/screenshot_lightmode.png" alt="Screenshot of the light-mode" /> |
|
||||
|
||||
|
||||
## Quick Install (Docker)
|
||||
|
||||
Images are hosted on [DockerHub](https://hub.docker.com/r/mauricenino/dashdot),
|
||||
and are available for both AMD64 and ARM devices.
|
||||
|
||||
```bash
|
||||
docker container run -it \
|
||||
-p 80:3001 \
|
||||
-v /:/mnt/host:ro \
|
||||
--privileged \
|
||||
mauricenino/dashdot
|
||||
```
|
||||
|
||||
To get more information on why which flag is needed, or if you want to use other
|
||||
install options instead (`docker-compose`, or from source), have a look at the
|
||||
[installation options](https://getdashdot.com/docs/install).
|
||||
|
||||
To read more about configuration options, you can visit the [configuration options](https://getdashdot.com/docs/config).
|
||||
|
|
@ -1,32 +1,29 @@
|
|||
# Dashy
|
||||
|
||||
<h1 align="center">Dashy</h1>
|
||||
<p align="center">
|
||||
<i>Dashy helps you organize your self-hosted services by making them accessible from a single place</i>
|
||||
<br/>
|
||||
<img width="120" src="https://i.ibb.co/yhbt6CY/dashy.png" />
|
||||
<br/>
|
||||
<b><a href="https://github.com/Lissy93/dashy/blob/master/docs/showcase.md">User Showcase</a></b> | <b><a href="https://demo.dashy.to">Live Demo</a></b> | <b><a href="https://github.com/Lissy93/dashy/blob/master/docs/quick-start.md">Getting Started</a></b> | <b><a href="https://dashy.to/docs">Documentation</a></b> | <b><a href="https://github.com/Lissy93/dashy">GitHub</a></b>
|
||||
</p>
|
||||
*Dashy 帮助您通过将自托管服务集中在一个地方来组织它们*
|
||||

|
||||
**[用户展示](https://github.com/Lissy93/dashy/blob/master/docs/showcase.md)** | **[实时演示](https://demo.dashy.to)** | **[入门指南](https://github.com/Lissy93/dashy/blob/master/docs/quick-start.md)** | **[文档](https://dashy.to/docs)** | **[GitHub](https://github.com/Lissy93/dashy)**
|
||||
|
||||
## Features 🌈
|
||||
- 📃 Support for multiple pages
|
||||
- 🚦 Real-time status monitoring for each of your apps/links
|
||||
- 📊 Use widgets to display info and dynamic content from self-hosted services
|
||||
- 🔎 Instant search by name, domain, or tags + customizable hotkeys & keyboard shortcuts
|
||||
- 🎨 Many built-in color themes, with UI color editor and support for custom CSS
|
||||
- 🧸 Many icon options - Font-Awesome, homelab icons, auto-fetching Favicon, images, emojis, etc.
|
||||
- 💂 Optional authentication with multi-user access, configurable privileges, and SSO support
|
||||
- 🌎 Multi-language support, with 10+ human-translated languages, and more on the way
|
||||
- ☁ Optional, encrypted, free off-site cloud backup and restore feature available
|
||||
- 💼 A workspace view, for easily switching between multiple apps simultaneously
|
||||
- 🛩️ A minimal view, for use as a fast-loading browser Startpage
|
||||
- 🖱️ Choose app launch methods: new tab, same tab, clipboard, pop-up modal, or open in workspace view
|
||||
- 📏 Customizable layout, sizes, text, component visibility, sort order, behavior, etc.
|
||||
- 🖼️ Options for a full-screen background image, custom nav-bar links, HTML footer, title, etc.
|
||||
- 🚀 Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
|
||||
- ⚙️ Easy single-file YAML-based configuration, and option to configure app through the UI
|
||||
- ✨ Under active development with improvements and new features added regularly
|
||||
- 🤏 Small bundle size, fully responsive UI, and PWA for basic offline access
|
||||
- 🆓 100% free and open-source
|
||||
- 🔐 Strong focus on privacy
|
||||
- 🌈 And loads more...
|
||||
## 功能 🌈
|
||||
|
||||
* 📃 支持多页
|
||||
* 🚦 对每个应用/链接进行实时状态监控
|
||||
* 📊 使用小部件显示来自自托管服务的信息和动态内容
|
||||
* 🔎 通过名称、域名或标签进行即时搜索 + 可自定义快捷键和键盘快捷方式
|
||||
* 🎨 许多内置颜色主题,包含 UI 颜色编辑器和自定义 CSS 支持
|
||||
* 🧸 许多图标选项 - Font-Awesome、homelab 图标、自动获取 Favicon、图片、表情符号等。
|
||||
* 💂 可选的认证功能,支持多用户访问、可配置权限和 SSO 支持
|
||||
* 🌎 多语言支持,包含10+种人工翻译的语言,还有更多即将到来
|
||||
* ☁ 可选的加密、免费离线云备份和恢复功能可用
|
||||
* 💼 工作空间视图,便于同时切换多个应用
|
||||
* 🛩️ 最简视图,可作为快速加载的浏览器起始页使用
|
||||
* 🖱️ 选择应用启动方式:新标签页、同一标签页、剪贴板、弹出模态窗口或在工作空间视图中打开
|
||||
* 📏 可自定义布局、尺寸、文本、组件可见性、排序顺序、行为等。
|
||||
* 🖼️ 提供全屏背景图片、自定义导航栏链接、HTML 页脚、标题等选项。
|
||||
* 🚀 使用 Docker、裸机或一键云部署轻松设置。
|
||||
* ⚙️ 易于使用基于单文件的 YAML 配置,并通过 UI 配置应用程序。
|
||||
* ✨ 正在积极开发中,定期添加改进和新功能
|
||||
* 🤏 小巧的安装包,完全响应式界面,支持离线访问的 PWA
|
||||
* 🆓 100% 免费且开源
|
||||
* 🔐 强调隐私保护
|
||||
* 🌈 更多内容...
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
<h1 align="center">Dashy</h1>
|
||||
<p align="center">
|
||||
<i>Dashy helps you organize your self-hosted services by making them accessible from a single place</i>
|
||||
<br/>
|
||||
<img width="120" src="https://i.ibb.co/yhbt6CY/dashy.png" />
|
||||
<br/>
|
||||
<b><a href="https://github.com/Lissy93/dashy/blob/master/docs/showcase.md">User Showcase</a></b> | <b><a href="https://demo.dashy.to">Live Demo</a></b> | <b><a href="https://github.com/Lissy93/dashy/blob/master/docs/quick-start.md">Getting Started</a></b> | <b><a href="https://dashy.to/docs">Documentation</a></b> | <b><a href="https://github.com/Lissy93/dashy">GitHub</a></b>
|
||||
</p>
|
||||
|
||||
## Features 🌈
|
||||
- 📃 Support for multiple pages
|
||||
- 🚦 Real-time status monitoring for each of your apps/links
|
||||
- 📊 Use widgets to display info and dynamic content from self-hosted services
|
||||
- 🔎 Instant search by name, domain, or tags + customizable hotkeys & keyboard shortcuts
|
||||
- 🎨 Many built-in color themes, with UI color editor and support for custom CSS
|
||||
- 🧸 Many icon options - Font-Awesome, homelab icons, auto-fetching Favicon, images, emojis, etc.
|
||||
- 💂 Optional authentication with multi-user access, configurable privileges, and SSO support
|
||||
- 🌎 Multi-language support, with 10+ human-translated languages, and more on the way
|
||||
- ☁ Optional, encrypted, free off-site cloud backup and restore feature available
|
||||
- 💼 A workspace view, for easily switching between multiple apps simultaneously
|
||||
- 🛩️ A minimal view, for use as a fast-loading browser Startpage
|
||||
- 🖱️ Choose app launch methods: new tab, same tab, clipboard, pop-up modal, or open in workspace view
|
||||
- 📏 Customizable layout, sizes, text, component visibility, sort order, behavior, etc.
|
||||
- 🖼️ Options for a full-screen background image, custom nav-bar links, HTML footer, title, etc.
|
||||
- 🚀 Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
|
||||
- ⚙️ Easy single-file YAML-based configuration, and option to configure app through the UI
|
||||
- ✨ Under active development with improvements and new features added regularly
|
||||
- 🤏 Small bundle size, fully responsive UI, and PWA for basic offline access
|
||||
- 🆓 100% free and open-source
|
||||
- 🔐 Strong focus on privacy
|
||||
- 🌈 And loads more...
|
||||
|
|
@ -1,156 +1,136 @@
|
|||
[](https://www.npmjs.com/package/dbgate-serve)
|
||||

|
||||
[](https://snapcraft.io/dbgate)
|
||||
[](https://snapcraft.io/dbgate)
|
||||
[](https://github.com/prettier/prettier)
|
||||
[](https://www.npmjs.com/package/dbgate-serve)  [](https://snapcraft.io/dbgate) [](https://snapcraft.io/dbgate) [](https://github.com/prettier/prettier)
|
||||
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/app/icon.png" width="64" align="right"/>
|
||||

|
||||
|
||||
# DbGate - (no)SQL database client
|
||||
# DbGate - (无)SQL 数据库客户端
|
||||
|
||||
DbGate is cross-platform database manager.
|
||||
It's designed to be simple to use and effective, when working with more databases simultaneously.
|
||||
But there are also many advanced features like schema compare, visual query designer, chart visualisation or batch export and import.
|
||||
DbGate 是一款跨平台数据库管理器。它设计得简单易用,同时高效地处理多个数据库。但同时也拥有许多高级功能,如模式比较、可视化查询设计器、图表可视化或批量导入导出。
|
||||
|
||||
DbGate is licensed under MIT license and is completely free.
|
||||
DbGate 采用 MIT 许可证,并且完全免费。
|
||||
|
||||
* Try it online - [demo.dbgate.org](https://demo.dbgate.org) - online demo application
|
||||
* **Download** application for Windows, Linux or Mac from [dbgate.org](https://dbgate.org/download/)
|
||||
* Run web version as [NPM package](https://www.npmjs.com/package/dbgate-serve) or as [docker image](https://hub.docker.com/r/dbgate/dbgate)
|
||||
* 在线试用 - [demo.dbgate.org](https://demo.dbgate.org) - 在线演示应用程序
|
||||
* **下载**适用于 Windows、Linux 或 Mac 的应用程序,从 [dbgate.org](https://dbgate.org/download/)
|
||||
* 作为 [NPM 包](https://www.npmjs.com/package/dbgate-serve)或 [docker 镜像](https://hub.docker.com/r/dbgate/dbgate)运行 Web 版本
|
||||
|
||||
## Supported databases
|
||||
* MySQL
|
||||
* PostgreSQL
|
||||
* SQL Server
|
||||
* Oracle (experimental)
|
||||
* MongoDB
|
||||
* Redis
|
||||
* SQLite
|
||||
* Amazon Redshift
|
||||
* CockroachDB
|
||||
* MariaDB
|
||||
## 支持的数据库
|
||||
|
||||
<!-- Learn more about DbGate features at the [DbGate website](https://dbgate.org/), or try our online [demo application](https://demo.dbgate.org) -->
|
||||
* MySQL
|
||||
* PostgreSQL
|
||||
* SQL Server
|
||||
* Oracle (实验性)
|
||||
* MongoDB
|
||||
* Redis
|
||||
* SQLite
|
||||
* Amazon Redshift
|
||||
* CockroachDB
|
||||
* MariaDB
|
||||
|
||||
[](https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot1.png)[ ](https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot2.png)[ ](https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot4.png)[](https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot3.png)
|
||||
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot1.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot1.png" width="400"/>
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot2.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot2.png" width="400"/>
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot4.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot4.png" width="400"/>
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot3.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot3.png" width="400"/>
|
||||
</a>
|
||||
## 功能
|
||||
|
||||
<!--  -->
|
||||
* 表格数据编辑,预览 SQL 更改脚本
|
||||
* 编辑表结构、索引、主键和外键
|
||||
* 比较和同步数据库结构
|
||||
* ER 图
|
||||
* 浅色和深色主题
|
||||
* 主/详细视图,外键查找
|
||||
* 查询设计器
|
||||
* 表格多列的舒适工作表单
|
||||
* MongoDB 集合的 JSON 视图
|
||||
* 探索表格、视图、过程、函数、MongoDB 集合
|
||||
* SQL 编辑器
|
||||
* 执行 SQL 脚本
|
||||
* SQL 代码格式化工具
|
||||
* SQL 代码自动补全
|
||||
* 添加 SQL 左/内/右连接实用工具
|
||||
* Mongo JavaScript 编辑器,执行 Mongo 脚本(使用 NodeJs 语法)
|
||||
* Redis 树形视图,从键生成脚本,运行 Redis 脚本
|
||||
* 可在 Windows、Linux 和 Mac 上作为应用程序运行。或在服务器上的 Docker 容器中,以及在客户端的网页浏览器中运行。
|
||||
* 从/到 CSV、Excel、JSON、NDJSON、XML 导入/导出
|
||||
* 免费表格编辑器 - 快速编辑表格数据(在导入/导出前清理数据,原型表格等)
|
||||
* 存档 - 在本地文件系统(或使用 Web 应用时在 DbGate 服务器上)以 NDJSON 文件备份您的数据
|
||||
* 图表,将图表导出到 HTML 页面
|
||||
* 有关详细信息,如何将 DbGate 运行在 Docker 容器中,请访问 [docker hub](https://hub.docker.com/r/dbgate/dbgate)
|
||||
* 可扩展插件架构
|
||||
* 视角 - 复杂关系数据的嵌套表格视图,MongoDB 数据库的查询设计器
|
||||
|
||||
## Features
|
||||
* Table data editing, with SQL change script preview
|
||||
* Edit table schema, indexes, primary and foreign keys
|
||||
* Compare and synchronize database structure
|
||||
* ER diagram
|
||||
* Light and dark theme
|
||||
* Master/detail views, foreign key lookups
|
||||
* Query designer
|
||||
* Form view for comfortable work with tables with many columns
|
||||
* JSON view on MongoDB collections
|
||||
* Explore tables, views, procedures, functions, MongoDB collections
|
||||
* SQL editor
|
||||
* execute SQL script
|
||||
* SQL code formatter
|
||||
* SQL code completion
|
||||
* Add SQL LEFT/INNER/RIGHT join utility
|
||||
* Mongo JavaScript editor, execute Mongo script (with NodeJs syntax)
|
||||
* Redis tree view, generate script from keys, run Redis script
|
||||
* Runs as application for Windows, Linux and Mac. Or in Docker container on server and in web Browser on client.
|
||||
* Import, export from/to CSV, Excel, JSON, NDJSON, XML
|
||||
* Free table editor - quick table data editing (cleanup data after import/before export, prototype tables etc.)
|
||||
* Archives - backup your data in NDJSON files on local filesystem (or on DbGate server, when using web application)
|
||||
* Charts, export chart to HTML page
|
||||
* For detailed info, how to run DbGate in docker container, visit [docker hub](https://hub.docker.com/r/dbgate/dbgate)
|
||||
* Extensible plugin architecture
|
||||
* Perspectives - nested table view over complex relational data, query designer on MongoDB databases
|
||||
## 如何贡献
|
||||
|
||||
## How to contribute
|
||||
Any contributions are welcome. If you want to contribute without coding, consider following:
|
||||
欢迎任何形式的贡献。如果您想在不编码的情况下做出贡献,请考虑以下方式:
|
||||
|
||||
* Tell your friends about DbGate or share on social networks - when more people will use DbGate, it will grow to be better
|
||||
* Write review on [Slant.co](https://www.slant.co/improve/options/41086/~dbgate-review) or [G2](https://www.g2.com/products/dbgate/reviews)
|
||||
* Create issue, if you find problem in app, or you have idea to new feature. If issue already exists, you could leave comment on it, to prioritise most wanted issues
|
||||
* Create some tutorial video on [youtube](https://www.youtube.com/playlist?list=PLCo7KjCVXhr0RfUSjM9wJMsp_ShL1q61A)
|
||||
* Become a backer on [GitHub sponsors](https://github.com/sponsors/dbgate) or [Open collective](https://opencollective.com/dbgate)
|
||||
* Where a small coding is acceptable for you, you could [create plugin](https://dbgate.org/docs/plugin-development.html). Plugins for new themes can be created actually without JS coding
|
||||
* 告诉你的朋友关于 DbGate 或者在社会网络上分享——当更多的人使用 DbGate 时,它将变得更好
|
||||
* 在 [Slant.co](https://www.slant.co/improve/options/41086/~dbgate-review) 或 [G2](https://www.g2.com/products/dbgate/reviews) 上写评论
|
||||
* 如果你在应用中遇到问题,或者有新功能的想法,请创建问题。如果问题已经存在,你可以在它上面留言,以优先处理最需要的议题
|
||||
* 在 [youtube](https://www.youtube.com/playlist?list=PLCo7KjCVXhr0RfUSjM9wJMsp_ShL1q61A) 上创建一些教程视频
|
||||
* 成为 GitHub sponsors [赞助者](https://github.com/sponsors/dbgate)或 [Open collective](https://opencollective.com/dbgate) 的资助者
|
||||
* 在你能够接受少量编码的情况下,你可以[创建插件](https://dbgate.org/docs/plugin-development.html) 。实际上,为新的主题创建插件无需 JS 编码
|
||||
|
||||
Thank you!
|
||||
谢谢!
|
||||
|
||||
## Why is DbGate different
|
||||
There are many database managers now, so why DbGate?
|
||||
* Works everywhere - Windows, Linux, Mac, Web browser (+mobile web is planned), without compromises in features
|
||||
* Based on standalone NPM packages, scripts can be run without DbGate (example - [CSV export](https://www.npmjs.com/package/dbgate-plugin-csv) )
|
||||
* Many data browsing functions based using foreign keys - master/detail, expand columns, expandable form view
|
||||
## DbGate 有什么不同?
|
||||
|
||||
## Design goals
|
||||
* Application simplicity - DbGate takes the best and only the best from old DbGate, [DatAdmin](https://www.softpedia.com/get/Internet/Servers/Database-Utils/DatAdmin-Personal.shtml), [DbMouse](https://www.softpedia.com/get/Internet/Servers/Database-Utils/DbMouse.shtml) and [SQL Database Studio](https://en.wikipedia.org/wiki/SQL_Database_Studio)
|
||||
* Minimal dependencies
|
||||
* Frontend - Svelte
|
||||
* Backend - NodeJs, ExpressJs, database connection drivers
|
||||
* JavaScript + TypeScript
|
||||
* App - electron
|
||||
* Platform independent - runs as web application in single docker container on server, or as application using Electron platform on Linux, Windows and Mac
|
||||
现在有很多数据库管理器,那么为什么选择 DbGate?
|
||||
|
||||
<!-- ## Plugins
|
||||
Plugins are standard NPM packages published on [npmjs.com](https://www.npmjs.com).
|
||||
See all [existing DbGate plugins](https://www.npmjs.com/search?q=keywords:dbgateplugin).
|
||||
Visit [dbgate generator homepage](https://github.com/dbgate/generator-dbgate) to see, how to create your own plugin.
|
||||
* 适用于所有平台 - Windows、Linux、Mac、Web 浏览器(+计划中的移动 Web),功能不受任何妥协
|
||||
* 基于独立的 NPM 包,可以在没有 DbGate 的情况下运行脚本(例如 - [CSV 导出](https://www.npmjs.com/package/dbgate-plugin-csv) )
|
||||
* 许多基于外键的数据浏览功能 - 主/详细,展开列,可展开表单视图
|
||||
|
||||
Currently following extensions can be implemented using plugins:
|
||||
- File format parsers/writers
|
||||
- Database engine connectors
|
||||
## 设计目标
|
||||
|
||||
Basic set of plugins is part of DbGate git repository and is installed with app. Additional plugins pust be downloaded from NPM (this task is handled by DbGate) -->
|
||||
* 应用简洁性 - DbGate 汲取了旧版 DbGate、 [DatAdmin](https://www.softpedia.com/get/Internet/Servers/Database-Utils/DatAdmin-Personal.shtml)、 [DbMouse](https://www.softpedia.com/get/Internet/Servers/Database-Utils/DbMouse.shtml) 和 [SQL Database Studio](https://en.wikipedia.org/wiki/SQL_Database_Studio) 中的最佳元素,仅取其精华
|
||||
* 最小化依赖
|
||||
* 前端 - Svelte
|
||||
* 后端 - NodeJs, ExpressJs, 数据库连接驱动
|
||||
* JavaScript + TypeScript
|
||||
* 应用 - electron
|
||||
* 平台无关 - 服务器上作为单个 Docker 容器中的 Web 应用运行,或作为使用 Electron 平台的 Linux、Windows 和 Mac 上的应用程序运行
|
||||
|
||||
## How to run development environment
|
||||
## 如何运行开发环境
|
||||
|
||||
简单版本 - 运行 WEB 应用:
|
||||
|
||||
Simple variant - runs WEB application:
|
||||
```sh
|
||||
yarn
|
||||
yarn start
|
||||
```
|
||||
|
||||
If you want more control, run WEB application:
|
||||
如果您想有更多控制权,运行 WEB 应用:
|
||||
|
||||
```sh
|
||||
yarn # install NPM packages
|
||||
```
|
||||
|
||||
And than run following 3 commands concurrently in 3 terminals:
|
||||
然后在3个终端中同时运行以下3个命令:
|
||||
|
||||
```
|
||||
yarn start:api # run API on port 3000
|
||||
yarn start:web # run web on port 5001
|
||||
yarn lib # watch typescript libraries and plugins modifications
|
||||
```
|
||||
This runs API on port 3000 and web application on port 5001
|
||||
Open http://localhost:5001 in your browser
|
||||
|
||||
If you want to run electron app:
|
||||
在端口 3000 上运行 API,在端口 5001 上运行 Web 应用
|
||||
在您的浏览器中打开 [http://localhost:5001](http://localhost:5001)
|
||||
|
||||
如果您想运行 electron 应用:
|
||||
|
||||
```sh
|
||||
yarn # install NPM packages
|
||||
cd app
|
||||
yarn # install NPM packages for electron
|
||||
```
|
||||
|
||||
And than run following 3 commands concurrently in 3 terminals:
|
||||
然后在3个终端中同时运行以下3个命令:
|
||||
|
||||
```
|
||||
yarn start:web # run web on port 5001 (only static JS and HTML files)
|
||||
yarn lib # watch typescript libraries and plugins modifications
|
||||
yarn start:app # run electron app
|
||||
```
|
||||
|
||||
## How to run built electron app locally
|
||||
This mode is very similar to production run of electron app. Electron doesn't use localhost:5001.
|
||||
## 如何在本地运行构建的 electron 应用
|
||||
|
||||
此模式与 electron 应用的生成运行非常相似。Electron 不使用 localhost:5001。
|
||||
|
||||
```sh
|
||||
cd app
|
||||
|
|
@ -163,10 +143,11 @@ yarn build:app:local
|
|||
yarn start:app:local
|
||||
```
|
||||
|
||||
## How to create plugin
|
||||
Creating plugin is described in [documentation](https://github.com/dbgate/dbgate/wiki/Plugin-development)
|
||||
## 如何创建插件
|
||||
|
||||
But it is very simple:
|
||||
创建插件在[文档](https://github.com/dbgate/dbgate/wiki/Plugin-development)中有描述
|
||||
|
||||
但是很简单:
|
||||
|
||||
```sh
|
||||
npm install -g yo # install yeoman
|
||||
|
|
@ -175,7 +156,8 @@ cd dbgate-plugin-my-new-plugin # this directory is created by wizard, edit, what
|
|||
yarn plugin # this compiles plugin and copies it into existing DbGate installation
|
||||
```
|
||||
|
||||
After restarting DbGate, you could use your new plugin from DbGate.
|
||||
重启 DbGate 后,您就可以从 DbGate 使用您的新插件。
|
||||
|
||||
## Logging
|
||||
DbGate uses [pinomin logger](https://github.com/dbgate/pinomin). So by default, it produces JSON log messages into console and log files. If you want to see formatted logs, please use [pino-pretty](https://github.com/pinojs/pino-pretty) log formatter.
|
||||
## 日志记录
|
||||
|
||||
DbGate 使用 [pinomin logger](https://github.com/dbgate/pinomin)。因此,默认情况下,它将 JSON 日志消息输出到控制台和日志文件中。如果您想查看格式化的日志,请使用 [pino-pretty](https://github.com/pinojs/pino-pretty) 日志格式化器。
|
||||
|
|
@ -0,0 +1,181 @@
|
|||
[](https://www.npmjs.com/package/dbgate-serve)
|
||||

|
||||
[](https://snapcraft.io/dbgate)
|
||||
[](https://snapcraft.io/dbgate)
|
||||
[](https://github.com/prettier/prettier)
|
||||
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/app/icon.png" width="64" align="right"/>
|
||||
|
||||
# DbGate - (no)SQL database client
|
||||
|
||||
DbGate is cross-platform database manager.
|
||||
It's designed to be simple to use and effective, when working with more databases simultaneously.
|
||||
But there are also many advanced features like schema compare, visual query designer, chart visualisation or batch export and import.
|
||||
|
||||
DbGate is licensed under MIT license and is completely free.
|
||||
|
||||
* Try it online - [demo.dbgate.org](https://demo.dbgate.org) - online demo application
|
||||
* **Download** application for Windows, Linux or Mac from [dbgate.org](https://dbgate.org/download/)
|
||||
* Run web version as [NPM package](https://www.npmjs.com/package/dbgate-serve) or as [docker image](https://hub.docker.com/r/dbgate/dbgate)
|
||||
|
||||
## Supported databases
|
||||
* MySQL
|
||||
* PostgreSQL
|
||||
* SQL Server
|
||||
* Oracle (experimental)
|
||||
* MongoDB
|
||||
* Redis
|
||||
* SQLite
|
||||
* Amazon Redshift
|
||||
* CockroachDB
|
||||
* MariaDB
|
||||
|
||||
<!-- Learn more about DbGate features at the [DbGate website](https://dbgate.org/), or try our online [demo application](https://demo.dbgate.org) -->
|
||||
|
||||
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot1.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot1.png" width="400"/>
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot2.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot2.png" width="400"/>
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot4.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot4.png" width="400"/>
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot3.png">
|
||||
<img src="https://raw.githubusercontent.com/dbgate/dbgate/master/img/screenshot3.png" width="400"/>
|
||||
</a>
|
||||
|
||||
<!--  -->
|
||||
|
||||
## Features
|
||||
* Table data editing, with SQL change script preview
|
||||
* Edit table schema, indexes, primary and foreign keys
|
||||
* Compare and synchronize database structure
|
||||
* ER diagram
|
||||
* Light and dark theme
|
||||
* Master/detail views, foreign key lookups
|
||||
* Query designer
|
||||
* Form view for comfortable work with tables with many columns
|
||||
* JSON view on MongoDB collections
|
||||
* Explore tables, views, procedures, functions, MongoDB collections
|
||||
* SQL editor
|
||||
* execute SQL script
|
||||
* SQL code formatter
|
||||
* SQL code completion
|
||||
* Add SQL LEFT/INNER/RIGHT join utility
|
||||
* Mongo JavaScript editor, execute Mongo script (with NodeJs syntax)
|
||||
* Redis tree view, generate script from keys, run Redis script
|
||||
* Runs as application for Windows, Linux and Mac. Or in Docker container on server and in web Browser on client.
|
||||
* Import, export from/to CSV, Excel, JSON, NDJSON, XML
|
||||
* Free table editor - quick table data editing (cleanup data after import/before export, prototype tables etc.)
|
||||
* Archives - backup your data in NDJSON files on local filesystem (or on DbGate server, when using web application)
|
||||
* Charts, export chart to HTML page
|
||||
* For detailed info, how to run DbGate in docker container, visit [docker hub](https://hub.docker.com/r/dbgate/dbgate)
|
||||
* Extensible plugin architecture
|
||||
* Perspectives - nested table view over complex relational data, query designer on MongoDB databases
|
||||
|
||||
## How to contribute
|
||||
Any contributions are welcome. If you want to contribute without coding, consider following:
|
||||
|
||||
* Tell your friends about DbGate or share on social networks - when more people will use DbGate, it will grow to be better
|
||||
* Write review on [Slant.co](https://www.slant.co/improve/options/41086/~dbgate-review) or [G2](https://www.g2.com/products/dbgate/reviews)
|
||||
* Create issue, if you find problem in app, or you have idea to new feature. If issue already exists, you could leave comment on it, to prioritise most wanted issues
|
||||
* Create some tutorial video on [youtube](https://www.youtube.com/playlist?list=PLCo7KjCVXhr0RfUSjM9wJMsp_ShL1q61A)
|
||||
* Become a backer on [GitHub sponsors](https://github.com/sponsors/dbgate) or [Open collective](https://opencollective.com/dbgate)
|
||||
* Where a small coding is acceptable for you, you could [create plugin](https://dbgate.org/docs/plugin-development.html). Plugins for new themes can be created actually without JS coding
|
||||
|
||||
Thank you!
|
||||
|
||||
## Why is DbGate different
|
||||
There are many database managers now, so why DbGate?
|
||||
* Works everywhere - Windows, Linux, Mac, Web browser (+mobile web is planned), without compromises in features
|
||||
* Based on standalone NPM packages, scripts can be run without DbGate (example - [CSV export](https://www.npmjs.com/package/dbgate-plugin-csv) )
|
||||
* Many data browsing functions based using foreign keys - master/detail, expand columns, expandable form view
|
||||
|
||||
## Design goals
|
||||
* Application simplicity - DbGate takes the best and only the best from old DbGate, [DatAdmin](https://www.softpedia.com/get/Internet/Servers/Database-Utils/DatAdmin-Personal.shtml), [DbMouse](https://www.softpedia.com/get/Internet/Servers/Database-Utils/DbMouse.shtml) and [SQL Database Studio](https://en.wikipedia.org/wiki/SQL_Database_Studio)
|
||||
* Minimal dependencies
|
||||
* Frontend - Svelte
|
||||
* Backend - NodeJs, ExpressJs, database connection drivers
|
||||
* JavaScript + TypeScript
|
||||
* App - electron
|
||||
* Platform independent - runs as web application in single docker container on server, or as application using Electron platform on Linux, Windows and Mac
|
||||
|
||||
<!-- ## Plugins
|
||||
Plugins are standard NPM packages published on [npmjs.com](https://www.npmjs.com).
|
||||
See all [existing DbGate plugins](https://www.npmjs.com/search?q=keywords:dbgateplugin).
|
||||
Visit [dbgate generator homepage](https://github.com/dbgate/generator-dbgate) to see, how to create your own plugin.
|
||||
|
||||
Currently following extensions can be implemented using plugins:
|
||||
- File format parsers/writers
|
||||
- Database engine connectors
|
||||
|
||||
Basic set of plugins is part of DbGate git repository and is installed with app. Additional plugins pust be downloaded from NPM (this task is handled by DbGate) -->
|
||||
|
||||
## How to run development environment
|
||||
|
||||
Simple variant - runs WEB application:
|
||||
```sh
|
||||
yarn
|
||||
yarn start
|
||||
```
|
||||
|
||||
If you want more control, run WEB application:
|
||||
```sh
|
||||
yarn # install NPM packages
|
||||
```
|
||||
|
||||
And than run following 3 commands concurrently in 3 terminals:
|
||||
```
|
||||
yarn start:api # run API on port 3000
|
||||
yarn start:web # run web on port 5001
|
||||
yarn lib # watch typescript libraries and plugins modifications
|
||||
```
|
||||
This runs API on port 3000 and web application on port 5001
|
||||
Open http://localhost:5001 in your browser
|
||||
|
||||
If you want to run electron app:
|
||||
```sh
|
||||
yarn # install NPM packages
|
||||
cd app
|
||||
yarn # install NPM packages for electron
|
||||
```
|
||||
|
||||
And than run following 3 commands concurrently in 3 terminals:
|
||||
```
|
||||
yarn start:web # run web on port 5001 (only static JS and HTML files)
|
||||
yarn lib # watch typescript libraries and plugins modifications
|
||||
yarn start:app # run electron app
|
||||
```
|
||||
|
||||
## How to run built electron app locally
|
||||
This mode is very similar to production run of electron app. Electron doesn't use localhost:5001.
|
||||
|
||||
```sh
|
||||
cd app
|
||||
yarn
|
||||
```
|
||||
|
||||
```sh
|
||||
yarn
|
||||
yarn build:app:local
|
||||
yarn start:app:local
|
||||
```
|
||||
|
||||
## How to create plugin
|
||||
Creating plugin is described in [documentation](https://github.com/dbgate/dbgate/wiki/Plugin-development)
|
||||
|
||||
But it is very simple:
|
||||
|
||||
```sh
|
||||
npm install -g yo # install yeoman
|
||||
npm install -g generator-dbgate # install dbgate generator
|
||||
cd dbgate-plugin-my-new-plugin # this directory is created by wizard, edit, what you need to change
|
||||
yarn plugin # this compiles plugin and copies it into existing DbGate installation
|
||||
```
|
||||
|
||||
After restarting DbGate, you could use your new plugin from DbGate.
|
||||
|
||||
## Logging
|
||||
DbGate uses [pinomin logger](https://github.com/dbgate/pinomin). So by default, it produces JSON log messages into console and log files. If you want to see formatted logs, please use [pino-pretty](https://github.com/pinojs/pino-pretty) log formatter.
|
||||
|
|
@ -1,41 +1,40 @@
|
|||
# Running stateful linux containers in docker 
|
||||
# 运行具有状态的 Linux 容器在 Docker 中
|
||||
|
||||
> :warning: This is a complete rewrite, using LXC only without vagrant. It is able to run LXC containers created with v0.1 but
|
||||
> config and usage differs. Use tag v0.1 to get the old version.
|
||||
> :warning: 这是一个完整的重写,仅使用 LXC,不使用 vagrant。它可以运行使用 v0.1 创建的 LXC 容器,但配置和使用方式不同。使用标签 v0.1 获取旧版本。
|
||||
|
||||
Docker Hub: [micwy/lxc](https://hub.docker.com/r/micwy/lxc)
|
||||
Docker Hub: [micwy/lxc](https://hub.docker.com/r/micwy/lxc)
|
||||
|
||||
I'm very impressed, how much pulls this image gets. Please let me know how you use this (just create an issue at github), I'll add this to the "Use-Cases" section.
|
||||
我非常惊讶,这个镜像的拉取次数有多少。请告诉我你是如何使用它的(只需在 github 上创建一个问题),我会将其添加到“用例”部分。
|
||||
|
||||
## Why?
|
||||
## 为什么?
|
||||
|
||||
In some cases, it might be usefull to run full-blown operating systems in a docker environment which have "state", primarily meaning to have a persitent root volume. With docker only, this is not possible since docker does not allow / to be a volume. This is where LXC comes into play. LXC provides a process isolation similar to docker but with statefull root filesystems. Unfortunately, with the rise of docker, management tools for docker are much more widespread and sophisticated than those for LXC.
|
||||
在某些情况下,在具有“状态”的 docker 环境中运行完整的操作系统可能很有用,这主要意味着拥有一个持久的根卷。仅使用 docker 是不可能的,因为 docker 不允许/成为一个卷。这就是 LXC 发挥作用的地方。LXC 提供与 docker 类似的过程隔离,但具有状态化的根文件系统。不幸的是,随着 docker 的兴起,docker 的管理工具比 LXC 的管理工具更为广泛和复杂。
|
||||
|
||||
This project allows to use a single LXC container within a docker container to get best of both worlds.
|
||||
这个项目允许在 docker 容器内使用单个 LXC 容器,以获得两者的最佳效果。
|
||||
|
||||
## Features
|
||||
## 功能
|
||||
|
||||
* Runs a single LXC container in docker with full OS and persistent root
|
||||
* Use features unique to docker for your lxc containers (e.g. docker-compose, exposed ports, traefik for ingress, kubernetes as platform)
|
||||
* The LXC container uses the same limits and network stack as the docker container, so things like exposed ports works as expected
|
||||
* Proper signal handling in both directions (shutting down the docker container properly shuts down the LXC container. Poweroff in LXC shuts down the docker container)
|
||||
* LXCFS support: Within the container, uptime and limits are displayed correctly
|
||||
* Shell-Wrapper: If /bin/sh is invoked with "docker exec", a shell in the LXC container is spawned. So a console in most management tools opens directly within the LXC container, not in the surrounding docker container
|
||||
* Creation of initial root filesystems: for some distributions, an initial root filesystem can simply be set up, using an environment variable
|
||||
* Adding of initial SSH key via environment variable to get instant log-in
|
||||
* 在 docker 中运行单个 LXC 容器,具有完整的操作系统和持久的根
|
||||
* 使用 docker 特有的功能为您的 LXC 容器(例如:docker-compose、暴露端口、traefik 用于入口、Kubernetes 作为平台)
|
||||
* LXC 容器使用与 docker 容器相同的限制和网络堆栈,因此像暴露端口这样的功能按预期工作
|
||||
* 双向正确的信号处理(正确关闭 docker 容器可以正确关闭 LXC 容器。在 LXC 中关机可以关闭 docker 容器)
|
||||
* LXCFS 支持:在容器内,显示正确的运行时间和限制
|
||||
* Shell-Wrapper:如果使用“docker exec”调用/bin/sh,则会在 LXC 容器中启动一个 shell。因此,大多数管理工具中的控制台会直接在 LXC 容器内打开,而不是在周围的 docker 容器中
|
||||
* 创建初始根文件系统:对于某些发行版,可以通过环境变量简单地设置初始根文件系统
|
||||
* 通过环境变量添加初始 SSH 密钥以实现即时登录
|
||||
|
||||
### Some Use-Cases
|
||||
### 一些用例
|
||||
|
||||
* Provide "home containers" for your users, each with own ssh access and persistent state
|
||||
* Run a linux remote desktop server on kubernetes
|
||||
* Easily run statefull software (like froxlor control panel or plesk) on docker/kubernetes
|
||||
* 为您的用户提供“家庭容器”,每个容器都有自己的 ssh 访问权限和持久状态
|
||||
* 在 Kubernetes 上运行 Linux 远程桌面服务器
|
||||
* 轻松在 Docker/Kubernetes 上运行有状态软件(如 froxlor 控制面板或 plesk)
|
||||
|
||||
### Ideas / Backlog
|
||||
### 想法 / 待办事项
|
||||
|
||||
* Support more distribution root filesystems
|
||||
* Import rootfs from vagrant-lxc boxes
|
||||
* 支持更多分发根文件系统
|
||||
* 从 vagrant-lxc 盒子导入 rootfs
|
||||
|
||||
## How to run
|
||||
## 如何运行
|
||||
|
||||
```
|
||||
docker run -d \
|
||||
|
|
@ -47,15 +46,15 @@ docker run -d \
|
|||
-e DISTRIBUTION=alpine \
|
||||
-e INITIAL_SSH_KEY="ssh-rsa AAAA...Q== my-initial-ssh-key" \
|
||||
micwy/lxc
|
||||
```
|
||||
```
|
||||
|
||||
* "privileged" is currently required to run LXC on the container
|
||||
* The hostname is passed into the lxc container
|
||||
* The volume /data contains the root filesystem (under /data/rootfs) and some additional files (temporary root fs during system creation, lxc config)
|
||||
* 目前运行 LXC 在容器中需要"privileged"权限
|
||||
* 主机名传递到 lxc 容器
|
||||
* 卷/data 包含根文件系统(位于/data/rootfs)和一些附加文件(系统创建期间的临时根文件系统,lxc 配置)
|
||||
|
||||
### Running on Kubernetes
|
||||
### 运行于 Kubernetes
|
||||
|
||||
Here's an example yaml to run this on kubernetes. If there's some interest, I can also provide a helm chart.
|
||||
以下是一个在 Kubernetes 上运行的 yaml 示例。如果有兴趣,我也可以提供 helm 图表。
|
||||
|
||||
```
|
||||
---
|
||||
|
|
@ -114,41 +113,45 @@ spec:
|
|||
|
||||
```
|
||||
|
||||
### Environment variables
|
||||
### 环境变量
|
||||
|
||||
* DISTRIBUTION: triggers a distribution specific setup script if /data/rootfs does not exist (see below)
|
||||
* INITIAL_SSH_KEY: if set, it is copied to /root/.ssh/authorized keys on startup if that file does not exist yet
|
||||
* USE_LXCFS (default false): if true, mount [LXCFS](https://github.com/lxc/lxcfs) into the LXC container
|
||||
* :warning: May not work with systemd!
|
||||
* COPY_RESOLV_CONF (default true): if true, copy resolv.conf from docker container into the LXC container
|
||||
* DISTRIBUTION:如果/data/rootfs 不存在,则触发特定分布的设置脚本(见下文)
|
||||
* INITIAL\_SSH\_KEY:如果设置,则在启动时将其复制到/root/.ssh/authorized\_keys,如果该文件尚不存在
|
||||
* USE\_LXCFS(默认为 false):如果为 true,则将 [LXCFS](https://github.com/lxc/lxcfs) 挂载到 LXC 容器中
|
||||
* :warning: 可能与 systemd 不兼容!
|
||||
* COPY\_RESOLV\_CONF(默认为 true):如果为 true,则将 docker 容器中的 resolv.conf 复制到 LXC 容器中
|
||||
|
||||
### Additional volumes
|
||||
### 附加卷
|
||||
|
||||
* the directory /vol of the docker container is mounted with "rbind" into /vol on the LXC container
|
||||
* Every docker-volume that is mounted to /vol/something will appear as /vol/something on LXC
|
||||
* docker 容器的目录/vol 使用“rbind”挂载到 LXC 容器的/vol 上
|
||||
* 每个挂载到/vol/something 的 docker-volume 将显示为/vol/something 在 LXC 上
|
||||
|
||||
### Available distribution setup scripts
|
||||
### 可用的分发设置脚本
|
||||
|
||||
#### DISTRIBUTION: alpine
|
||||
|
||||
Installs alpine if rootfs does not exist.
|
||||
如果 rootfs 不存在,则安装 alpine。
|
||||
|
||||
Features:
|
||||
* Quite minimal image with bash, nano and openssh
|
||||
特性:
|
||||
|
||||
Supported environment variables:
|
||||
* ALPINE_ARCH: (default x86_64): architecture of the rootfs
|
||||
* ALPINE_VERSION: (default latest-stable): alpine version to install
|
||||
* ALPINE_EXTRA_PACKAGES: additional packages to install along with the rootfs
|
||||
* 非常简约的 bash、nano 和 openssh 图像
|
||||
|
||||
#### DISTRIBUTION: archlinux
|
||||
支持的环镜变量:
|
||||
|
||||
Installs archlinux if rootfs does not exist.
|
||||
* ALPINE\_ARCH:(默认 x86\_64):rootfs 的架构
|
||||
* ALPINE\_VERSION: (默认最新稳定版): 安装的 alpine 版本
|
||||
* ALPINE\_EXTRA\_PACKAGES: 伴随 rootfs 一起安装的额外软件包
|
||||
|
||||
Features:
|
||||
* Basic system image with common tools and openssh
|
||||
#### 分发:archlinux
|
||||
|
||||
Supported environment variables:
|
||||
* ARCHLINUX_INSTALL_TRIZEN: (default: true): if true, install the trizen package manager for AUR packages
|
||||
* ARCHLINUX_EXTRA_PACKAGES: additional packages to install along with the rootfs. Installation will be run with trizen if installed, otherwise with pacman
|
||||
* ARCHLINUX_MIRRORLIST_COUNTRY (default: Germany - I confess, I'm biased): Country to use for create an initial packman mirror list
|
||||
如果 rootfs 不存在,则安装 archlinux。
|
||||
|
||||
特性:
|
||||
|
||||
* 基本系统镜像,包含常用工具和 openssh
|
||||
|
||||
支持的环镜变量:
|
||||
|
||||
* ARCHLINUX\_INSTALL\_TRIZEN: (默认:true):如果为 true,则为 AUR 软件包安装 trizen 包管理器
|
||||
* ARCHLINUX\_EXTRA\_PACKAGES:与 rootfs 一起安装的附加包。如果已安装,将使用 trizen 运行安装,否则使用 pacman。
|
||||
* ARCHLINUX\_MIRRORLIST\_COUNTRY(默认:德国 - 我必须承认,我有偏见):用于创建初始 packman 镜像列表的国家。
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
# Running stateful linux containers in docker 
|
||||
|
||||
> :warning: This is a complete rewrite, using LXC only without vagrant. It is able to run LXC containers created with v0.1 but
|
||||
> config and usage differs. Use tag v0.1 to get the old version.
|
||||
|
||||
Docker Hub: [micwy/lxc](https://hub.docker.com/r/micwy/lxc)
|
||||
|
||||
I'm very impressed, how much pulls this image gets. Please let me know how you use this (just create an issue at github), I'll add this to the "Use-Cases" section.
|
||||
|
||||
## Why?
|
||||
|
||||
In some cases, it might be usefull to run full-blown operating systems in a docker environment which have "state", primarily meaning to have a persitent root volume. With docker only, this is not possible since docker does not allow / to be a volume. This is where LXC comes into play. LXC provides a process isolation similar to docker but with statefull root filesystems. Unfortunately, with the rise of docker, management tools for docker are much more widespread and sophisticated than those for LXC.
|
||||
|
||||
This project allows to use a single LXC container within a docker container to get best of both worlds.
|
||||
|
||||
## Features
|
||||
|
||||
* Runs a single LXC container in docker with full OS and persistent root
|
||||
* Use features unique to docker for your lxc containers (e.g. docker-compose, exposed ports, traefik for ingress, kubernetes as platform)
|
||||
* The LXC container uses the same limits and network stack as the docker container, so things like exposed ports works as expected
|
||||
* Proper signal handling in both directions (shutting down the docker container properly shuts down the LXC container. Poweroff in LXC shuts down the docker container)
|
||||
* LXCFS support: Within the container, uptime and limits are displayed correctly
|
||||
* Shell-Wrapper: If /bin/sh is invoked with "docker exec", a shell in the LXC container is spawned. So a console in most management tools opens directly within the LXC container, not in the surrounding docker container
|
||||
* Creation of initial root filesystems: for some distributions, an initial root filesystem can simply be set up, using an environment variable
|
||||
* Adding of initial SSH key via environment variable to get instant log-in
|
||||
|
||||
### Some Use-Cases
|
||||
|
||||
* Provide "home containers" for your users, each with own ssh access and persistent state
|
||||
* Run a linux remote desktop server on kubernetes
|
||||
* Easily run statefull software (like froxlor control panel or plesk) on docker/kubernetes
|
||||
|
||||
### Ideas / Backlog
|
||||
|
||||
* Support more distribution root filesystems
|
||||
* Import rootfs from vagrant-lxc boxes
|
||||
|
||||
## How to run
|
||||
|
||||
```
|
||||
docker run -d \
|
||||
--name lxc \
|
||||
--privileged \
|
||||
--hostname lxctest1 \
|
||||
-v /path/to/data:/data \
|
||||
-v /path/to/somedir:/vol/somedir \
|
||||
-e DISTRIBUTION=alpine \
|
||||
-e INITIAL_SSH_KEY="ssh-rsa AAAA...Q== my-initial-ssh-key" \
|
||||
micwy/lxc
|
||||
```
|
||||
|
||||
* "privileged" is currently required to run LXC on the container
|
||||
* The hostname is passed into the lxc container
|
||||
* The volume /data contains the root filesystem (under /data/rootfs) and some additional files (temporary root fs during system creation, lxc config)
|
||||
|
||||
### Running on Kubernetes
|
||||
|
||||
Here's an example yaml to run this on kubernetes. If there's some interest, I can also provide a helm chart.
|
||||
|
||||
```
|
||||
---
|
||||
# Source: lxc/templates/deployment.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: mylxcbox
|
||||
labels:
|
||||
app.kubernetes.io/name: lxc
|
||||
app.kubernetes.io/instance: mylxcbox
|
||||
spec:
|
||||
replicas:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: lxc
|
||||
app.kubernetes.io/instance: mylxcbox
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: lxc
|
||||
app.kubernetes.io/instance: mylxcbox
|
||||
spec:
|
||||
containers:
|
||||
- name: lxc
|
||||
image: "micwy/lxc:latest"
|
||||
imagePullPolicy: Always
|
||||
# Required to launch lxc containers in the docker container
|
||||
securityContext:
|
||||
privileged: true
|
||||
# Required to make LXC console work
|
||||
stdin: true
|
||||
tty: true
|
||||
ports:
|
||||
- name: ssh
|
||||
containerPort: 22
|
||||
protocol: TCP
|
||||
hostPort: 2201
|
||||
env:
|
||||
- name: "DISTRIBUTION"
|
||||
value: "archlinux"
|
||||
- name: "INITIAL_SSH_KEY"
|
||||
value: "ssh-rsa ...DVs= my-ssh-key"
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: data
|
||||
# Will be passed into the lxc container
|
||||
hostname: mylxcbox
|
||||
volumes:
|
||||
- name: data
|
||||
hostPath:
|
||||
path: /data/mylxcbox
|
||||
# Strategy must be recreate if hostPort is used
|
||||
strategy:
|
||||
type: Recreate
|
||||
|
||||
```
|
||||
|
||||
### Environment variables
|
||||
|
||||
* DISTRIBUTION: triggers a distribution specific setup script if /data/rootfs does not exist (see below)
|
||||
* INITIAL_SSH_KEY: if set, it is copied to /root/.ssh/authorized keys on startup if that file does not exist yet
|
||||
* USE_LXCFS (default false): if true, mount [LXCFS](https://github.com/lxc/lxcfs) into the LXC container
|
||||
* :warning: May not work with systemd!
|
||||
* COPY_RESOLV_CONF (default true): if true, copy resolv.conf from docker container into the LXC container
|
||||
|
||||
### Additional volumes
|
||||
|
||||
* the directory /vol of the docker container is mounted with "rbind" into /vol on the LXC container
|
||||
* Every docker-volume that is mounted to /vol/something will appear as /vol/something on LXC
|
||||
|
||||
### Available distribution setup scripts
|
||||
|
||||
#### DISTRIBUTION: alpine
|
||||
|
||||
Installs alpine if rootfs does not exist.
|
||||
|
||||
Features:
|
||||
* Quite minimal image with bash, nano and openssh
|
||||
|
||||
Supported environment variables:
|
||||
* ALPINE_ARCH: (default x86_64): architecture of the rootfs
|
||||
* ALPINE_VERSION: (default latest-stable): alpine version to install
|
||||
* ALPINE_EXTRA_PACKAGES: additional packages to install along with the rootfs
|
||||
|
||||
#### DISTRIBUTION: archlinux
|
||||
|
||||
Installs archlinux if rootfs does not exist.
|
||||
|
||||
Features:
|
||||
* Basic system image with common tools and openssh
|
||||
|
||||
Supported environment variables:
|
||||
* ARCHLINUX_INSTALL_TRIZEN: (default: true): if true, install the trizen package manager for AUR packages
|
||||
* ARCHLINUX_EXTRA_PACKAGES: additional packages to install along with the rootfs. Installation will be run with trizen if installed, otherwise with pacman
|
||||
* ARCHLINUX_MIRRORLIST_COUNTRY (default: Germany - I confess, I'm biased): Country to use for create an initial packman mirror list
|
||||
|
|
@ -1,57 +1,54 @@
|
|||
<div align="center" width="100%">
|
||||
<img src="https://github.com/louislam/dockge/raw/master/frontend/public/icon.svg" width="128" alt="" />
|
||||
</div>
|
||||

|
||||
|
||||
# Dockge
|
||||
|
||||
A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.
|
||||
一个花哨、易于使用且反应灵敏的自托管 docker compose.yaml 堆栈式管理器。
|
||||
|
||||
   
|
||||
|
||||
<img src="https://github.com/louislam/dockge/assets/1336778/26a583e1-ecb1-4a8d-aedf-76157d714ad7" width="900" alt="" />
|
||||

|
||||
|
||||
View Video: https://youtu.be/AWAlOQeNpgU?t=48
|
||||
观看视频:\[https://youtu.be/AWAlOQeNpgU?t=48\](https://youtu.be/AWAlOQeNpgU?t=48)
|
||||
|
||||
## ⭐ Features
|
||||
|
||||
- Manage `compose.yaml`
|
||||
- Create/Edit/Start/Stop/Restart/Delete
|
||||
- Update Docker Images
|
||||
- Interactive Editor for `compose.yaml`
|
||||
- Interactive Web Terminal
|
||||
- Reactive
|
||||
- Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time
|
||||
- Easy-to-use & fancy UI
|
||||
- If you love Uptime Kuma's UI/UX, you will love this one too
|
||||
- Convert `docker run ...` commands into `compose.yaml`
|
||||
- File based structure
|
||||
- Dockge won't kidnap your compose files, they are stored on your drive as usual. You can interact with them using normal `docker compose` commands
|
||||
<img src="https://github.com/louislam/dockge/assets/1336778/cc071864-592e-4909-b73a-343a57494002" width=300 />
|
||||
## ⭐ 特点
|
||||
|
||||
* 管理 `compose.yaml`
|
||||
* 创建/编辑/启动/停止/重启/删除
|
||||
* 更新 Docker 镜像
|
||||
* `compose.yaml` 的交互式编辑器
|
||||
* 交互式网络终端
|
||||
* 响应式
|
||||
* 一切都很响应。进度(下拉/上拉)和终端输出都是实时的
|
||||
* 易于使用且界面精美
|
||||
* 如果你喜欢 Uptime Kuma 的 UI/UX,你也会喜欢这个
|
||||
* 将 `docker run ...` 命令转换为 `compose.yaml`
|
||||
* 基于文件的架构
|
||||
* Docker 不会绑架你的 compose 文件,它们会像往常一样存储在你的驱动器上。你可以使用正常的 `docker compose` 命令与之交互
|
||||
|
||||

|
||||
|
||||
## 🔧 How to Install
|
||||
## 🔧 如何安装
|
||||
|
||||
Requirements:
|
||||
- [Docker](https://docs.docker.com/engine/install/) 20+ / Podman
|
||||
- (Podman only) podman-docker (Debian: `apt install podman-docker`)
|
||||
- OS:
|
||||
- Major Linux distros that can run Docker/Podman such as:
|
||||
- ✅ Ubuntu
|
||||
- ✅ Debian (Bullseye or newer)
|
||||
- ✅ Raspbian (Bullseye or newer)
|
||||
- ✅ CentOS
|
||||
- ✅ Fedora
|
||||
- ✅ ArchLinux
|
||||
- ❌ Debian/Raspbian Buster or lower is not supported
|
||||
- ❌ Windows (Will be supported later)
|
||||
- Arch: armv7, arm64, amd64 (a.k.a x86_64)
|
||||
要求:
|
||||
|
||||
### Basic
|
||||
* [Docker](https://docs.docker.com/engine/install/) 20+ / Podman
|
||||
* (仅限 Podman)podman-docker(Debian:`apt install podman-docker`)
|
||||
* 操作系统:
|
||||
* 可以运行 Docker/Podman 的主要 Linux 发行版,例如:
|
||||
* ✅ Ubuntu
|
||||
* ✅ Debian(Bullseye 或更新版)
|
||||
* ✅ Raspbian(Bullseye 或更新版)
|
||||
* ✅ CentOS
|
||||
* ✅ Fedora
|
||||
* ✅ ArchLinux
|
||||
* ❌ Debian/Raspbian Buster 或更低版本不受支持
|
||||
* ❌ Windows(将稍后支持)
|
||||
* 架构:armv7, arm64, amd64(即 x86\_64)
|
||||
|
||||
- Default Stacks Directory: `/opt/stacks`
|
||||
- Default Port: 5001
|
||||
### 基本
|
||||
|
||||
* 默认栈目录:`/opt/stacks`
|
||||
* 默认端口:5001
|
||||
|
||||
```
|
||||
# Create directories that store your stacks and stores Dockge's stack
|
||||
|
|
@ -68,98 +65,97 @@ docker compose up -d
|
|||
# docker-compose up -d
|
||||
```
|
||||
|
||||
Dockge is now running on http://localhost:5001
|
||||
Dockge 现在运行在 [http://localhost:5001](http://localhost:5001)
|
||||
|
||||
### Advanced
|
||||
### 高级
|
||||
|
||||
If you want to store your stacks in another directory, you can generate your compose.yaml file by using the following URL with custom query strings.
|
||||
如果您想将栈存储在其他目录,可以使用以下带有自定义查询字符串的 URL 生成您的 compose.yaml 文件。
|
||||
|
||||
```
|
||||
# Download your compose.yaml
|
||||
curl "https://dockge.kuma.pet/compose.yaml?port=5001&stacksPath=/opt/stacks" --output compose.yaml
|
||||
```
|
||||
|
||||
- port=`5001`
|
||||
- stacksPath=`/opt/stacks`
|
||||
* port=`5001`
|
||||
* stacksPath=`/opt/stacks`
|
||||
|
||||
Interactive compose.yaml generator is available on:
|
||||
https://dockge.kuma.pet
|
||||
交互式 compose.yaml 生成器可在以下网址获取: [https://dockge.kuma.pet](https://dockge.kuma.pet)
|
||||
|
||||
## How to Update
|
||||
## 如何更新
|
||||
|
||||
```bash
|
||||
cd /opt/dockge
|
||||
docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
## Screenshots
|
||||
## 屏幕截图
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 动机
|
||||
|
||||
## Motivations
|
||||
* 我已经使用 Portainer 一段时间了,但在堆栈管理方面,我有时对其不太满意。例如,有时我尝试部署堆栈时,加载图标会空转几分钟而没有进展。有时错误信息也不清晰。
|
||||
* 尝试使用 ES 模块 + TypeScript 进行开发(最初,我计划使用 Deno 或 Bun.js,但它们不支持 arm64,所以我退回到 Node.js)
|
||||
|
||||
- I have been using Portainer for some time, but for the stack management, I am sometimes not satisfied with it. For example, sometimes when I try to deploy a stack, the loading icon keeps spinning for a few minutes without progress. And sometimes error messages are not clear.
|
||||
- Try to develop with ES Module + TypeScript (Originally, I planned to use Deno or Bun.js, but they don't have support for arm64, so I stepped back to Node.js)
|
||||
如果您喜欢这个项目,请考虑给它一个⭐。
|
||||
|
||||
If you love this project, please consider giving it a ⭐.
|
||||
## 🗣️ 社区和贡献
|
||||
|
||||
### 错误报告
|
||||
|
||||
## 🗣️ Community and Contribution
|
||||
[https://github.com/louislam/dockge/issues](https://github.com/louislam/dockge/issues)
|
||||
|
||||
### Bug Report
|
||||
https://github.com/louislam/dockge/issues
|
||||
### 寻求帮助/讨论
|
||||
|
||||
### Ask for Help / Discussions
|
||||
https://github.com/louislam/dockge/discussions
|
||||
[https://github.com/louislam/dockge/discussions](https://github.com/louislam/dockge/discussions)
|
||||
|
||||
### Translation
|
||||
If you want to translate Dockge into your language, please read [Translation Guide](https://github.com/louislam/dockge/blob/master/frontend/src/lang/README.md)
|
||||
|
||||
### Create a Pull Request
|
||||
如果您想将 Dockge 翻译成您的语言,请阅读[翻译指南](https://github.com/louislam/dockge/blob/master/frontend/src/lang/README.md)
|
||||
|
||||
Be sure to read the [guide](https://github.com/louislam/dockge/blob/master/CONTRIBUTING.md), as we don't accept all types of pull requests and don't want to waste your time.
|
||||
### 创建一个拉取请求
|
||||
|
||||
## FAQ
|
||||
请务必阅读[指南](https://github.com/louislam/dockge/blob/master/CONTRIBUTING.md) ,因为我们不接受所有类型的拉取请求,也不希望浪费您的时间。
|
||||
|
||||
## 常见问题
|
||||
|
||||
#### "Dockge"?
|
||||
|
||||
"Dockge" is a coinage word which is created by myself. I originally hoped it sounds like `Dodge`, but apparently many people called it `Dockage`, it is also acceptable.
|
||||
"Dockge" 是一个我创造的合成词。我最初希望它听起来像 `Dodge`,但显然很多人称之为 `Dockage`,这也是可以接受的。
|
||||
|
||||
The naming idea came from Twitch emotes like `sadge`, `bedge` or `wokege`. They all end in `-ge`.
|
||||
命名灵感来自 Twitch 表情包,如 `sadge`、`bedge` 或 `wokege`。它们都以 `-ge` 结尾。
|
||||
|
||||
#### Can I manage a single container without `compose.yaml`?
|
||||
#### 我能否在不使用 `compose.yaml` 的情况下管理单个容器?
|
||||
|
||||
The main objective of Dockge is to try to use the docker `compose.yaml` for everything. If you want to manage a single container, you can just use Portainer or Docker CLI.
|
||||
Dockge 的主要目标是尝试使用 docker `compose.yaml` 来处理所有事情。如果您只想管理单个容器,您可以直接使用 Portainer 或 Docker CLI。
|
||||
|
||||
#### Can I manage existing stacks?
|
||||
#### 我能管理现有的堆栈吗?
|
||||
|
||||
Yes, you can. However, you need to move your compose file into the stacks directory:
|
||||
是的,您可以。但是,您需要将您的 compose 文件移动到堆栈目录:
|
||||
|
||||
1. Stop your stack
|
||||
2. Move your compose file into `/opt/stacks/<stackName>/compose.yaml`
|
||||
3. In Dockge, click the " Scan Stacks Folder" button in the top-right corner's dropdown menu
|
||||
4. Now you should see your stack in the list
|
||||
1. 停止您的堆栈
|
||||
2. 将你的 compose 文件移动到 `/opt/stacks/<stackName>/compose.yaml`
|
||||
3. 在 Dockge 中,点击右上角下拉菜单中的“扫描堆叠文件夹”按钮
|
||||
4. 现在你应该能在列表中看到你的堆叠
|
||||
|
||||
#### Is Dockge a Portainer replacement?
|
||||
#### Dockge 是 Portainer 的替代品吗?
|
||||
|
||||
Yes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience.
|
||||
是的或否。Portainer 提供了许多 Docker 功能。而 Dockge 目前仅专注于 docker-compose,拥有更好的用户界面和用户体验。
|
||||
|
||||
If you want to manage your container with docker-compose only, the answer may be yes.
|
||||
如果您只想使用 docker-compose 来管理容器,答案可能是“是”。
|
||||
|
||||
If you still need to manage something like docker networks, single containers, the answer may be no.
|
||||
如果您还需要管理像 docker 网络、单个容器这样的功能,答案可能是“否”。
|
||||
|
||||
#### Can I install both Dockge and Portainer?
|
||||
#### 我能否同时安装 Dockge 和 Portainer?
|
||||
|
||||
Yes, you can.
|
||||
是的,你可以。
|
||||
|
||||
## Others
|
||||
## 其他人
|
||||
|
||||
Dockge is built on top of [Compose V2](https://docs.docker.com/compose/migrate/). `compose.yaml` also known as `docker-compose.yml`.
|
||||
Dockge 是基于 [Compose V2](https://docs.docker.com/compose/migrate/) 构建的。 `compose.yaml` 也称为 `docker-compose.yml`。
|
||||
|
|
@ -0,0 +1,165 @@
|
|||
<div align="center" width="100%">
|
||||
<img src="https://github.com/louislam/dockge/raw/master/frontend/public/icon.svg" width="128" alt="" />
|
||||
</div>
|
||||
|
||||
# Dockge
|
||||
|
||||
A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.
|
||||
|
||||
   
|
||||
|
||||
<img src="https://github.com/louislam/dockge/assets/1336778/26a583e1-ecb1-4a8d-aedf-76157d714ad7" width="900" alt="" />
|
||||
|
||||
View Video: https://youtu.be/AWAlOQeNpgU?t=48
|
||||
|
||||
## ⭐ Features
|
||||
|
||||
- Manage `compose.yaml`
|
||||
- Create/Edit/Start/Stop/Restart/Delete
|
||||
- Update Docker Images
|
||||
- Interactive Editor for `compose.yaml`
|
||||
- Interactive Web Terminal
|
||||
- Reactive
|
||||
- Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time
|
||||
- Easy-to-use & fancy UI
|
||||
- If you love Uptime Kuma's UI/UX, you will love this one too
|
||||
- Convert `docker run ...` commands into `compose.yaml`
|
||||
- File based structure
|
||||
- Dockge won't kidnap your compose files, they are stored on your drive as usual. You can interact with them using normal `docker compose` commands
|
||||
<img src="https://github.com/louislam/dockge/assets/1336778/cc071864-592e-4909-b73a-343a57494002" width=300 />
|
||||
|
||||
|
||||

|
||||
|
||||
## 🔧 How to Install
|
||||
|
||||
Requirements:
|
||||
- [Docker](https://docs.docker.com/engine/install/) 20+ / Podman
|
||||
- (Podman only) podman-docker (Debian: `apt install podman-docker`)
|
||||
- OS:
|
||||
- Major Linux distros that can run Docker/Podman such as:
|
||||
- ✅ Ubuntu
|
||||
- ✅ Debian (Bullseye or newer)
|
||||
- ✅ Raspbian (Bullseye or newer)
|
||||
- ✅ CentOS
|
||||
- ✅ Fedora
|
||||
- ✅ ArchLinux
|
||||
- ❌ Debian/Raspbian Buster or lower is not supported
|
||||
- ❌ Windows (Will be supported later)
|
||||
- Arch: armv7, arm64, amd64 (a.k.a x86_64)
|
||||
|
||||
### Basic
|
||||
|
||||
- Default Stacks Directory: `/opt/stacks`
|
||||
- Default Port: 5001
|
||||
|
||||
```
|
||||
# Create directories that store your stacks and stores Dockge's stack
|
||||
mkdir -p /opt/stacks /opt/dockge
|
||||
cd /opt/dockge
|
||||
|
||||
# Download the compose.yaml
|
||||
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
|
||||
|
||||
# Start the server
|
||||
docker compose up -d
|
||||
|
||||
# If you are using docker-compose V1 or Podman
|
||||
# docker-compose up -d
|
||||
```
|
||||
|
||||
Dockge is now running on http://localhost:5001
|
||||
|
||||
### Advanced
|
||||
|
||||
If you want to store your stacks in another directory, you can generate your compose.yaml file by using the following URL with custom query strings.
|
||||
|
||||
```
|
||||
# Download your compose.yaml
|
||||
curl "https://dockge.kuma.pet/compose.yaml?port=5001&stacksPath=/opt/stacks" --output compose.yaml
|
||||
```
|
||||
|
||||
- port=`5001`
|
||||
- stacksPath=`/opt/stacks`
|
||||
|
||||
Interactive compose.yaml generator is available on:
|
||||
https://dockge.kuma.pet
|
||||
|
||||
## How to Update
|
||||
|
||||
```bash
|
||||
cd /opt/dockge
|
||||
docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
## Motivations
|
||||
|
||||
- I have been using Portainer for some time, but for the stack management, I am sometimes not satisfied with it. For example, sometimes when I try to deploy a stack, the loading icon keeps spinning for a few minutes without progress. And sometimes error messages are not clear.
|
||||
- Try to develop with ES Module + TypeScript (Originally, I planned to use Deno or Bun.js, but they don't have support for arm64, so I stepped back to Node.js)
|
||||
|
||||
If you love this project, please consider giving it a ⭐.
|
||||
|
||||
|
||||
## 🗣️ Community and Contribution
|
||||
|
||||
### Bug Report
|
||||
https://github.com/louislam/dockge/issues
|
||||
|
||||
### Ask for Help / Discussions
|
||||
https://github.com/louislam/dockge/discussions
|
||||
|
||||
### Translation
|
||||
If you want to translate Dockge into your language, please read [Translation Guide](https://github.com/louislam/dockge/blob/master/frontend/src/lang/README.md)
|
||||
|
||||
### Create a Pull Request
|
||||
|
||||
Be sure to read the [guide](https://github.com/louislam/dockge/blob/master/CONTRIBUTING.md), as we don't accept all types of pull requests and don't want to waste your time.
|
||||
|
||||
## FAQ
|
||||
|
||||
#### "Dockge"?
|
||||
|
||||
"Dockge" is a coinage word which is created by myself. I originally hoped it sounds like `Dodge`, but apparently many people called it `Dockage`, it is also acceptable.
|
||||
|
||||
The naming idea came from Twitch emotes like `sadge`, `bedge` or `wokege`. They all end in `-ge`.
|
||||
|
||||
#### Can I manage a single container without `compose.yaml`?
|
||||
|
||||
The main objective of Dockge is to try to use the docker `compose.yaml` for everything. If you want to manage a single container, you can just use Portainer or Docker CLI.
|
||||
|
||||
#### Can I manage existing stacks?
|
||||
|
||||
Yes, you can. However, you need to move your compose file into the stacks directory:
|
||||
|
||||
1. Stop your stack
|
||||
2. Move your compose file into `/opt/stacks/<stackName>/compose.yaml`
|
||||
3. In Dockge, click the " Scan Stacks Folder" button in the top-right corner's dropdown menu
|
||||
4. Now you should see your stack in the list
|
||||
|
||||
#### Is Dockge a Portainer replacement?
|
||||
|
||||
Yes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience.
|
||||
|
||||
If you want to manage your container with docker-compose only, the answer may be yes.
|
||||
|
||||
If you still need to manage something like docker networks, single containers, the answer may be no.
|
||||
|
||||
#### Can I install both Dockge and Portainer?
|
||||
|
||||
Yes, you can.
|
||||
|
||||
## Others
|
||||
|
||||
Dockge is built on top of [Compose V2](https://docs.docker.com/compose/migrate/). `compose.yaml` also known as `docker-compose.yml`.
|
||||
|
|
@ -1,105 +1,66 @@
|
|||
[](https://matrix.to/#/#element-web:matrix.org)
|
||||

|
||||

|
||||
[](https://translate.element.io/engage/element-web/)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://matrix.to/#/#element-web:matrix.org)   [](https://translate.element.io/engage/element-web/) [](https://sonarcloud.io/summary/new_code?id=element-web) [](https://sonarcloud.io/summary/new_code?id=element-web) [](https://sonarcloud.io/summary/new_code?id=element-web) [](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
|
||||
# Element
|
||||
# 元素
|
||||
|
||||
Element (formerly known as Vector and Riot) is a Matrix web client built using the [Matrix
|
||||
React SDK](https://github.com/matrix-org/matrix-react-sdk).
|
||||
Element(以前称为 Vector 和 Riot)是一个使用 [Matrix React SDK](https://github.com/matrix-org/matrix-react-sdk) 构建的 Matrix 网络客户端。
|
||||
|
||||
# Supported Environments
|
||||
# 支持的环境
|
||||
|
||||
Element has several tiers of support for different environments:
|
||||
Element 对不同环境提供了几个支持层级:
|
||||
|
||||
- Supported
|
||||
- Definition: Issues **actively triaged**, regressions **block** the release
|
||||
- Last 2 major versions of Chrome, Firefox, and Edge on desktop OSes
|
||||
- Last 2 versions of Safari
|
||||
- Latest release of official Element Desktop app on desktop OSes
|
||||
- Desktop OSes means macOS, Windows, and Linux versions for desktop devices
|
||||
that are actively supported by the OS vendor and receive security updates
|
||||
- Experimental
|
||||
- Definition: Issues **accepted**, regressions **do not block** the release
|
||||
- Element as an installed PWA via current stable version of Chrome
|
||||
- Mobile web for current stable version of Chrome, Firefox, and Safari on Android, iOS, and iPadOS
|
||||
- Not supported
|
||||
- Definition: Issues only affecting unsupported environments are **closed**
|
||||
- Everything else
|
||||
* 支持
|
||||
* 定义:问题被**积极处理** ,回归问题**阻止**发布
|
||||
* 桌面操作系统上最后两个主要版本的 Chrome、Firefox 和 Edge
|
||||
* Safari 的最后两个版本
|
||||
* 桌面操作系统上官方 Element Desktop 应用的最新版本
|
||||
* 桌面操作系统指的是活跃受 OS 厂商支持并接收安全更新的 macOS、Windows 和 Linux 版本
|
||||
* 实验性功能
|
||||
* 定义:接受的问题,回归问题不阻碍发布
|
||||
* 通过当前稳定版 Chrome 安装的 PWA 元素
|
||||
* 当前稳定版 Chrome、Firefox 和 Safari 在 Android、iOS 和 iPadOS 上的移动网页版本
|
||||
* 不支持
|
||||
* 定义:仅影响不支持环境的问题将被 **关闭**
|
||||
* 其他所有内容
|
||||
|
||||
For accessing Element on an Android or iOS device, we currently recommend the
|
||||
native apps [element-android](https://github.com/vector-im/element-android)
|
||||
and [element-ios](https://github.com/vector-im/element-ios).
|
||||
要访问 Element 在 Android 或 iOS 设备上,我们目前推荐使用原生应用 element-android 和 element-ios。
|
||||
|
||||
# Getting Started
|
||||
# 快速入门
|
||||
|
||||
The easiest way to test Element is to just use the hosted copy at <https://app.element.io>.
|
||||
The `develop` branch is continuously deployed to <https://develop.element.io>
|
||||
for those who like living dangerously.
|
||||
测试 Element 最简单的方法就是使用托管版本 [https://app.element.io](https://app.element.io)。喜欢冒险的人可以将 `develop` 分支持续部署到 [https://develop.element.io](https://develop.element.io)。
|
||||
|
||||
To host your own copy of Element, the quickest bet is to use a pre-built
|
||||
released version of Element:
|
||||
要托管您自己的 Element 版本,最快的方法是使用 Element 的预构建发布版本:
|
||||
|
||||
1. Download the latest version from <https://github.com/vector-im/element-web/releases>
|
||||
1. Untar the tarball on your web server
|
||||
1. Move (or symlink) the `element-x.x.x` directory to an appropriate name
|
||||
1. Configure the correct caching headers in your webserver (see below)
|
||||
1. Configure the app by copying `config.sample.json` to `config.json` and
|
||||
modifying it. See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for details.
|
||||
1. Enter the URL into your browser and log into Element!
|
||||
1. 从 [https://github.com/vector-im/element-web/releases](https://github.com/vector-im/element-web/releases) 下载最新版本
|
||||
2. 在您的 Web 服务器上解压 tarball
|
||||
3. 将 `element-x.x.x` 目录移动到一个合适的名称
|
||||
4. 在你的 Web 服务器上配置正确的缓存头(参见下方)
|
||||
5. 配置应用程序:将 `config.sample.json` 复制到 `config.json` 并进行修改。详情请参见 [配置文档](https://github.com/vector-im/element-web/blob/develop/docs/config.md) 。
|
||||
6. 在浏览器中输入 URL 并登录 Element!
|
||||
|
||||
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
|
||||
at <https://packages.riot.im/element-release-key.asc>.
|
||||
发布使用 gpg 并遵循 OpenPGP 标准进行签名,您可以在此处验证签名:\[https://packages.riot.im/element-release-key.asc\](https://packages.riot.im/element-release-key.asc)
|
||||
|
||||
Note that for the security of your chats will need to serve Element
|
||||
over HTTPS. Major browsers also do not allow you to use VoIP/video
|
||||
chats over HTTP, as WebRTC is only usable over HTTPS.
|
||||
There are some exceptions like when using localhost, which is
|
||||
considered a [secure context](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts)
|
||||
and thus allowed.
|
||||
请注意,为了保证聊天的安全性,您需要通过 HTTPS 服务 Element。主要浏览器也不允许通过 HTTP 进行 VoIP 或视频聊天,因为 WebRTC 只能在 HTTPS 下使用。不过,当使用本地主机时,这被视为一个 [安全上下文](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts) ,因此是允许的。
|
||||
|
||||
To install Element as a desktop application, see [Running as a desktop
|
||||
app](#running-as-a-desktop-app) below.
|
||||
要将 Element 安装为桌面应用程序,请参阅下方的 [以桌面应用方式运行](#running-as-a-desktop-app) 。
|
||||
|
||||
# Important Security Notes
|
||||
# 重要安全注意事项
|
||||
|
||||
## Separate domains
|
||||
## 分离的域名
|
||||
|
||||
We do not recommend running Element from the same domain name as your Matrix
|
||||
homeserver. The reason is the risk of XSS (cross-site-scripting)
|
||||
vulnerabilities that could occur if someone caused Element to load and render
|
||||
malicious user generated content from a Matrix API which then had trusted
|
||||
access to Element (or other apps) due to sharing the same domain.
|
||||
我们不建议从与你的 Matrix 服务器相同的域名运行 Element。原因是,如果有人导致 Element 加载并渲染来自 Matrix API 的恶意用户生成内容,而这些内容由于共享相同的域名,获得了对 Element(或其他应用)的信任访问权限,那么可能会出现跨站脚本(XSS)漏洞。
|
||||
|
||||
We have put some coarse mitigations into place to try to protect against this
|
||||
situation, but it's still not good practice to do it in the first place. See
|
||||
<https://github.com/vector-im/element-web/issues/1977> for more details.
|
||||
我们已经实施了一些粗略的缓解措施,以尽量保护自己不受这种情况的影响, 但首先这样做仍然不是良好的实践。更多详情请参阅 [https://github.com/vector-im/element-web/issues/1977](https://github.com/vector-im/element-web/issues/1977)。
|
||||
|
||||
## Configuration best practices
|
||||
## 配置最佳实践
|
||||
|
||||
Unless you have special requirements, you will want to add the following to
|
||||
your web server configuration when hosting Element Web:
|
||||
除非有特殊需求,否则在托管 Element Web 时,您需要在 web 服务器配置中添加以下内容:
|
||||
|
||||
- The `X-Frame-Options: SAMEORIGIN` header, to prevent Element Web from being
|
||||
framed and protect from [clickjacking][owasp-clickjacking].
|
||||
- The `frame-ancestors 'self'` directive to your `Content-Security-Policy`
|
||||
header, as the modern replacement for `X-Frame-Options` (though both should be
|
||||
included since not all browsers support it yet, see
|
||||
[this][owasp-clickjacking-csp]).
|
||||
- The `X-Content-Type-Options: nosniff` header, to [disable MIME
|
||||
sniffing][mime-sniffing].
|
||||
- The `X-XSS-Protection: 1; mode=block;` header, for basic XSS protection in
|
||||
legacy browsers.
|
||||
* \`X-Frame-Options: SAMEORIGIN\` 头,以防止 Element Web 被嵌入框架,并保护免受点击劫持攻击。
|
||||
* 将 \`frame-ancestors 'self'\` 指令添加到 \`Content-Security-Policy\` 头中,作为 \`X-Frame-Options\` 的现代替代方案(尽管两者都应被使用)。 由于并非所有浏览器都支持,因此包含在此处,请参阅 [this](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html#content-security-policy-frame-ancestors-examples))。
|
||||
* The `X-Content-Type-Options: nosniff` 头,用于禁用 MIME 类型推断。
|
||||
* The `X-XSS-Protection: 1; mode=block;` 头,用于在旧版浏览器中提供基本的 XSS 保护。
|
||||
|
||||
[mime-sniffing]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
|
||||
[owasp-clickjacking-csp]: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html#content-security-policy-frame-ancestors-examples
|
||||
[owasp-clickjacking]: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
|
||||
|
||||
If you are using nginx, this would look something like the following:
|
||||
如果你使用的是 nginx,配置会类似于以下内容:
|
||||
|
||||
```
|
||||
add_header X-Frame-Options SAMEORIGIN;
|
||||
|
|
@ -108,7 +69,7 @@ add_header X-XSS-Protection "1; mode=block";
|
|||
add_header Content-Security-Policy "frame-ancestors 'self'";
|
||||
```
|
||||
|
||||
For Apache, the configuration looks like:
|
||||
对于 Apache,配置如下:
|
||||
|
||||
```
|
||||
Header set X-Frame-Options SAMEORIGIN
|
||||
|
|
@ -117,80 +78,59 @@ Header set X-XSS-Protection "1; mode=block"
|
|||
Header set Content-Security-Policy "frame-ancestors 'self'"
|
||||
```
|
||||
|
||||
Note: In case you are already setting a `Content-Security-Policy` header
|
||||
elsewhere, you should modify it to include the `frame-ancestors` directive
|
||||
instead of adding that last line.
|
||||
注意:如果你已经在其他地方设置了 `Content-Security-Policy` 头,你应该修改它以包含 `frame-ancestors` 指令,而不是添加最后一行。
|
||||
|
||||
# Building From Source
|
||||
# 从源代码构建
|
||||
|
||||
Element is a modular webapp built with modern ES6 and uses a Node.js build system.
|
||||
Ensure you have the latest LTS version of Node.js installed.
|
||||
Element 是一个基于现代 ES6 构建的模块化 web 应用,并使用 Node.js 构建系统。请确保安装了最新版本的 LTS Node.js。
|
||||
|
||||
Using `yarn` instead of `npm` is recommended. Please see the Yarn [install
|
||||
guide](https://classic.yarnpkg.com/en/docs/install) if you do not have it already.
|
||||
使用 \``yarn`\` 而不是 \``npm`\` 是推荐的。如果你还没有安装,请参阅 Yarn 的 [安装指南](https://classic.yarnpkg.com/en/docs/install) 。
|
||||
|
||||
1. Install or update `node.js` so that your `node` is at least the current recommended LTS.
|
||||
1. Install `yarn` if not present already.
|
||||
1. Clone the repo: `git clone https://github.com/vector-im/element-web.git`.
|
||||
1. Switch to the element-web directory: `cd element-web`.
|
||||
1. Install the prerequisites: `yarn install`.
|
||||
- If you're using the `develop` branch, then it is recommended to set up a
|
||||
proper development environment (see [Setting up a dev
|
||||
environment](#setting-up-a-dev-environment) below). Alternatively, you
|
||||
can use <https://develop.element.io> - the continuous integration release of
|
||||
the develop branch.
|
||||
1. Configure the app by copying `config.sample.json` to `config.json` and
|
||||
modifying it. See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for details.
|
||||
1. `yarn dist` to build a tarball to deploy. Untaring this file will give
|
||||
a version-specific directory containing all the files that need to go on your
|
||||
web server.
|
||||
1. 安装或更新 \``node.js`\`,确保你的 \``node`\` 至少是当前推荐的 LTS 版本。
|
||||
2. 如果还没有安装,请安装 \``yarn`\`。
|
||||
3. 克隆仓库: `git clone https://github.com/vector-im/element-web.git`
|
||||
4. 切换到 element-web 目录:\`\`\`cd element-web\`\`\`.
|
||||
5. 安装依赖项:\`\`\`yarn install\`\`\`.
|
||||
* 如果你使用的是 \`\`\`develop\`\`\` 分支,建议设置一个完整的开发环境(参见下方的 [设置开发环境](#setting-up-a-dev-environment) )。或者,你可以使用 [https://develop.element.io](https://develop.element.io) - \`\`\`develop\`\`\` 分支的持续集成发布版本。
|
||||
6. 通过复制 \`\`\`config.sample.json\`\`\` 并重命名为 \`\`\`config.json\`\`\` 并进行修改来配置应用。详情请参见 [配置文档](https://github.com/vector-im/element-web/blob/develop/docs/config.md) 。
|
||||
7. 运行 \``yarn dist`\` 来构建一个 tarball 用于部署。解压此文件会得到一个版本特定的目录,其中包含需要上传到你的 web 服务器的所有文件。
|
||||
|
||||
Note that `yarn dist` is not supported on Windows, so Windows users can run `yarn build`,
|
||||
which will build all the necessary files into the `webapp` directory. The version of Element
|
||||
will not appear in Settings without using the dist script. You can then mount the
|
||||
`webapp` directory on your web server to actually serve up the app, which is
|
||||
entirely static content.
|
||||
请注意,在 Windows 上不支持\``yarn dist`\`,因此 Windows 用户可以运行\``yarn build`\`,这将会把所有必要的文件构建到\``webapp`\`目录中。Element 的版本 不会在设置中出现,除非使用 dist 脚本。然后你可以挂载 将 \``webapp`\` 目录部署到你的 Web 服务器上,以实际提供该应用,该应用完全是静态内容。
|
||||
|
||||
# Running as a Desktop app
|
||||
# 以桌面应用方式运行
|
||||
|
||||
Element can also be run as a desktop app, wrapped in Electron. You can download a
|
||||
pre-built version from <https://element.io/get-started> or, if you prefer,
|
||||
build it yourself.
|
||||
Element 也可以作为一个桌面应用运行,使用 Electron 包装。您可以在 [https://element.io/get-started](https://element.io/get-started) 下载预构建版本,或者如果您愿意,可以自行构建。
|
||||
|
||||
To build it yourself, follow the instructions at <https://github.com/vector-im/element-desktop>.
|
||||
要自行构建,请按照 [https://github.com/vector-im/element-desktop](https://github.com/vector-im/element-desktop) 中的说明操作。
|
||||
|
||||
Many thanks to @aviraldg for the initial work on the Electron integration.
|
||||
非常感谢 @aviraldg 在 Electron 集成方面的初始工作。
|
||||
|
||||
Other options for running as a desktop app:
|
||||
其他作为桌面应用运行的选项:
|
||||
|
||||
- @asdf:matrix.org points out that you can use nativefier and it just works(tm)
|
||||
* @asdf:matrix.org 指出,你可以使用 nativefier,它就能正常工作(tm)
|
||||
|
||||
```bash
|
||||
yarn global add nativefier
|
||||
nativefier https://app.element.io/
|
||||
```
|
||||
|
||||
The [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md#desktop-app-configuration) show how to
|
||||
override the desktop app's default settings if desired.
|
||||
配置文档 [展示了如何覆盖桌面应用的默认设置](https://github.com/vector-im/element-web/blob/develop/docs/config.md#desktop-app-configuration) (如果需要的话)。
|
||||
|
||||
# Running from Docker
|
||||
# 使用 Docker 运行
|
||||
|
||||
The Docker image can be used to serve element-web as a web server. The easiest way to use
|
||||
it is to use the prebuilt image:
|
||||
Docker 镜像可以用来作为 web 服务器运行 element-web。最简单的方法是使用预构建的镜像:
|
||||
|
||||
```bash
|
||||
docker run -p 80:80 vectorim/element-web
|
||||
```
|
||||
|
||||
To supply your own custom `config.json`, map a volume to `/app/config.json`. For example,
|
||||
if your custom config was located at `/etc/element-web/config.json` then your Docker command
|
||||
would be:
|
||||
要提供你自己的自定义 `config.json`,将一个卷映射到 `/app/config.json`。例如,如果你的自定义配置文件位于 `/etc/element-web/config.json`,那么你的 Docker 命令将是:
|
||||
|
||||
```bash
|
||||
docker run -p 80:80 -v /etc/element-web/config.json:/app/config.json vectorim/element-web
|
||||
```
|
||||
|
||||
To build the image yourself:
|
||||
自行构建镜像:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/vector-im/element-web.git element-web
|
||||
|
|
@ -199,8 +139,7 @@ git checkout master
|
|||
docker build .
|
||||
```
|
||||
|
||||
If you're building a custom branch, or want to use the develop branch, check out the appropriate
|
||||
element-web branch and then run:
|
||||
如果你正在构建自定义分支,或者想要使用 develop 分支,请检出相应的 element-web 分支,然后运行:
|
||||
|
||||
```bash
|
||||
docker build -t \
|
||||
|
|
@ -212,24 +151,21 @@ docker build -t \
|
|||
.
|
||||
```
|
||||
|
||||
# Running in Kubernetes
|
||||
# 在 Kubernetes 中运行
|
||||
|
||||
The provided element-web docker image can also be run from within a Kubernetes cluster.
|
||||
See the [Kubernetes example](https://github.com/vector-im/element-web/blob/develop/docs/kubernetes.md) for more details.
|
||||
提供的 element-web docker 镜像也可以在 Kubernetes 集群内部运行。更多详情请参见 [Kubernetes 示例](https://github.com/vector-im/element-web/blob/develop/docs/kubernetes.md) 。
|
||||
|
||||
# config.json
|
||||
|
||||
Element supports a variety of settings to configure default servers, behaviour, themes, etc.
|
||||
See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for more details.
|
||||
Element 支持多种设置来配置默认服务器、行为、主题等。更多详情请参见 [配置文档](https://github.com/vector-im/element-web/blob/develop/docs/config.md) 。
|
||||
|
||||
# Labs Features
|
||||
# 实验室功能
|
||||
|
||||
Some features of Element may be enabled by flags in the `Labs` section of the settings.
|
||||
Some of these features are described in [labs.md](https://github.com/vector-im/element-web/blob/develop/docs/labs.md).
|
||||
Element 的一些功能可能需要在设置中的“实验”部分启用标志才能启用。其中一些功能在 [labs.md](https://github.com/vector-im/element-web/blob/develop/docs/labs.md) 中有描述。
|
||||
|
||||
# Caching requirements
|
||||
# 缓存要求
|
||||
|
||||
Element requires the following URLs not to be cached, when/if you are serving Element from your own webserver:
|
||||
当你从自己的 web 服务器提供 Element 时,Element 需要以下 URL 不被缓存:
|
||||
|
||||
```
|
||||
/config.*.json
|
||||
|
|
@ -239,49 +175,27 @@ Element requires the following URLs not to be cached, when/if you are serving El
|
|||
/index.html
|
||||
```
|
||||
|
||||
We also recommend that you force browsers to re-validate any cached copy of Element on page load by configuring your
|
||||
webserver to return `Cache-Control: no-cache` for `/`. This ensures the browser will fetch a new version of Element on
|
||||
the next page load after it's been deployed. Note that this is already configured for you in the nginx config of our
|
||||
Dockerfile.
|
||||
我们还建议通过配置 web 服务器,使其在页面加载时返回 `Cache-Control: no-cache` 对于 `/`,强制浏览器重新验证任何缓存的 Element 副本。这可以确保在部署后,浏览器会在下一次页面加载时获取 Element 的新版本。请注意,这已经在我们 Dockerfile 的 nginx 配置中为你配置好了。
|
||||
|
||||
# Development
|
||||
# 开发
|
||||
|
||||
Before attempting to develop on Element you **must** read the [developer guide
|
||||
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk#developer-guide), which
|
||||
also defines the design, architecture and style for Element too.
|
||||
在尝试对 Element 进行开发之前,你**必须**阅读 [matrix-react-sdk 的开发指南](https://github.com/matrix-org/matrix-react-sdk#developer-guide) ,该指南还定义了 Element 的设计、架构和样式。
|
||||
|
||||
Read the [Choosing an issue](https://github.com/vector-im/element-web/blob/develop/docs/choosing-an-issue.md) page for some guidance
|
||||
about where to start. Before starting work on a feature, it's best to ensure
|
||||
your plan aligns well with our vision for Element. Please chat with the team in
|
||||
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before
|
||||
you start so we can ensure it's something we'd be willing to merge.
|
||||
阅读[选择问题](https://github.com/vector-im/element-web/blob/develop/docs/choosing-an-issue.md)页面以获得一些指导 在开始工作之前,最好先确定从哪里开始。在着手开发一个新功能之前,最好确保 你的计划与我们对 Element 的愿景非常契合。请与团队进行交流。 在开始之前,请访问 [#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org),以便我们可以确认这是否是我们愿意合并的内容。
|
||||
|
||||
You should also familiarise yourself with the ["Here be Dragons" guide
|
||||
](https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM)
|
||||
to the tame & not-so-tame dragons (gotchas) which exist in the codebase.
|
||||
你也应该熟悉一下《Here be Dragons》指南,了解代码库中存在的 tame 和不那么 tame 的 dragons(注意事项)。
|
||||
|
||||
The idea of Element is to be a relatively lightweight "skin" of customisations on
|
||||
top of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the
|
||||
higher and lower level React components useful for building Matrix communication
|
||||
apps using React.
|
||||
Element 的设计理念是作为底层 matrix-react-sdk 的相对轻量级“皮肤”,在其上进行自定义。matrix-react-sdk 提供了构建基于 React 的 Matrix 通信应用所需的高、低级别 React 组件。
|
||||
|
||||
Please note that Element is intended to run correctly without access to the public
|
||||
internet. So please don't depend on resources (JS libs, CSS, images, fonts)
|
||||
hosted by external CDNs or servers but instead please package all dependencies
|
||||
into Element itself.
|
||||
请注意,Element 设计为在不连接公共互联网的情况下也能正确运行。因此,请不要依赖由外部 CDN 或服务器托管的资源(如 JS 库、CSS、图片、字体),而是将所有依赖项打包到 Element 本身中。
|
||||
|
||||
CSS hot-reload is available as an opt-in development feature. You can enable it
|
||||
by defining a `CSS_HOT_RELOAD` environment variable, in a `.env` file in the root
|
||||
of the repository. See `.env.example` for documentation and an example.
|
||||
CSS 热重载作为可选的开发功能可用。你可以在仓库根目录的 .env 文件中定义一个 CSS\_HOT\_RELOAD 环境变量来启用它。请参阅 .env.example 文件以获取文档和示例。
|
||||
|
||||
# Setting up a dev environment
|
||||
# 设置开发环境
|
||||
|
||||
Much of the functionality in Element is actually in the `matrix-react-sdk` and
|
||||
`matrix-js-sdk` modules. It is possible to set these up in a way that makes it
|
||||
easy to track the `develop` branches in git and to make local changes without
|
||||
having to manually rebuild each time.
|
||||
Element 的许多功能实际上在 `matrix-react-sdk` 中实现的,并 \`matrix-js-sdk\` 模块。可以设置这些模块以便于跟踪 git 中的 \`develop\` 分支,并且可以在本地进行修改而无需每次手动重新构建。
|
||||
|
||||
First clone and build `matrix-js-sdk`:
|
||||
首先克隆并构建 `matrix-js-sdk`:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/matrix-org/matrix-js-sdk.git
|
||||
|
|
@ -291,7 +205,7 @@ yarn install
|
|||
popd
|
||||
```
|
||||
|
||||
Then similarly with `matrix-react-sdk`:
|
||||
然后像 \``matrix-react-sdk`\` 一样:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/matrix-org/matrix-react-sdk.git
|
||||
|
|
@ -302,17 +216,16 @@ yarn install
|
|||
popd
|
||||
```
|
||||
|
||||
Clone the repo and switch to the `element-web` directory:
|
||||
克隆仓库并切换到 `element-web` 目录:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/vector-im/element-web.git
|
||||
cd element-web
|
||||
```
|
||||
|
||||
Configure the app by copying `config.sample.json` to `config.json` and
|
||||
modifying it. See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for details.
|
||||
通过复制 `config.sample.json` 为 `config.json` 并对其进行修改来配置应用。详情请参阅 [配置文档](https://github.com/vector-im/element-web/blob/develop/docs/config.md) 。
|
||||
|
||||
Finally, build and start Element itself:
|
||||
最后,构建并启动 Element 本身:
|
||||
|
||||
```bash
|
||||
yarn link matrix-js-sdk
|
||||
|
|
@ -321,7 +234,7 @@ yarn install
|
|||
yarn start
|
||||
```
|
||||
|
||||
Wait a few seconds for the initial build to finish; you should see something like:
|
||||
等待几秒钟以完成初始构建;你应该会看到类似的内容:
|
||||
|
||||
```
|
||||
[element-js] <s> [webpack.Progress] 100%
|
||||
|
|
@ -330,21 +243,15 @@ Wait a few seconds for the initial build to finish; you should see something lik
|
|||
[element-js] ℹ 「wdm」: Compiled successfully.
|
||||
```
|
||||
|
||||
Remember, the command will not terminate since it runs the web server
|
||||
and rebuilds source files when they change. This development server also
|
||||
disables caching, so do NOT use it in production.
|
||||
请记住,该命令不会终止,因为它会运行 Web 服务器并在源文件更改时重建文件。此开发服务器还禁用了缓存,因此请勿在生产环境中使用它。
|
||||
|
||||
Open <http://127.0.0.1:8080/> in your browser to see your newly built Element.
|
||||
在浏览器中打开 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) 查看您新构建的 Element。
|
||||
|
||||
**Note**: The build script uses inotify by default on Linux to monitor directories
|
||||
for changes. If the inotify limits are too low your build will fail silently or with
|
||||
`Error: EMFILE: too many open files`. To avoid these issues, we recommend a watch limit
|
||||
of at least `128M` and instance limit around `512`.
|
||||
**注意** :构建脚本默认在 Linux 上使用 inotify 监控目录 以检测更改。如果 inotify 限制过低,您的构建可能会静默失败或失败。 为了避免这些问题,我们建议设置最多监视器数量为至少 128M,并且实例数量约为 512。
|
||||
|
||||
You may be interested in issues [#15750](https://github.com/vector-im/element-web/issues/15750) and
|
||||
[#15774](https://github.com/vector-im/element-web/issues/15774) for further details.
|
||||
你可能对问题 [#15750](https://github.com/vector-im/element-web/issues/15750) 感兴趣和 \[1#15774\](#1) 以获取更多信息。
|
||||
|
||||
To set a new inotify watch and instance limit, execute:
|
||||
要设置新的 inotify 监视器和实例限制,请执行:
|
||||
|
||||
```
|
||||
sudo sysctl fs.inotify.max_user_watches=131072
|
||||
|
|
@ -352,7 +259,7 @@ sudo sysctl fs.inotify.max_user_instances=512
|
|||
sudo sysctl -p
|
||||
```
|
||||
|
||||
If you wish, you can make the new limits permanent, by executing:
|
||||
如果你愿意,可以通过执行以下命令使新的限制永久生效:
|
||||
|
||||
```
|
||||
echo fs.inotify.max_user_watches=131072 | sudo tee -a /etc/sysctl.conf
|
||||
|
|
@ -360,38 +267,34 @@ echo fs.inotify.max_user_instances=512 | sudo tee -a /etc/sysctl.conf
|
|||
sudo sysctl -p
|
||||
```
|
||||
|
||||
---
|
||||
* * *
|
||||
|
||||
When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be
|
||||
automatically picked up by webpack and built.
|
||||
当你对 `matrix-react-sdk` 或 `matrix-js-sdk` 进行修改时,webpack 应该会自动检测并构建这些更改。
|
||||
|
||||
If any of these steps error with, `file table overflow`, you are probably on a mac
|
||||
which has a very low limit on max open files. Run `ulimit -Sn 1024` and try again.
|
||||
You'll need to do this in each new terminal you open before building Element.
|
||||
如果在执行这些步骤时遇到`文件表溢出`错误,你可能使用的是 mac 系统,其最大打开文件数的限制非常低。可以运行 `ulimit -Sn 1024` 并重新尝试。在每次打开新的终端窗口进行构建 Element 之前,都需要执行此操作。
|
||||
|
||||
## Running the tests
|
||||
## 运行测试
|
||||
|
||||
There are a number of application-level tests in the `tests` directory; these
|
||||
are designed to run with Jest and JSDOM. To run them
|
||||
在 \``tests`\` 目录中有若干应用级测试;这些测试设计为与 Jest 和 JSDOM 一起运行。要运行这些测试,请参阅相关文档。
|
||||
|
||||
```
|
||||
yarn test
|
||||
```
|
||||
|
||||
### End-to-End tests
|
||||
### 端到端测试
|
||||
|
||||
See [matrix-react-sdk](https://github.com/matrix-org/matrix-react-sdk/#end-to-end-tests) for how to run the end-to-end tests.
|
||||
有关如何运行端到端测试,请参阅 [matrix-react-sdk](https://github.com/matrix-org/matrix-react-sdk/#end-to-end-tests)。
|
||||
|
||||
# Translations
|
||||
# 翻译
|
||||
|
||||
To add a new translation, head to the [translating doc](https://github.com/vector-im/element-web/blob/develop/docs/translating.md).
|
||||
要添加新的翻译,请前往 [翻译文档](https://github.com/vector-im/element-web/blob/develop/docs/translating.md) 。
|
||||
|
||||
For a developer guide, see the [translating dev doc](https://github.com/vector-im/element-web/blob/develop/docs/translating-dev.md).
|
||||
对于开发人员指南,请参阅[翻译开发文档](https://github.com/vector-im/element-web/blob/develop/docs/translating-dev.md) 。
|
||||
|
||||
[<img src="https://translate.element.io/widgets/element-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.element.io/engage/element-web/?utm_source=widget)
|
||||
[](https://translate.element.io/engage/element-web/?utm_source=widget)
|
||||
|
||||
# Triaging issues
|
||||
# 处理问题
|
||||
|
||||
Issues are triaged by community members and the Web App Team, following the [triage process](https://github.com/vector-im/element-meta/wiki/Triage-process).
|
||||
问题由社区成员和 Web 应用团队按照[处理流程](https://github.com/vector-im/element-meta/wiki/Triage-process)进行分类处理。
|
||||
|
||||
We use [issue labels](https://github.com/vector-im/element-meta/wiki/Issue-labelling) to sort all incoming issues.
|
||||
我们使用[问题标签](https://github.com/vector-im/element-meta/wiki/Issue-labelling)来整理所有收到的问题。
|
||||
|
|
@ -0,0 +1,397 @@
|
|||
[](https://matrix.to/#/#element-web:matrix.org)
|
||||

|
||||

|
||||
[](https://translate.element.io/engage/element-web/)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
[](https://sonarcloud.io/summary/new_code?id=element-web)
|
||||
|
||||
# Element
|
||||
|
||||
Element (formerly known as Vector and Riot) is a Matrix web client built using the [Matrix
|
||||
React SDK](https://github.com/matrix-org/matrix-react-sdk).
|
||||
|
||||
# Supported Environments
|
||||
|
||||
Element has several tiers of support for different environments:
|
||||
|
||||
- Supported
|
||||
- Definition: Issues **actively triaged**, regressions **block** the release
|
||||
- Last 2 major versions of Chrome, Firefox, and Edge on desktop OSes
|
||||
- Last 2 versions of Safari
|
||||
- Latest release of official Element Desktop app on desktop OSes
|
||||
- Desktop OSes means macOS, Windows, and Linux versions for desktop devices
|
||||
that are actively supported by the OS vendor and receive security updates
|
||||
- Experimental
|
||||
- Definition: Issues **accepted**, regressions **do not block** the release
|
||||
- Element as an installed PWA via current stable version of Chrome
|
||||
- Mobile web for current stable version of Chrome, Firefox, and Safari on Android, iOS, and iPadOS
|
||||
- Not supported
|
||||
- Definition: Issues only affecting unsupported environments are **closed**
|
||||
- Everything else
|
||||
|
||||
For accessing Element on an Android or iOS device, we currently recommend the
|
||||
native apps [element-android](https://github.com/vector-im/element-android)
|
||||
and [element-ios](https://github.com/vector-im/element-ios).
|
||||
|
||||
# Getting Started
|
||||
|
||||
The easiest way to test Element is to just use the hosted copy at <https://app.element.io>.
|
||||
The `develop` branch is continuously deployed to <https://develop.element.io>
|
||||
for those who like living dangerously.
|
||||
|
||||
To host your own copy of Element, the quickest bet is to use a pre-built
|
||||
released version of Element:
|
||||
|
||||
1. Download the latest version from <https://github.com/vector-im/element-web/releases>
|
||||
1. Untar the tarball on your web server
|
||||
1. Move (or symlink) the `element-x.x.x` directory to an appropriate name
|
||||
1. Configure the correct caching headers in your webserver (see below)
|
||||
1. Configure the app by copying `config.sample.json` to `config.json` and
|
||||
modifying it. See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for details.
|
||||
1. Enter the URL into your browser and log into Element!
|
||||
|
||||
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
|
||||
at <https://packages.riot.im/element-release-key.asc>.
|
||||
|
||||
Note that for the security of your chats will need to serve Element
|
||||
over HTTPS. Major browsers also do not allow you to use VoIP/video
|
||||
chats over HTTP, as WebRTC is only usable over HTTPS.
|
||||
There are some exceptions like when using localhost, which is
|
||||
considered a [secure context](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts)
|
||||
and thus allowed.
|
||||
|
||||
To install Element as a desktop application, see [Running as a desktop
|
||||
app](#running-as-a-desktop-app) below.
|
||||
|
||||
# Important Security Notes
|
||||
|
||||
## Separate domains
|
||||
|
||||
We do not recommend running Element from the same domain name as your Matrix
|
||||
homeserver. The reason is the risk of XSS (cross-site-scripting)
|
||||
vulnerabilities that could occur if someone caused Element to load and render
|
||||
malicious user generated content from a Matrix API which then had trusted
|
||||
access to Element (or other apps) due to sharing the same domain.
|
||||
|
||||
We have put some coarse mitigations into place to try to protect against this
|
||||
situation, but it's still not good practice to do it in the first place. See
|
||||
<https://github.com/vector-im/element-web/issues/1977> for more details.
|
||||
|
||||
## Configuration best practices
|
||||
|
||||
Unless you have special requirements, you will want to add the following to
|
||||
your web server configuration when hosting Element Web:
|
||||
|
||||
- The `X-Frame-Options: SAMEORIGIN` header, to prevent Element Web from being
|
||||
framed and protect from [clickjacking][owasp-clickjacking].
|
||||
- The `frame-ancestors 'self'` directive to your `Content-Security-Policy`
|
||||
header, as the modern replacement for `X-Frame-Options` (though both should be
|
||||
included since not all browsers support it yet, see
|
||||
[this][owasp-clickjacking-csp]).
|
||||
- The `X-Content-Type-Options: nosniff` header, to [disable MIME
|
||||
sniffing][mime-sniffing].
|
||||
- The `X-XSS-Protection: 1; mode=block;` header, for basic XSS protection in
|
||||
legacy browsers.
|
||||
|
||||
[mime-sniffing]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
|
||||
[owasp-clickjacking-csp]: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html#content-security-policy-frame-ancestors-examples
|
||||
[owasp-clickjacking]: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
|
||||
|
||||
If you are using nginx, this would look something like the following:
|
||||
|
||||
```
|
||||
add_header X-Frame-Options SAMEORIGIN;
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header Content-Security-Policy "frame-ancestors 'self'";
|
||||
```
|
||||
|
||||
For Apache, the configuration looks like:
|
||||
|
||||
```
|
||||
Header set X-Frame-Options SAMEORIGIN
|
||||
Header set X-Content-Type-Options nosniff
|
||||
Header set X-XSS-Protection "1; mode=block"
|
||||
Header set Content-Security-Policy "frame-ancestors 'self'"
|
||||
```
|
||||
|
||||
Note: In case you are already setting a `Content-Security-Policy` header
|
||||
elsewhere, you should modify it to include the `frame-ancestors` directive
|
||||
instead of adding that last line.
|
||||
|
||||
# Building From Source
|
||||
|
||||
Element is a modular webapp built with modern ES6 and uses a Node.js build system.
|
||||
Ensure you have the latest LTS version of Node.js installed.
|
||||
|
||||
Using `yarn` instead of `npm` is recommended. Please see the Yarn [install
|
||||
guide](https://classic.yarnpkg.com/en/docs/install) if you do not have it already.
|
||||
|
||||
1. Install or update `node.js` so that your `node` is at least the current recommended LTS.
|
||||
1. Install `yarn` if not present already.
|
||||
1. Clone the repo: `git clone https://github.com/vector-im/element-web.git`.
|
||||
1. Switch to the element-web directory: `cd element-web`.
|
||||
1. Install the prerequisites: `yarn install`.
|
||||
- If you're using the `develop` branch, then it is recommended to set up a
|
||||
proper development environment (see [Setting up a dev
|
||||
environment](#setting-up-a-dev-environment) below). Alternatively, you
|
||||
can use <https://develop.element.io> - the continuous integration release of
|
||||
the develop branch.
|
||||
1. Configure the app by copying `config.sample.json` to `config.json` and
|
||||
modifying it. See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for details.
|
||||
1. `yarn dist` to build a tarball to deploy. Untaring this file will give
|
||||
a version-specific directory containing all the files that need to go on your
|
||||
web server.
|
||||
|
||||
Note that `yarn dist` is not supported on Windows, so Windows users can run `yarn build`,
|
||||
which will build all the necessary files into the `webapp` directory. The version of Element
|
||||
will not appear in Settings without using the dist script. You can then mount the
|
||||
`webapp` directory on your web server to actually serve up the app, which is
|
||||
entirely static content.
|
||||
|
||||
# Running as a Desktop app
|
||||
|
||||
Element can also be run as a desktop app, wrapped in Electron. You can download a
|
||||
pre-built version from <https://element.io/get-started> or, if you prefer,
|
||||
build it yourself.
|
||||
|
||||
To build it yourself, follow the instructions at <https://github.com/vector-im/element-desktop>.
|
||||
|
||||
Many thanks to @aviraldg for the initial work on the Electron integration.
|
||||
|
||||
Other options for running as a desktop app:
|
||||
|
||||
- @asdf:matrix.org points out that you can use nativefier and it just works(tm)
|
||||
|
||||
```bash
|
||||
yarn global add nativefier
|
||||
nativefier https://app.element.io/
|
||||
```
|
||||
|
||||
The [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md#desktop-app-configuration) show how to
|
||||
override the desktop app's default settings if desired.
|
||||
|
||||
# Running from Docker
|
||||
|
||||
The Docker image can be used to serve element-web as a web server. The easiest way to use
|
||||
it is to use the prebuilt image:
|
||||
|
||||
```bash
|
||||
docker run -p 80:80 vectorim/element-web
|
||||
```
|
||||
|
||||
To supply your own custom `config.json`, map a volume to `/app/config.json`. For example,
|
||||
if your custom config was located at `/etc/element-web/config.json` then your Docker command
|
||||
would be:
|
||||
|
||||
```bash
|
||||
docker run -p 80:80 -v /etc/element-web/config.json:/app/config.json vectorim/element-web
|
||||
```
|
||||
|
||||
To build the image yourself:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/vector-im/element-web.git element-web
|
||||
cd element-web
|
||||
git checkout master
|
||||
docker build .
|
||||
```
|
||||
|
||||
If you're building a custom branch, or want to use the develop branch, check out the appropriate
|
||||
element-web branch and then run:
|
||||
|
||||
```bash
|
||||
docker build -t \
|
||||
--build-arg USE_CUSTOM_SDKS=true \
|
||||
--build-arg REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" \
|
||||
--build-arg REACT_SDK_BRANCH="develop" \
|
||||
--build-arg JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git" \
|
||||
--build-arg JS_SDK_BRANCH="develop" \
|
||||
.
|
||||
```
|
||||
|
||||
# Running in Kubernetes
|
||||
|
||||
The provided element-web docker image can also be run from within a Kubernetes cluster.
|
||||
See the [Kubernetes example](https://github.com/vector-im/element-web/blob/develop/docs/kubernetes.md) for more details.
|
||||
|
||||
# config.json
|
||||
|
||||
Element supports a variety of settings to configure default servers, behaviour, themes, etc.
|
||||
See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for more details.
|
||||
|
||||
# Labs Features
|
||||
|
||||
Some features of Element may be enabled by flags in the `Labs` section of the settings.
|
||||
Some of these features are described in [labs.md](https://github.com/vector-im/element-web/blob/develop/docs/labs.md).
|
||||
|
||||
# Caching requirements
|
||||
|
||||
Element requires the following URLs not to be cached, when/if you are serving Element from your own webserver:
|
||||
|
||||
```
|
||||
/config.*.json
|
||||
/i18n
|
||||
/home
|
||||
/sites
|
||||
/index.html
|
||||
```
|
||||
|
||||
We also recommend that you force browsers to re-validate any cached copy of Element on page load by configuring your
|
||||
webserver to return `Cache-Control: no-cache` for `/`. This ensures the browser will fetch a new version of Element on
|
||||
the next page load after it's been deployed. Note that this is already configured for you in the nginx config of our
|
||||
Dockerfile.
|
||||
|
||||
# Development
|
||||
|
||||
Before attempting to develop on Element you **must** read the [developer guide
|
||||
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk#developer-guide), which
|
||||
also defines the design, architecture and style for Element too.
|
||||
|
||||
Read the [Choosing an issue](https://github.com/vector-im/element-web/blob/develop/docs/choosing-an-issue.md) page for some guidance
|
||||
about where to start. Before starting work on a feature, it's best to ensure
|
||||
your plan aligns well with our vision for Element. Please chat with the team in
|
||||
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before
|
||||
you start so we can ensure it's something we'd be willing to merge.
|
||||
|
||||
You should also familiarise yourself with the ["Here be Dragons" guide
|
||||
](https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM)
|
||||
to the tame & not-so-tame dragons (gotchas) which exist in the codebase.
|
||||
|
||||
The idea of Element is to be a relatively lightweight "skin" of customisations on
|
||||
top of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the
|
||||
higher and lower level React components useful for building Matrix communication
|
||||
apps using React.
|
||||
|
||||
Please note that Element is intended to run correctly without access to the public
|
||||
internet. So please don't depend on resources (JS libs, CSS, images, fonts)
|
||||
hosted by external CDNs or servers but instead please package all dependencies
|
||||
into Element itself.
|
||||
|
||||
CSS hot-reload is available as an opt-in development feature. You can enable it
|
||||
by defining a `CSS_HOT_RELOAD` environment variable, in a `.env` file in the root
|
||||
of the repository. See `.env.example` for documentation and an example.
|
||||
|
||||
# Setting up a dev environment
|
||||
|
||||
Much of the functionality in Element is actually in the `matrix-react-sdk` and
|
||||
`matrix-js-sdk` modules. It is possible to set these up in a way that makes it
|
||||
easy to track the `develop` branches in git and to make local changes without
|
||||
having to manually rebuild each time.
|
||||
|
||||
First clone and build `matrix-js-sdk`:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/matrix-org/matrix-js-sdk.git
|
||||
pushd matrix-js-sdk
|
||||
yarn link
|
||||
yarn install
|
||||
popd
|
||||
```
|
||||
|
||||
Then similarly with `matrix-react-sdk`:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/matrix-org/matrix-react-sdk.git
|
||||
pushd matrix-react-sdk
|
||||
yarn link
|
||||
yarn link matrix-js-sdk
|
||||
yarn install
|
||||
popd
|
||||
```
|
||||
|
||||
Clone the repo and switch to the `element-web` directory:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/vector-im/element-web.git
|
||||
cd element-web
|
||||
```
|
||||
|
||||
Configure the app by copying `config.sample.json` to `config.json` and
|
||||
modifying it. See the [configuration docs](https://github.com/vector-im/element-web/blob/develop/docs/config.md) for details.
|
||||
|
||||
Finally, build and start Element itself:
|
||||
|
||||
```bash
|
||||
yarn link matrix-js-sdk
|
||||
yarn link matrix-react-sdk
|
||||
yarn install
|
||||
yarn start
|
||||
```
|
||||
|
||||
Wait a few seconds for the initial build to finish; you should see something like:
|
||||
|
||||
```
|
||||
[element-js] <s> [webpack.Progress] 100%
|
||||
[element-js]
|
||||
[element-js] ℹ 「wdm」: 1840 modules
|
||||
[element-js] ℹ 「wdm」: Compiled successfully.
|
||||
```
|
||||
|
||||
Remember, the command will not terminate since it runs the web server
|
||||
and rebuilds source files when they change. This development server also
|
||||
disables caching, so do NOT use it in production.
|
||||
|
||||
Open <http://127.0.0.1:8080/> in your browser to see your newly built Element.
|
||||
|
||||
**Note**: The build script uses inotify by default on Linux to monitor directories
|
||||
for changes. If the inotify limits are too low your build will fail silently or with
|
||||
`Error: EMFILE: too many open files`. To avoid these issues, we recommend a watch limit
|
||||
of at least `128M` and instance limit around `512`.
|
||||
|
||||
You may be interested in issues [#15750](https://github.com/vector-im/element-web/issues/15750) and
|
||||
[#15774](https://github.com/vector-im/element-web/issues/15774) for further details.
|
||||
|
||||
To set a new inotify watch and instance limit, execute:
|
||||
|
||||
```
|
||||
sudo sysctl fs.inotify.max_user_watches=131072
|
||||
sudo sysctl fs.inotify.max_user_instances=512
|
||||
sudo sysctl -p
|
||||
```
|
||||
|
||||
If you wish, you can make the new limits permanent, by executing:
|
||||
|
||||
```
|
||||
echo fs.inotify.max_user_watches=131072 | sudo tee -a /etc/sysctl.conf
|
||||
echo fs.inotify.max_user_instances=512 | sudo tee -a /etc/sysctl.conf
|
||||
sudo sysctl -p
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be
|
||||
automatically picked up by webpack and built.
|
||||
|
||||
If any of these steps error with, `file table overflow`, you are probably on a mac
|
||||
which has a very low limit on max open files. Run `ulimit -Sn 1024` and try again.
|
||||
You'll need to do this in each new terminal you open before building Element.
|
||||
|
||||
## Running the tests
|
||||
|
||||
There are a number of application-level tests in the `tests` directory; these
|
||||
are designed to run with Jest and JSDOM. To run them
|
||||
|
||||
```
|
||||
yarn test
|
||||
```
|
||||
|
||||
### End-to-End tests
|
||||
|
||||
See [matrix-react-sdk](https://github.com/matrix-org/matrix-react-sdk/#end-to-end-tests) for how to run the end-to-end tests.
|
||||
|
||||
# Translations
|
||||
|
||||
To add a new translation, head to the [translating doc](https://github.com/vector-im/element-web/blob/develop/docs/translating.md).
|
||||
|
||||
For a developer guide, see the [translating dev doc](https://github.com/vector-im/element-web/blob/develop/docs/translating-dev.md).
|
||||
|
||||
[<img src="https://translate.element.io/widgets/element-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.element.io/engage/element-web/?utm_source=widget)
|
||||
|
||||
# Triaging issues
|
||||
|
||||
Issues are triaged by community members and the Web App Team, following the [triage process](https://github.com/vector-im/element-meta/wiki/Triage-process).
|
||||
|
||||
We use [issue labels](https://github.com/vector-im/element-meta/wiki/Issue-labelling) to sort all incoming issues.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# 使用说明
|
||||
|
||||
- 默认账户密码
|
||||
* 默认账户密码
|
||||
|
||||
```
|
||||
username:admin
|
||||
|
|
@ -9,36 +9,30 @@ password:admin
|
|||
|
||||
# 原始相关
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/filebrowser/logo/master/banner.png" width="550"/>
|
||||
</p>
|
||||

|
||||
|
||||

|
||||
|
||||
[](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml)
|
||||
[](https://goreportcard.com/report/github.com/filebrowser/filebrowser)
|
||||
[](http://godoc.org/github.com/filebrowser/filebrowser)
|
||||
[](https://github.com/filebrowser/filebrowser/releases/latest)
|
||||
[](http://webchat.freenode.net/?channels=%23filebrowser)
|
||||
[](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml) [](https://goreportcard.com/report/github.com/filebrowser/filebrowser) [](http://godoc.org/github.com/filebrowser/filebrowser) [](https://github.com/filebrowser/filebrowser/releases/latest) [](http://webchat.freenode.net/?channels=%23filebrowser)
|
||||
|
||||
filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app.
|
||||
filebrowser 在指定目录内提供了一个文件管理界面,可用于上传、删除、预览、重命名和编辑您的文件。它允许创建多个用户,每个用户都可以拥有自己的目录。它可以作为一个独立的应用程序使用。
|
||||
|
||||
## Features
|
||||
## 功能
|
||||
|
||||
Please refer to our docs at [https://filebrowser.org/features](https://filebrowser.org/features)
|
||||
请参阅我们的文档:[https://filebrowser.org/features](https://filebrowser.org/features)
|
||||
|
||||
## Install
|
||||
## 安装
|
||||
|
||||
For installation instructions please refer to our docs at [https://filebrowser.org/installation](https://filebrowser.org/installation).
|
||||
有关安装说明,请参阅我们的文档:[https://filebrowser.org/installation](https://filebrowser.org/installation)。
|
||||
|
||||
## Configuration
|
||||
## 配置
|
||||
|
||||
[Authentication Method](https://filebrowser.org/configuration/authentication-method) - You can change the way the user authenticates with the filebrowser server
|
||||
[认证方法](https://filebrowser.org/configuration/authentication-method) \- 您可以更改用户与 filebrowser 服务器进行认证的方式
|
||||
|
||||
[Command Runner](https://filebrowser.org/configuration/command-runner) - The command runner is a feature that enables you to execute any shell command you want before or after a certain event.
|
||||
[命令运行器](https://filebrowser.org/configuration/command-runner) \- 命令运行器是一个功能,允许你在某个事件之前或之后执行任何你想要的 shell 命令。
|
||||
|
||||
[Custom Branding](https://filebrowser.org/configuration/custom-branding) - You can customize your File Browser installation by change its name to any other you want, by adding a global custom style sheet and by using your own logotype if you want.
|
||||
[自定义品牌](https://filebrowser.org/configuration/custom-branding) \- 你可以通过更改其名称为任何你想要的,添加全局自定义样式表以及使用你自己的标志(如果需要)来自定义你的文件浏览器安装。
|
||||
|
||||
## Contributing
|
||||
## 贡献
|
||||
|
||||
If you're interested in contributing to this project, our docs are best places to start [https://filebrowser.org/contributing](https://filebrowser.org/contributing).
|
||||
如果你有兴趣为这个项目做出贡献,我们的文档是最好的起点 [https://filebrowser.org/contributing](https://filebrowser.org/contributing).
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 使用说明
|
||||
|
||||
- 默认账户密码
|
||||
|
||||
```
|
||||
username:admin
|
||||
password:admin
|
||||
```
|
||||
|
||||
# 原始相关
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/filebrowser/logo/master/banner.png" width="550"/>
|
||||
</p>
|
||||
|
||||

|
||||
|
||||
[](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml)
|
||||
[](https://goreportcard.com/report/github.com/filebrowser/filebrowser)
|
||||
[](http://godoc.org/github.com/filebrowser/filebrowser)
|
||||
[](https://github.com/filebrowser/filebrowser/releases/latest)
|
||||
[](http://webchat.freenode.net/?channels=%23filebrowser)
|
||||
|
||||
filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app.
|
||||
|
||||
## Features
|
||||
|
||||
Please refer to our docs at [https://filebrowser.org/features](https://filebrowser.org/features)
|
||||
|
||||
## Install
|
||||
|
||||
For installation instructions please refer to our docs at [https://filebrowser.org/installation](https://filebrowser.org/installation).
|
||||
|
||||
## Configuration
|
||||
|
||||
[Authentication Method](https://filebrowser.org/configuration/authentication-method) - You can change the way the user authenticates with the filebrowser server
|
||||
|
||||
[Command Runner](https://filebrowser.org/configuration/command-runner) - The command runner is a feature that enables you to execute any shell command you want before or after a certain event.
|
||||
|
||||
[Custom Branding](https://filebrowser.org/configuration/custom-branding) - You can customize your File Browser installation by change its name to any other you want, by adding a global custom style sheet and by using your own logotype if you want.
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're interested in contributing to this project, our docs are best places to start [https://filebrowser.org/contributing](https://filebrowser.org/contributing).
|
||||
|
|
@ -1,26 +1,24 @@
|
|||

|
||||
|
||||
[Firefox](https://www.mozilla.org/en-US/firefox/) 浏览器,也称为 Mozilla Firefox 或简称为 Firefox,是由 Mozilla 基金会和其子公司 Mozilla Corporation 开发的一款免费开源的网页浏览器。Firefox 使用 Gecko 布局引擎来渲染网页,该引擎实现了当前和预期的网页标准。
|
||||
|
||||
[Firefox](https://www.mozilla.org/en-US/firefox/) Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.
|
||||
## 支持的架构
|
||||
|
||||
我们使用 Docker 清单来实现多平台意识。更多信息请参阅 Docker [此处](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) 和我们的公告 [此处](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/) 。
|
||||
|
||||
## Supported Architectures
|
||||
简单地拉取 `lscr.io/linuxserver/firefox:latest` 应该可以检索到适合您架构的正确镜像,但您也可以通过标签拉取特定的架构镜像。
|
||||
|
||||
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||
此镜像支持的架构如下:
|
||||
|
||||
Simply pulling `lscr.io/linuxserver/firefox:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
||||
|
||||
The architectures supported by this image are:
|
||||
|
||||
| Architecture | Available | Tag |
|
||||
| 架构 | 可用 | 标签 |
|
||||
| --- | --- | --- |
|
||||
| x86-64 | ✅ | amd64-<version tag> |
|
||||
| arm64 | ✅ | arm64v8-<version tag> |
|
||||
| armhf | ❌ | |
|
||||
| x86-64 | ✅ | amd64-<版本标签> |
|
||||
| arm64 | ✅ | arm64v8-<版本标签> |
|
||||
| armhf | ❌ | |
|
||||
|
||||
## Application Setup
|
||||
## 应用设置
|
||||
|
||||
The application can be accessed at:
|
||||
该应用可通过以下链接访问:
|
||||
|
||||
- http://yourhost:3000/
|
||||
- https://yourhost:3001/
|
||||
* [http://yourhost:3000/](http://yourhost:3000/)
|
||||
* [https://yourhost:3001/](https://yourhost:3001/)
|
||||
|
|
@ -0,0 +1,26 @@
|
|||

|
||||
|
||||
|
||||
[Firefox](https://www.mozilla.org/en-US/firefox/) Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.
|
||||
|
||||
|
||||
## Supported Architectures
|
||||
|
||||
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||
|
||||
Simply pulling `lscr.io/linuxserver/firefox:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
||||
|
||||
The architectures supported by this image are:
|
||||
|
||||
| Architecture | Available | Tag |
|
||||
| --- | --- | --- |
|
||||
| x86-64 | ✅ | amd64-<version tag> |
|
||||
| arm64 | ✅ | arm64v8-<version tag> |
|
||||
| armhf | ❌ | |
|
||||
|
||||
## Application Setup
|
||||
|
||||
The application can be accessed at:
|
||||
|
||||
- http://yourhost:3000/
|
||||
- https://yourhost:3001/
|
||||
|
|
@ -8,56 +8,46 @@
|
|||
|
||||
[](http://isitmaintained.com/project/Flexget/Flexget)
|
||||
|
||||
[FlexGet](https://flexget.com) is a multipurpose automation tool for
|
||||
content like torrents, nzbs, podcasts, comics, series, movies, etc. It
|
||||
can use different kinds of sources like RSS-feeds, html pages, csv
|
||||
files, search engines and there are even plugins for sites that do not
|
||||
provide any kind of useful feeds.
|
||||
[FlexGet](https://flexget.com) 是一款多功能的自动化工具,用于处理如种子、NZB、播客、漫画、剧集、电影等内容。它可以使用不同的来源,如 RSS 订阅源、HTML 页面、CSV 文件、搜索引擎,甚至为那些不提供任何有用订阅源的网站提供插件。
|
||||
|
||||
# Example
|
||||
# 示例
|
||||
|
||||
Flexget uses a [YAML](http://www.yaml.org/) based configuration file.
|
||||
The following example will look in the RSS feed in the link, will match
|
||||
any item that match the series names and download it:
|
||||
Flexget 使用基于 [YAML](http://www.yaml.org/) 的配置文件。以下示例将检查链接中的 RSS 订阅源,匹配任何与系列名称匹配的项目并下载它们:
|
||||
|
||||
tasks:
|
||||
tv:
|
||||
rss: http://example.com/torrents.xml
|
||||
series:
|
||||
- some series
|
||||
- another series
|
||||
download: /tvshows
|
||||
```
|
||||
tasks:
|
||||
tv:
|
||||
rss: http://example.com/torrents.xml
|
||||
series:
|
||||
- some series
|
||||
- another series
|
||||
download: /tvshows
|
||||
```
|
||||
|
||||
There are numerous plugins that allow utilizing FlexGet in interesting
|
||||
ways and more are being added continuously.
|
||||
有许多插件允许以有趣的方式使用 FlexGet,并且持续有更多插件被添加。
|
||||
|
||||
FlexGet is extremely useful in conjunction with applications which have
|
||||
watch directory support or provide interface for external utilities like
|
||||
FlexGet. To get a sense of the many things that can be done with FlexGet
|
||||
you can take a look in our [cookbook](https://flexget.com/Cookbook).
|
||||
FlexGet 与支持监视目录或提供 FlexGet 等外部工具接口的应用程序结合使用时非常实用。要了解 FlexGet 可以完成的各种事情,您可以查看我们的[烹饪书](https://flexget.com/Cookbook) 。
|
||||
|
||||
**ChangeLog:** <https://flexget.com/ChangeLog>
|
||||
**变更日志:**[https://flexget.com/ChangeLog](https://flexget.com/ChangeLog)
|
||||
|
||||
**Help:** <https://github.com/Flexget/Flexget/discussions>
|
||||
**帮助:**[https://github.com/Flexget/Flexget/discussions](https://github.com/Flexget/Flexget/discussions)
|
||||
|
||||
**Chat:** <https://flexget.com/Chat>
|
||||
**Chat:** [https://flexget.com/Chat](https://flexget.com/Chat)
|
||||
|
||||
**Bugs:** <https://github.com/Flexget/Flexget/issues>
|
||||
**错误:**[https://github.com/Flexget/Flexget/issues](https://github.com/Flexget/Flexget/issues)
|
||||
|
||||
## Install
|
||||
## 安装
|
||||
|
||||
FlexGet is installable via pip with the command:
|
||||
FlexGet 可以通过 pip 命令安装:
|
||||
|
||||
pip install flexget
|
||||
```
|
||||
pip install flexget
|
||||
```
|
||||
|
||||
For more detailed instructions see the [installation
|
||||
guide](https://flexget.com/Install).
|
||||
更多详细说明请参阅[安装指南](https://flexget.com/Install) .
|
||||
|
||||
## How to use GIT checkout
|
||||
## 如何使用 GIT checkout
|
||||
|
||||
Refer to [development
|
||||
guide](https://flexget.readthedocs.io/en/latest/develop/index.html#how-do-i-get-started).
|
||||
请参考[开发指南](https://flexget.readthedocs.io/en/latest/develop/index.html#how-do-i-get-started) 。
|
||||
|
||||
If you don\'t want to use virtualenv there\'s `flexget_vanilla.py` file
|
||||
which can be used to run FlexGet without virtualenv, note that you will
|
||||
need to install all required dependencies yourself.
|
||||
如果您不想使用 virtualenv,可以使用 `flexget_vanilla.py` 文件来运行 FlexGet 而不需要 virtualenv,请注意您需要自行安装所有必需的依赖项。
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
# FlexGet
|
||||
|
||||
[](https://github.com/Flexget/Flexget/actions/workflows/main.yml?query=branch%3Adevelop)
|
||||
|
||||
[](https://pypi.python.org/pypi/Flexget)
|
||||
|
||||
[](https://discord.gg/W6CQrJx)
|
||||
|
||||
[](http://isitmaintained.com/project/Flexget/Flexget)
|
||||
|
||||
[FlexGet](https://flexget.com) is a multipurpose automation tool for
|
||||
content like torrents, nzbs, podcasts, comics, series, movies, etc. It
|
||||
can use different kinds of sources like RSS-feeds, html pages, csv
|
||||
files, search engines and there are even plugins for sites that do not
|
||||
provide any kind of useful feeds.
|
||||
|
||||
# Example
|
||||
|
||||
Flexget uses a [YAML](http://www.yaml.org/) based configuration file.
|
||||
The following example will look in the RSS feed in the link, will match
|
||||
any item that match the series names and download it:
|
||||
|
||||
tasks:
|
||||
tv:
|
||||
rss: http://example.com/torrents.xml
|
||||
series:
|
||||
- some series
|
||||
- another series
|
||||
download: /tvshows
|
||||
|
||||
There are numerous plugins that allow utilizing FlexGet in interesting
|
||||
ways and more are being added continuously.
|
||||
|
||||
FlexGet is extremely useful in conjunction with applications which have
|
||||
watch directory support or provide interface for external utilities like
|
||||
FlexGet. To get a sense of the many things that can be done with FlexGet
|
||||
you can take a look in our [cookbook](https://flexget.com/Cookbook).
|
||||
|
||||
**ChangeLog:** <https://flexget.com/ChangeLog>
|
||||
|
||||
**Help:** <https://github.com/Flexget/Flexget/discussions>
|
||||
|
||||
**Chat:** <https://flexget.com/Chat>
|
||||
|
||||
**Bugs:** <https://github.com/Flexget/Flexget/issues>
|
||||
|
||||
## Install
|
||||
|
||||
FlexGet is installable via pip with the command:
|
||||
|
||||
pip install flexget
|
||||
|
||||
For more detailed instructions see the [installation
|
||||
guide](https://flexget.com/Install).
|
||||
|
||||
## How to use GIT checkout
|
||||
|
||||
Refer to [development
|
||||
guide](https://flexget.readthedocs.io/en/latest/develop/index.html#how-do-i-get-started).
|
||||
|
||||
If you don\'t want to use virtualenv there\'s `flexget_vanilla.py` file
|
||||
which can be used to run FlexGet without virtualenv, note that you will
|
||||
need to install all required dependencies yourself.
|
||||
|
|
@ -8,142 +8,138 @@
|
|||
|
||||
# 原始相关
|
||||
|
||||
# :warning: Announcement: PLEASE READ :warning:
|
||||
Focalboard Personal Server and Personal Desktop editions will transition to being fully community supported as of **April 30th, 2023**. This Focalboard repository will become the Personal Edition repository, and will remain open indefinitely. However, we won’t be adding any new enhancements, and will only address Sev-1 level bugs until April 30th, 2023.
|
||||
# :warning: 通告:请阅读 :warning:
|
||||
|
||||
Focalboard 个人服务器和个人桌面版将从 2023 年 4 月 30 日起完全转为社区支持。此 Focalboard 仓库将成为个人版仓库,并将无限期保持开放。然而,我们不会添加任何新功能,并且仅在 2023 年 4 月 30 日之前解决 Sev-1 级别的错误。
|
||||
|
||||
# Focalboard
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
<a href="https://translate.mattermost.com/engage/focalboard/">
|
||||
<img src="https://translate.mattermost.com/widgets/focalboard/-/svg-badge.svg" alt="Translation status" />
|
||||
</a>
|
||||
    [](https://translate.mattermost.com/engage/focalboard/)
|
||||
|
||||
Like what you see? :eyes: Give us a GitHub Star! :star:
|
||||
喜欢你所看到的吗? :eyes: 给我们一个 GitHub Star! :star:
|
||||
|
||||

|
||||
|
||||
Focalboard is an open source, multilingual, self-hosted project management tool that's an alternative to Trello, Notion, and Asana.
|
||||
Focalboard 是一个开源的多语言自托管项目管理工具,是 Trello、Notion 和 Asana 的替代品。
|
||||
|
||||
It helps define, organize, track and manage work across individuals and teams. Focalboard comes in three editions:
|
||||
它有助于定义、组织、跟踪和管理个人和团队之间的工作。Focalboard 有三个版本:
|
||||
|
||||
* **[Mattermost Boards](https://mattermost.com/boards/)**: Integrated with the Mattermost platform for your team to plan and collaborate.
|
||||
* **[Mattermost Boards](https://mattermost.com/boards/)**:与 Mattermost 平台集成,以便您的团队进行计划和协作。
|
||||
|
||||
* **[个人桌面](https://www.focalboard.com/docs/personal-edition/desktop/)** :一个独立的一用户 [macOS](https://apps.apple.com/app/apple-store/id1556908618?pt=2114704&ct=website&mt=8)、[Windows](https://www.microsoft.com/store/apps/9NLN2T0SX9VF?cid=website) 或 [Linux](https://www.focalboard.com/download/personal-edition/desktop/#linux-desktop) 桌面应用程序,用于您自己的待办事项和个人项目。
|
||||
|
||||
* **[个人服务器](https://www.focalboard.com/download/personal-edition/ubuntu/)** :一款独立的多用户服务器,适用于开发和个人使用。
|
||||
|
||||
|
||||
* **[Personal Desktop](https://www.focalboard.com/docs/personal-edition/desktop/)**: A standalone, single-user [macOS](https://apps.apple.com/app/apple-store/id1556908618?pt=2114704&ct=website&mt=8), [Windows](https://www.microsoft.com/store/apps/9NLN2T0SX9VF?cid=website), or [Linux](https://www.focalboard.com/download/personal-edition/desktop/#linux-desktop) desktop app for your own todos and personal projects.
|
||||
|
||||
* **[Personal Server](https://www.focalboard.com/download/personal-edition/ubuntu/)**: A standalone, multi-user server for development and personal use.
|
||||
|
||||
## Try Focalboard
|
||||
## 尝试 Focalboard
|
||||
|
||||
### Mattermost Boards
|
||||
|
||||
**Mattermost Boards** combines project management tools with messaging and collaboration for teams of all sizes. To access and use **Mattermost Boards**, install or upgrade to Mattermost v6.0 or later as a [self-hosted server](https://docs.mattermost.com/guides/deployment.html?utm_source=github&utm_campaign=focalboard). After logging into Mattermost, select the menu in the top left corner and select **Boards**.
|
||||
**Mattermost Boards** 将项目管理工具与消息传递和协作结合在一起,适用于所有规模的组织。要访问和使用 **Mattermost Boards**,请安装或升级到 Mattermost v6.0 或更高版本作为[自托管服务器](https://docs.mattermost.com/guides/deployment.html?utm_source=github&utm_campaign=focalboard) 。登录 Mattermost 后,选择左上角的菜单,然后选择 **Boards**。
|
||||
|
||||
### Personal Desktop (Windows, Mac or Linux Desktop)
|
||||
### 个人桌面(Windows、Mac 或 Linux 桌面)
|
||||
|
||||
* **Windows**: Download from the [Windows App Store](https://www.microsoft.com/store/productId/9NLN2T0SX9VF) or download `focalboard-win.zip` from the [latest release](https://github.com/mattermost/focalboard/releases), unpack, and run `Focalboard.exe`.
|
||||
* **Mac**: Download from the [Mac App Store](https://apps.apple.com/us/app/focalboard-insiders/id1556908618?mt=12).
|
||||
* **Linux Desktop**: Download `focalboard-linux.tar.gz` from the [latest release](https://github.com/mattermost/focalboard/releases), unpack, and open `focalboard-app`.
|
||||
* **Windows**:从 [Windows 应用商店](https://www.microsoft.com/store/productId/9NLN2T0SX9VF)下载或从[最新版本](https://github.com/mattermost/focalboard/releases)下载 `focalboard-win.zip`,解压后运行 `Focalboard.exe`。
|
||||
* **Mac**:从 [Mac 应用商店](https://apps.apple.com/us/app/focalboard-insiders/id1556908618?mt=12)下载。
|
||||
* **Linux 桌面** :从[最新版本](https://github.com/mattermost/focalboard/releases)下载 `focalboard-linux.tar.gz`,解压后打开 `focalboard-app`。
|
||||
|
||||
### Personal Server
|
||||
### 个人服务器
|
||||
|
||||
**Ubuntu**: You can download and run the compiled Focalboard **Personal Server** on Ubuntu by following [our latest install guide](https://www.focalboard.com/download/personal-edition/ubuntu/).
|
||||
**Ubuntu**:您可以通过遵循[我们最新的安装指南](https://www.focalboard.com/download/personal-edition/ubuntu/)下载并运行编译好的 Focalboard **个人服务器** 。
|
||||
|
||||
### API Docs
|
||||
### API 文档
|
||||
|
||||
Boards API docs can be found over at https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html
|
||||
Boards API 文档可以在 [https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html](https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html) 找到。
|
||||
|
||||
## Contribute to Focalboard
|
||||
## 为 Focalboard 做出贡献
|
||||
|
||||
For anyone interested in being an official maintainer of the Focalboard repository, please reach out to us on our [Focalboard Community Channel](https://community.mattermost.com/core/channels/focalboard). If there are no maintainers, and you’re still interested in adding your own improvements to the Focalboard Personal Editions, we encourage you to fork and maintain the repository.
|
||||
对于任何有兴趣成为 Focalboard 仓库官方维护者的人来说,请通过我们的 [Focalboard 社区频道](https://community.mattermost.com/core/channels/focalboard)联系我们。如果没有维护者,而你仍然有兴趣为 Focalboard 个人版添加自己的改进,我们鼓励你进行分支并维护该仓库。
|
||||
|
||||
### Getting started
|
||||
### 入门指南
|
||||
|
||||
Our [developer guide](https://developers.mattermost.com/contribute/focalboard/personal-server-setup-guide) has detailed instructions on how to set up your development environment for the **Personal Server**. It also provides more information about contributing to our open source community.
|
||||
我们的[开发者指南](https://developers.mattermost.com/contribute/focalboard/personal-server-setup-guide)详细说明了如何为**个人服务器**设置你的开发环境。它还提供了更多关于为我们的开源社区做出贡献的信息。
|
||||
|
||||
Clone [mattermost-server](https://github.com/mattermost/mattermost-server) into sibling directory.
|
||||
将 [mattermost-server](https://github.com/mattermost/mattermost-server) 克隆到同级目录。
|
||||
|
||||
Create an `.env` file in the focalboard directory that contains:
|
||||
在 focalboard 目录下创建一个 `.env` 文件,其中包含:
|
||||
|
||||
```
|
||||
EXCLUDE_ENTERPRISE="1"
|
||||
```
|
||||
|
||||
To build the server:
|
||||
构建服务器:
|
||||
|
||||
```
|
||||
make prebuild
|
||||
make
|
||||
```
|
||||
|
||||
To run the server:
|
||||
运行服务器:
|
||||
|
||||
```
|
||||
./bin/focalboard-server
|
||||
```
|
||||
|
||||
Then navigate your browser to [`http://localhost:8000`](http://localhost:8000) to access your Focalboard server. The port is configured in `config.json`.
|
||||
然后,在浏览器中导航到 [`http://localhost:8000`](http://localhost:8000) 以访问您的 Focalboard 服务器。端口号配置在 `config.json` 中。
|
||||
|
||||
Once the server is running, you can rebuild just the web app via `make webapp` in a separate terminal window. Reload your browser to see the changes.
|
||||
一旦服务器运行,您可以在另一个终端窗口中通过 `make webapp` 重新构建仅网页应用。重新加载浏览器以查看更改。
|
||||
|
||||
### Building and running standalone desktop apps
|
||||
### 构建和运行独立桌面应用
|
||||
|
||||
You can build standalone apps that package the server to run locally against SQLite:
|
||||
您可以构建包含服务器的独立应用,以便在本地针对 SQLite 运行:
|
||||
|
||||
* **Windows**:
|
||||
* *Requires Windows 10, [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/) 10.0.19041.0, and .NET 4.8 developer pack*
|
||||
* Open a `git-bash` prompt.
|
||||
* Run `make prebuild`
|
||||
* The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
|
||||
* Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
|
||||
* Run `make win-wpf-app`
|
||||
* Run `cd win-wpf/msix && focalboard.exe`
|
||||
* **Mac**:
|
||||
* *Requires macOS 11.3+ and Xcode 13.2.1+*
|
||||
* Run `make prebuild`
|
||||
* The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
|
||||
* Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
|
||||
* Run `make mac-app`
|
||||
* Run `open mac/dist/Focalboard.app`
|
||||
* **Linux**:
|
||||
* *Tested on Ubuntu 18.04*
|
||||
* Install `webgtk` dependencies
|
||||
* Run `sudo apt-get install libgtk-3-dev`
|
||||
* Run `sudo apt-get install libwebkit2gtk-4.0-dev`
|
||||
* Run `make prebuild`
|
||||
* The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
|
||||
* Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
|
||||
* Run `make linux-app`
|
||||
* Uncompress `linux/dist/focalboard-linux.tar.gz` to a directory of your choice
|
||||
* Run `focalboard-app` from the directory you have chosen
|
||||
* **Docker**:
|
||||
* To run it locally from offical image:
|
||||
* `docker run -it -p 80:8000 mattermost/focalboard`
|
||||
* To build it for your current architecture:
|
||||
* `docker build -f docker/Dockerfile .`
|
||||
* To build it for a custom architecture (experimental):
|
||||
* `docker build -f docker/Dockerfile --platform linux/arm64 .`
|
||||
* **Windows**:
|
||||
* *需要 Windows 10,[Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/) 10.0.19041.0,以及.NET 4.8 开发者包*
|
||||
* 打开一个 `git-bash` 提示符。
|
||||
* 运行 `make prebuild`
|
||||
* 上述预构建步骤仅在您对项目进行更改或想要安装 npm 依赖项等时需要运行。
|
||||
* 一旦预构建完成,您可以重复以下步骤来构建应用程序并查看更改。
|
||||
* 运行 `make win-wpf-app`
|
||||
* Run `cd win-wpf/msix && focalboard.exe`
|
||||
* **Mac**:
|
||||
* *需要 macOS 11.3+ 和 Xcode 13.2.1+*
|
||||
* 运行 `make prebuild`
|
||||
* 上述预构建步骤仅在您对项目进行更改或想要安装 npm 依赖项等时需要运行。
|
||||
* 预构建完成后,您可以重复以下步骤来构建应用程序并查看更改。
|
||||
* 运行 `make mac-app`
|
||||
* 运行 `open mac/dist/Focalboard.app`
|
||||
* **Linux**:
|
||||
* *在 Ubuntu 18.04 上测试过*
|
||||
* 安装 `webgtk` 依赖
|
||||
* Run `sudo apt-get install libgtk-3-dev`
|
||||
* Run `sudo apt-get install libwebkit2gtk-4.0-dev`
|
||||
* 运行 `make prebuild`
|
||||
* 上述预构建步骤仅在您对项目进行更改或想要安装 npm 依赖项等时需要运行。
|
||||
* 预构建完成后,您可以重复以下步骤来构建应用程序并查看更改。
|
||||
* 运行 `make linux-app`
|
||||
* 解压 `linux/dist/focalboard-linux.tar.gz` 到您选择的目录
|
||||
* 从您选择的目录运行 `focalboard-app`
|
||||
* **Docker**:
|
||||
* 要从官方镜像本地运行它:
|
||||
* `docker run -it -p 80:8000 mattermost/focalboard`
|
||||
* 为构建适用于您当前架构:
|
||||
* `docker build -f docker/Dockerfile .`
|
||||
* 为构建适用于自定义架构(实验性):
|
||||
* `docker build -f docker/Dockerfile --platform linux/arm64 .`
|
||||
|
||||
Cross-compilation currently isn't fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (`build-mac.yml`, `build-win.yml`, `build-ubuntu.yml`) for the detailed list of steps on each platform.
|
||||
交叉编译目前尚未完全支持,请在该平台上进行构建。请参考 GitHub Actions 工作流程(`build-mac.yml`、`build-win.yml`、`build-ubuntu.yml`)以获取每个平台的详细步骤列表。
|
||||
|
||||
### Unit testing
|
||||
### 单元测试
|
||||
|
||||
Before checking in commits, run `make ci`, which is similar to the `.gitlab-ci.yml` workflow and includes:
|
||||
在提交检查之前,运行 `make ci`,这与 `.gitlab-ci.yml` 工作流程类似,包括:
|
||||
|
||||
* **Server unit tests**: `make server-test`
|
||||
* **Web app ESLint**: `cd webapp; npm run check`
|
||||
* **Web app unit tests**: `cd webapp; npm run test`
|
||||
* **Web app UI tests**: `cd webapp; npm run cypress:ci`
|
||||
* **服务器单元测试** :`make server-test`
|
||||
* **Web 应用 ESLint**:`cd webapp; npm run check`
|
||||
* **Web 应用单元测试** :`cd webapp; npm run test`
|
||||
* **Web 应用 UI 测试** : `cd webapp; npm run cypress:ci`
|
||||
|
||||
### Translating
|
||||
### 翻译中
|
||||
|
||||
Help translate Focalboard! The app is already translated into several languages. We welcome corrections and new language translations! You can add new languages or improve existing translations at [Weblate](https://translate.mattermost.com/engage/focalboard/).
|
||||
帮助翻译 Focalboard!该应用已翻译成多种语言。我们欢迎更正和新语言翻译!您可以在 [Weblate](https://translate.mattermost.com/engage/focalboard/) 添加新语言或改进现有翻译。
|
||||
|
||||
### Staying informed
|
||||
### 保持信息更新
|
||||
|
||||
* **Changes**: See the [CHANGELOG](CHANGELOG.md) for the latest updates
|
||||
* **GitHub Discussions**: Join the [Developer Discussion](https://github.com/mattermost/focalboard/discussions) board
|
||||
* **Bug Reports**: [File a bug report](https://github.com/mattermost/focalboard/issues/new?assignees=&labels=bug&template=bug_report.md&title=)
|
||||
* **Chat**: Join the [Focalboard community channel](https://community.mattermost.com/core/channels/focalboard)
|
||||
* **变更** :查看最新的更新请参阅[变更日志](CHANGELOG.md)
|
||||
* **GitHub 讨论区** :加入[开发者讨论](https://github.com/mattermost/focalboard/discussions)板块
|
||||
* **错误报告** : [提交错误报告](https://github.com/mattermost/focalboard/issues/new?assignees=&labels=bug&template=bug_report.md&title=)
|
||||
* **聊天** :加入 [Focalboard 社区频道](https://community.mattermost.com/core/channels/focalboard)
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
# 使用说明
|
||||
|
||||
默认以`SQLite`数据库模式运行,
|
||||
|
||||
需要以`postgres`数据库运行的,需要修改目录下的`postgres-config.json`里的数据库信息
|
||||
|
||||
且修改`docker-compose.yml`文件里的配置映射。
|
||||
|
||||
# 原始相关
|
||||
|
||||
# :warning: Announcement: PLEASE READ :warning:
|
||||
Focalboard Personal Server and Personal Desktop editions will transition to being fully community supported as of **April 30th, 2023**. This Focalboard repository will become the Personal Edition repository, and will remain open indefinitely. However, we won’t be adding any new enhancements, and will only address Sev-1 level bugs until April 30th, 2023.
|
||||
|
||||
# Focalboard
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
<a href="https://translate.mattermost.com/engage/focalboard/">
|
||||
<img src="https://translate.mattermost.com/widgets/focalboard/-/svg-badge.svg" alt="Translation status" />
|
||||
</a>
|
||||
|
||||
Like what you see? :eyes: Give us a GitHub Star! :star:
|
||||
|
||||

|
||||
|
||||
Focalboard is an open source, multilingual, self-hosted project management tool that's an alternative to Trello, Notion, and Asana.
|
||||
|
||||
It helps define, organize, track and manage work across individuals and teams. Focalboard comes in three editions:
|
||||
|
||||
* **[Mattermost Boards](https://mattermost.com/boards/)**: Integrated with the Mattermost platform for your team to plan and collaborate.
|
||||
|
||||
* **[Personal Desktop](https://www.focalboard.com/docs/personal-edition/desktop/)**: A standalone, single-user [macOS](https://apps.apple.com/app/apple-store/id1556908618?pt=2114704&ct=website&mt=8), [Windows](https://www.microsoft.com/store/apps/9NLN2T0SX9VF?cid=website), or [Linux](https://www.focalboard.com/download/personal-edition/desktop/#linux-desktop) desktop app for your own todos and personal projects.
|
||||
|
||||
* **[Personal Server](https://www.focalboard.com/download/personal-edition/ubuntu/)**: A standalone, multi-user server for development and personal use.
|
||||
|
||||
## Try Focalboard
|
||||
|
||||
### Mattermost Boards
|
||||
|
||||
**Mattermost Boards** combines project management tools with messaging and collaboration for teams of all sizes. To access and use **Mattermost Boards**, install or upgrade to Mattermost v6.0 or later as a [self-hosted server](https://docs.mattermost.com/guides/deployment.html?utm_source=github&utm_campaign=focalboard). After logging into Mattermost, select the menu in the top left corner and select **Boards**.
|
||||
|
||||
### Personal Desktop (Windows, Mac or Linux Desktop)
|
||||
|
||||
* **Windows**: Download from the [Windows App Store](https://www.microsoft.com/store/productId/9NLN2T0SX9VF) or download `focalboard-win.zip` from the [latest release](https://github.com/mattermost/focalboard/releases), unpack, and run `Focalboard.exe`.
|
||||
* **Mac**: Download from the [Mac App Store](https://apps.apple.com/us/app/focalboard-insiders/id1556908618?mt=12).
|
||||
* **Linux Desktop**: Download `focalboard-linux.tar.gz` from the [latest release](https://github.com/mattermost/focalboard/releases), unpack, and open `focalboard-app`.
|
||||
|
||||
### Personal Server
|
||||
|
||||
**Ubuntu**: You can download and run the compiled Focalboard **Personal Server** on Ubuntu by following [our latest install guide](https://www.focalboard.com/download/personal-edition/ubuntu/).
|
||||
|
||||
### API Docs
|
||||
|
||||
Boards API docs can be found over at https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html
|
||||
|
||||
## Contribute to Focalboard
|
||||
|
||||
For anyone interested in being an official maintainer of the Focalboard repository, please reach out to us on our [Focalboard Community Channel](https://community.mattermost.com/core/channels/focalboard). If there are no maintainers, and you’re still interested in adding your own improvements to the Focalboard Personal Editions, we encourage you to fork and maintain the repository.
|
||||
|
||||
### Getting started
|
||||
|
||||
Our [developer guide](https://developers.mattermost.com/contribute/focalboard/personal-server-setup-guide) has detailed instructions on how to set up your development environment for the **Personal Server**. It also provides more information about contributing to our open source community.
|
||||
|
||||
Clone [mattermost-server](https://github.com/mattermost/mattermost-server) into sibling directory.
|
||||
|
||||
Create an `.env` file in the focalboard directory that contains:
|
||||
|
||||
```
|
||||
EXCLUDE_ENTERPRISE="1"
|
||||
```
|
||||
|
||||
To build the server:
|
||||
|
||||
```
|
||||
make prebuild
|
||||
make
|
||||
```
|
||||
|
||||
To run the server:
|
||||
|
||||
```
|
||||
./bin/focalboard-server
|
||||
```
|
||||
|
||||
Then navigate your browser to [`http://localhost:8000`](http://localhost:8000) to access your Focalboard server. The port is configured in `config.json`.
|
||||
|
||||
Once the server is running, you can rebuild just the web app via `make webapp` in a separate terminal window. Reload your browser to see the changes.
|
||||
|
||||
### Building and running standalone desktop apps
|
||||
|
||||
You can build standalone apps that package the server to run locally against SQLite:
|
||||
|
||||
* **Windows**:
|
||||
* *Requires Windows 10, [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/) 10.0.19041.0, and .NET 4.8 developer pack*
|
||||
* Open a `git-bash` prompt.
|
||||
* Run `make prebuild`
|
||||
* The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
|
||||
* Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
|
||||
* Run `make win-wpf-app`
|
||||
* Run `cd win-wpf/msix && focalboard.exe`
|
||||
* **Mac**:
|
||||
* *Requires macOS 11.3+ and Xcode 13.2.1+*
|
||||
* Run `make prebuild`
|
||||
* The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
|
||||
* Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
|
||||
* Run `make mac-app`
|
||||
* Run `open mac/dist/Focalboard.app`
|
||||
* **Linux**:
|
||||
* *Tested on Ubuntu 18.04*
|
||||
* Install `webgtk` dependencies
|
||||
* Run `sudo apt-get install libgtk-3-dev`
|
||||
* Run `sudo apt-get install libwebkit2gtk-4.0-dev`
|
||||
* Run `make prebuild`
|
||||
* The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
|
||||
* Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
|
||||
* Run `make linux-app`
|
||||
* Uncompress `linux/dist/focalboard-linux.tar.gz` to a directory of your choice
|
||||
* Run `focalboard-app` from the directory you have chosen
|
||||
* **Docker**:
|
||||
* To run it locally from offical image:
|
||||
* `docker run -it -p 80:8000 mattermost/focalboard`
|
||||
* To build it for your current architecture:
|
||||
* `docker build -f docker/Dockerfile .`
|
||||
* To build it for a custom architecture (experimental):
|
||||
* `docker build -f docker/Dockerfile --platform linux/arm64 .`
|
||||
|
||||
Cross-compilation currently isn't fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (`build-mac.yml`, `build-win.yml`, `build-ubuntu.yml`) for the detailed list of steps on each platform.
|
||||
|
||||
### Unit testing
|
||||
|
||||
Before checking in commits, run `make ci`, which is similar to the `.gitlab-ci.yml` workflow and includes:
|
||||
|
||||
* **Server unit tests**: `make server-test`
|
||||
* **Web app ESLint**: `cd webapp; npm run check`
|
||||
* **Web app unit tests**: `cd webapp; npm run test`
|
||||
* **Web app UI tests**: `cd webapp; npm run cypress:ci`
|
||||
|
||||
### Translating
|
||||
|
||||
Help translate Focalboard! The app is already translated into several languages. We welcome corrections and new language translations! You can add new languages or improve existing translations at [Weblate](https://translate.mattermost.com/engage/focalboard/).
|
||||
|
||||
### Staying informed
|
||||
|
||||
* **Changes**: See the [CHANGELOG](CHANGELOG.md) for the latest updates
|
||||
* **GitHub Discussions**: Join the [Developer Discussion](https://github.com/mattermost/focalboard/discussions) board
|
||||
* **Bug Reports**: [File a bug report](https://github.com/mattermost/focalboard/issues/new?assignees=&labels=bug&template=bug_report.md&title=)
|
||||
* **Chat**: Join the [Focalboard community channel](https://community.mattermost.com/core/channels/focalboard)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,6 +1,6 @@
|
|||
services:
|
||||
geekbench:
|
||||
image: "davidsarkany/geekbench:6"
|
||||
image: davidsarkany/geekbench:4
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: "no"
|
||||
stdin_open: true
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
services:
|
||||
geekbench:
|
||||
image: "davidsarkany/geekbench:6"
|
||||
image: davidsarkany/geekbench:5
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: "no"
|
||||
stdin_open: true
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
services:
|
||||
geekbench:
|
||||
image: "davidsarkany/geekbench:6"
|
||||
image: davidsarkany/geekbench:6
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: "no"
|
||||
stdin_open: true
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
[](https://hub.docker.com/r/davidsarkany/geekbench) [](https://hub.docker.com/r/davidsarkany/geekbench)
|
||||
|
||||
Unofficial build of Geekbench, forked from [chrisdaish/geekbench](https://github.com/chrisdaish/docker-geekbench).
|
||||
Geekbench 非官方构建版本,源自 [chrisdaish/geekbench](https://github.com/chrisdaish/docker-geekbench)。
|
||||
|
||||
### Usage
|
||||
### 使用方法
|
||||
|
||||
#### Geekbench 6
|
||||
|
||||
|
|
@ -22,4 +22,4 @@ docker run -it --rm davidsarkany/geekbench:5 && docker rmi davidsarkany/geekbenc
|
|||
|
||||
```
|
||||
docker run -it --rm davidsarkany/geekbench:4 && docker rmi davidsarkany/geekbench:4
|
||||
```
|
||||
```
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Geekbench
|
||||
|
||||
[](https://hub.docker.com/r/davidsarkany/geekbench) [](https://hub.docker.com/r/davidsarkany/geekbench)
|
||||
|
||||
Unofficial build of Geekbench, forked from [chrisdaish/geekbench](https://github.com/chrisdaish/docker-geekbench).
|
||||
|
||||
### Usage
|
||||
|
||||
#### Geekbench 6
|
||||
|
||||
```
|
||||
docker run -it --rm davidsarkany/geekbench && docker rmi davidsarkany/geekbench
|
||||
```
|
||||
|
||||
#### Geekbench 5
|
||||
|
||||
```
|
||||
docker run -it --rm davidsarkany/geekbench:5 && docker rmi davidsarkany/geekbench:5
|
||||
```
|
||||
|
||||
#### Geekbench 4
|
||||
|
||||
```
|
||||
docker run -it --rm davidsarkany/geekbench:4 && docker rmi davidsarkany/geekbench:4
|
||||
```
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.6"
|
||||
services:
|
||||
gitlab-jh:
|
||||
image: registry.gitlab.cn/omnibus/gitlab-jh:18.1.0-jh.0
|
||||
image: registry.gitlab.cn/omnibus/gitlab-jh:18.1.1-jh.0
|
||||
container_name: ${CONTAINER_NAME}
|
||||
hostname: localhost
|
||||
restart: always
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
# 使用说明
|
||||
|
||||
默认账户与密码
|
||||
|
||||
```
|
||||
username:admin
|
||||
password:admin
|
||||
|
|
@ -10,50 +11,48 @@ password:admin
|
|||
|
||||

|
||||
|
||||
The open-source platform for monitoring and observability
|
||||
开源平台用于监控和可观察性
|
||||
|
||||
[](LICENSE)
|
||||
[](https://drone.grafana.net/grafana/grafana)
|
||||
[](https://goreportcard.com/report/github.com/grafana/grafana)
|
||||
[](LICENSE) [](https://drone.grafana.net/grafana/grafana) [](https://goreportcard.com/report/github.com/grafana/grafana)
|
||||
|
||||
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data-driven culture:
|
||||
Grafana 允许您查询、可视化、警报并理解您的指标,无论它们存储在哪里。创建、探索和与您的团队共享仪表板,培养数据驱动文化:
|
||||
|
||||
- **Visualizations:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
|
||||
- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
|
||||
- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
|
||||
- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
|
||||
- **Alerting:** Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.
|
||||
- **Mixed Data Sources:** Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.
|
||||
* **可视化:** 快速灵活的客户端图表,具有多种选项。面板插件提供了许多不同的方式来可视化指标和日志。
|
||||
* **动态仪表板:** 创建动态且可重用的仪表板,其中模板变量作为下拉菜单出现在仪表板顶部。
|
||||
* **探索指标:** 通过临时查询和动态钻取探索您的数据。分割视图并对比不同的时间范围、查询和数据源。
|
||||
* **探索日志:** 体验从指标切换到日志的魔法,同时保留标签过滤器。快速搜索所有日志或实时流式传输它们。
|
||||
* **警报:** 直观地定义最重要的指标的警报规则。Grafana 将持续评估并发送通知到 Slack、PagerDuty、VictorOps、OpsGenie 等系统。
|
||||
* **混合数据源:** 在同一个图表中混合不同的数据源!您可以根据查询指定数据源。这甚至适用于自定义数据源。
|
||||
|
||||
## Get started
|
||||
## 开始使用
|
||||
|
||||
- [Get Grafana](https://grafana.com/get)
|
||||
- [Installation guides](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)
|
||||
* [获取 Grafana](https://grafana.com/get)
|
||||
* [安装指南](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)
|
||||
|
||||
Unsure if Grafana is for you? Watch Grafana in action on [play.grafana.org](https://play.grafana.org/)!
|
||||
不确定 Grafana 是否适合您?观看 Grafana 在 [play.grafana.org](play.grafana.org) 上的实际应用!
|
||||
|
||||
## Documentation
|
||||
## 文档
|
||||
|
||||
The Grafana documentation is available at [grafana.com/docs](https://grafana.com/docs/).
|
||||
Grafana 文档可在 [grafana.com/docs](https://grafana.com/docs/) 找到。
|
||||
|
||||
## Contributing
|
||||
## 贡献
|
||||
|
||||
If you're interested in contributing to the Grafana project:
|
||||
如果您有兴趣为 Grafana 项目贡献力量:
|
||||
|
||||
- Start by reading the [Contributing guide](https://github.com/grafana/grafana/blob/HEAD/CONTRIBUTING.md).
|
||||
- Learn how to set up your local environment, in our [Developer guide](https://github.com/grafana/grafana/blob/HEAD/contribute/developer-guide.md).
|
||||
- Explore our [beginner-friendly issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22).
|
||||
- Look through our [style guide and Storybook](https://developers.grafana.com/ui/latest/index.html).
|
||||
* 请先阅读[贡献指南](https://github.com/grafana/grafana/blob/HEAD/CONTRIBUTING.md) 。
|
||||
* 了解如何设置本地环境,请参阅我们的[开发者指南](https://github.com/grafana/grafana/blob/HEAD/contribute/developer-guide.md) 。
|
||||
* 探索我们的[入门问题](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) 。
|
||||
* 查看我们的[风格指南和 Storybook](https://developers.grafana.com/ui/latest/index.html)。
|
||||
|
||||
## Get involved
|
||||
## 参与其中
|
||||
|
||||
- Follow [@grafana on Twitter](https://twitter.com/grafana/).
|
||||
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/).
|
||||
- If you have a specific question, check out our [discussion forums](https://community.grafana.com/).
|
||||
- For general discussions, join us on the [official Slack](https://slack.grafana.com) team.
|
||||
* 关注 [@grafana](https://twitter.com/grafana/) 在 Twitter 上的动态。
|
||||
* 阅读并订阅 [Grafana 博客](https://grafana.com/blog/) 。
|
||||
* 如果您有具体问题,请查看我们的[讨论论坛](https://community.grafana.com/) 。
|
||||
* 对于一般讨论,加入我们的[官方 Slack 团队](https://slack.grafana.com) 。
|
||||
|
||||
This project is tested with [BrowserStack](https://www.browserstack.com/)
|
||||
该项目与 [BrowserStack](https://www.browserstack.com/) 进行了测试。
|
||||
|
||||
## License
|
||||
## 许可证
|
||||
|
||||
Grafana is distributed under [AGPL-3.0-only](LICENSE). For Apache-2.0 exceptions, see [LICENSING.md](https://github.com/grafana/grafana/blob/HEAD/LICENSING.md).
|
||||
Grafana 遵循 [AGPL-3.0-only](LICENSE) 协议分发。有关 Apache-2.0 例外情况,请参阅 [LICENSING.md](https://github.com/grafana/grafana/blob/HEAD/LICENSING.md)。
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# 使用说明
|
||||
|
||||
默认账户与密码
|
||||
```
|
||||
username:admin
|
||||
password:admin
|
||||
```
|
||||
|
||||
# 原始相关
|
||||
|
||||

|
||||
|
||||
The open-source platform for monitoring and observability
|
||||
|
||||
[](LICENSE)
|
||||
[](https://drone.grafana.net/grafana/grafana)
|
||||
[](https://goreportcard.com/report/github.com/grafana/grafana)
|
||||
|
||||
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data-driven culture:
|
||||
|
||||
- **Visualizations:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
|
||||
- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
|
||||
- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
|
||||
- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
|
||||
- **Alerting:** Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.
|
||||
- **Mixed Data Sources:** Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.
|
||||
|
||||
## Get started
|
||||
|
||||
- [Get Grafana](https://grafana.com/get)
|
||||
- [Installation guides](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)
|
||||
|
||||
Unsure if Grafana is for you? Watch Grafana in action on [play.grafana.org](https://play.grafana.org/)!
|
||||
|
||||
## Documentation
|
||||
|
||||
The Grafana documentation is available at [grafana.com/docs](https://grafana.com/docs/).
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're interested in contributing to the Grafana project:
|
||||
|
||||
- Start by reading the [Contributing guide](https://github.com/grafana/grafana/blob/HEAD/CONTRIBUTING.md).
|
||||
- Learn how to set up your local environment, in our [Developer guide](https://github.com/grafana/grafana/blob/HEAD/contribute/developer-guide.md).
|
||||
- Explore our [beginner-friendly issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22).
|
||||
- Look through our [style guide and Storybook](https://developers.grafana.com/ui/latest/index.html).
|
||||
|
||||
## Get involved
|
||||
|
||||
- Follow [@grafana on Twitter](https://twitter.com/grafana/).
|
||||
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/).
|
||||
- If you have a specific question, check out our [discussion forums](https://community.grafana.com/).
|
||||
- For general discussions, join us on the [official Slack](https://slack.grafana.com) team.
|
||||
|
||||
This project is tested with [BrowserStack](https://www.browserstack.com/)
|
||||
|
||||
## License
|
||||
|
||||
Grafana is distributed under [AGPL-3.0-only](LICENSE). For Apache-2.0 exceptions, see [LICENSING.md](https://github.com/grafana/grafana/blob/HEAD/LICENSING.md).
|
||||
|
|
@ -1,73 +1,36 @@
|
|||
# h5ai
|
||||
|
||||
[![license][license-img]][github] [![web][web-img]][web] [![github][github-img]][github]
|
||||
[](https://github.com/lrsjng/h5ai) [](https://larsjung.de/h5ai/) [](https://github.com/lrsjng/h5ai)
|
||||
|
||||
A modern HTTP web server index for Apache httpd, lighttpd, and nginx.
|
||||
现代 HTTP 网络服务器索引,适用于 Apache httpd、lighttpd 和 nginx。
|
||||
|
||||
## 重要
|
||||
|
||||
## Important
|
||||
* 不要安装来自 `src` 文件夹的任何文件,它们需要预处理才能正确工作!
|
||||
* 找到预处理的软件包和详细的安装说明 [项目页面](https://larsjung.de/h5ai/) .
|
||||
* 对于错误报告和功能请求,请使用[问题](https://github.com/lrsjng/h5ai/issues) 。
|
||||
|
||||
* Do **not** install any files from the `src` folder, they need to be
|
||||
preprocessed to work correctly!
|
||||
* Find a preprocessed package and detailed install instructions on the
|
||||
[project page][web].
|
||||
* For bug reports and feature requests please use [issues][github-issues].
|
||||
## 构建
|
||||
|
||||
有针对最新[版本](https://release.larsjung.de/h5ai/)的安装准备包和 [开发版本](https://release.larsjung.de/h5ai/develop/) 。但若要自行构建 **h5ai**,则可以使用 `git clone` 或下载仓库。在根目录下运行以下命令,以在 `build` 文件夹中找到一个全新的 zip 文件(仅在 Linux 上测试,需要安装 [`node 10.0+`](https://nodejs.org),可能在其他配置下也能工作)。
|
||||
|
||||
## Build
|
||||
|
||||
There are installation ready packages for the latest [releases][release] and
|
||||
[dev builds][develop]. But to build **h5ai** yourself either `git clone` or
|
||||
download the repository. From within the root folder run the following
|
||||
commands to find a fresh zipball in folder `build` (tested on linux only,
|
||||
requires [`node 10.0+`][node] to be installed, might work on other
|
||||
configurations).
|
||||
|
||||
~~~sh
|
||||
```sh
|
||||
> npm install
|
||||
> npm run build
|
||||
~~~
|
||||
```
|
||||
|
||||
## 许可证
|
||||
|
||||
## License
|
||||
MIT 许可证 (MIT)
|
||||
|
||||
The MIT License (MIT)
|
||||
版权所有 (c) 2020 Lars Jung ([https://larsjung.de](https://larsjung.de))
|
||||
|
||||
Copyright (c) 2020 Lars Jung (https://larsjung.de)
|
||||
本协议授予任何获得本软件及其相关文档副本(以下简称“软件”)的个人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向软件提供者提供软件的个人进行上述操作,但须遵守以下条件:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是因合同行为、侵权行为或其他行为引起的,无论这些责任是否与软件或其使用或其他方式有关。
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
## 参考文献
|
||||
|
||||
|
||||
## References
|
||||
|
||||
**h5ai** profits from other projects, all of them licensed under the MIT license
|
||||
too. Exceptions are some [Material Design icons][material-design-icons] (CC BY 4.0).
|
||||
|
||||
|
||||
[web]: https://larsjung.de/h5ai/
|
||||
[github]: https://github.com/lrsjng/h5ai
|
||||
[github-issues]: https://github.com/lrsjng/h5ai/issues
|
||||
[release]: https://release.larsjung.de/h5ai/
|
||||
[develop]: https://release.larsjung.de/h5ai/develop/
|
||||
[node]: https://nodejs.org
|
||||
[material-design-icons]: https://github.com/google/material-design-icons
|
||||
|
||||
[license-img]: https://img.shields.io/badge/license-MIT-a0a060.svg?style=flat-square
|
||||
[web-img]: https://img.shields.io/badge/web-larsjung.de/h5ai-a0a060.svg?style=flat-square
|
||||
[github-img]: https://img.shields.io/badge/github-lrsjng/h5ai-a0a060.svg?style=flat-square
|
||||
从其他项目中获利,所有这些项目都同样采用 MIT 许可。例外情况是一些[材料设计图标](https://github.com/google/material-design-icons) (CC BY 4.0)。
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
# h5ai
|
||||
|
||||
[![license][license-img]][github] [![web][web-img]][web] [![github][github-img]][github]
|
||||
|
||||
A modern HTTP web server index for Apache httpd, lighttpd, and nginx.
|
||||
|
||||
|
||||
## Important
|
||||
|
||||
* Do **not** install any files from the `src` folder, they need to be
|
||||
preprocessed to work correctly!
|
||||
* Find a preprocessed package and detailed install instructions on the
|
||||
[project page][web].
|
||||
* For bug reports and feature requests please use [issues][github-issues].
|
||||
|
||||
|
||||
## Build
|
||||
|
||||
There are installation ready packages for the latest [releases][release] and
|
||||
[dev builds][develop]. But to build **h5ai** yourself either `git clone` or
|
||||
download the repository. From within the root folder run the following
|
||||
commands to find a fresh zipball in folder `build` (tested on linux only,
|
||||
requires [`node 10.0+`][node] to be installed, might work on other
|
||||
configurations).
|
||||
|
||||
~~~sh
|
||||
> npm install
|
||||
> npm run build
|
||||
~~~
|
||||
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2020 Lars Jung (https://larsjung.de)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
## References
|
||||
|
||||
**h5ai** profits from other projects, all of them licensed under the MIT license
|
||||
too. Exceptions are some [Material Design icons][material-design-icons] (CC BY 4.0).
|
||||
|
||||
|
||||
[web]: https://larsjung.de/h5ai/
|
||||
[github]: https://github.com/lrsjng/h5ai
|
||||
[github-issues]: https://github.com/lrsjng/h5ai/issues
|
||||
[release]: https://release.larsjung.de/h5ai/
|
||||
[develop]: https://release.larsjung.de/h5ai/develop/
|
||||
[node]: https://nodejs.org
|
||||
[material-design-icons]: https://github.com/google/material-design-icons
|
||||
|
||||
[license-img]: https://img.shields.io/badge/license-MIT-a0a060.svg?style=flat-square
|
||||
[web-img]: https://img.shields.io/badge/web-larsjung.de/h5ai-a0a060.svg?style=flat-square
|
||||
[github-img]: https://img.shields.io/badge/github-lrsjng/h5ai-a0a060.svg?style=flat-square
|
||||
|
|
@ -1,63 +1,72 @@
|
|||
# Hasty Paste
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
A fast and minimal paste bin.
|
||||
    
|
||||
|
||||
## Looking For Maintainers
|
||||
I don't find myself using this app much and not having infinite time; would like some assistance on maintaining this project. Since this project is mostly fully feature complete, I am looking for someone who can perform small maintenance.
|
||||
一个快速且简洁的粘贴板。
|
||||
|
||||
You can contact at the links shown [here](https://github.com/enchant97#-how-to-reach-me) (or raise an issue), if you are interested.
|
||||
## 寻找维护者
|
||||
|
||||
> This project is **not** being abandoned. Any security or major fixes will still be done, if needed.
|
||||
我发现自己不太使用这个应用,也没有无限的时间;希望有人能帮助维护这个项目。由于这个项目功能基本完善,我正在寻找能够进行小规模维护的人。
|
||||
|
||||
## Features
|
||||
- Quickly paste and save, to share some text
|
||||
- Publicly accessible, no auth needed
|
||||
- Randomly generated id's, optional "long" id to reduce brute force attacks
|
||||
- Add expiring pastes
|
||||
- Dark theme
|
||||
- Optional syntax highlighting
|
||||
- No JavaScript needed
|
||||
- Uses minimal resources
|
||||
- REST API
|
||||
- Pick your file system
|
||||
- Custom flat-file system
|
||||
- :construction: S3 objects
|
||||
- Caching (Internal & Redis)
|
||||
- Lightweight Docker image (uses Alpine Linux)
|
||||
您可以通过以下链接[这里](https://github.com/enchant97#-how-to-reach-me) (或提出问题)联系我们,如果您感兴趣。
|
||||
|
||||
> 本项目**不会**被放弃。如果需要,任何安全或重大修复仍将完成。
|
||||
|
||||
## 功能
|
||||
|
||||
* 快速粘贴并保存,以分享一些文本
|
||||
* 公开访问,无需身份验证
|
||||
* 随机生成的 ID,可选“长”ID 以减少暴力攻击
|
||||
* 添加过期粘贴
|
||||
* 暗色主题
|
||||
* 可选语法高亮
|
||||
* 无需 JavaScript
|
||||
* 资源占用最少
|
||||
* REST API
|
||||
* 选择您的文件系统
|
||||
* 自定义平面文件系统
|
||||
* :construction: S3 对象
|
||||
* 缓存(内部和 Redis)
|
||||
* 轻量级 Docker 镜像(使用 Alpine Linux)
|
||||
|
||||
## 展示
|
||||
|
||||
## Showcase
|
||||
[](docs/assets/showcase.png)
|
||||
|
||||
## Docs
|
||||
Docs are located in the [/docs](docs/index.md) directory. Or on the site: [enchantedcode.co.uk/hasty-paste](https://enchantedcode.co.uk/hasty-paste)
|
||||
|
||||
## Hastily Paste It CLI
|
||||
This is a simple script allowing the creation of pastes from the command-line. You can download your version [here](hastily-paste-it/README.md).
|
||||
文档位于 [/docs](docs/index.md) 目录中。或者可以在网站上找到:[enchantedcode.co.uk/hasty-paste](https://enchantedcode.co.uk/hasty-paste)
|
||||
|
||||
## Branches
|
||||
| Name | Description | State |
|
||||
| :----------- | :--------------------- | :------------ |
|
||||
| main | Work ready for release | Stable |
|
||||
| next | Work for next version | Very Unstable |
|
||||
| historical-X | Historical versions | Unsupported |
|
||||
## Hasty Paste CLI
|
||||
|
||||
> Choose a tag/release for most stable if running project
|
||||
这是一个简单的脚本,允许从命令行创建粘贴。您可以在此 [处](hastily-paste-it/README.md) 下载您的版本。
|
||||
|
||||
## Why Is It Called "Hasty Paste"?
|
||||
The name was chosen not because the project is written badly, but because you use it so fast without a care in the world and "Fast Paste" was already taken!
|
||||
## 分支
|
||||
|
||||
## License
|
||||
This project is Copyright (c) 2023 Leo Spratt, licences shown below:
|
||||
| 名称 | 描述 | 状态 |
|
||||
| --- | --- | --- |
|
||||
| 主分支 | 准备发布的作品 | 稳定 |
|
||||
| 下一个 | 为下一个版本工作 | 非常不稳定 |
|
||||
| 历史版本 | 历史版本 | 不支持 |
|
||||
|
||||
Code
|
||||
> 如果正在运行项目,请选择最稳定的标签/版本
|
||||
|
||||
AGPL-3 or any later version. Full license found in `LICENSE.txt`
|
||||
## 为什么叫“Hasty Paste”?
|
||||
|
||||
Documentation
|
||||
这个名字的选择并不是因为项目写得不好,而是因为你使用它时如此迅速,毫不在意,而且“Fast Paste”这个名字已经被占用了!
|
||||
|
||||
FDLv1.3 or any later version. Full license found in `docs/LICENSE.txt`
|
||||
## 许可证
|
||||
|
||||
本项目版权所有(c)2023 年 Leo Spratt,以下显示许可证:
|
||||
|
||||
代码
|
||||
|
||||
```
|
||||
AGPL-3 or any later version. Full license found in `LICENSE.txt`
|
||||
```
|
||||
|
||||
文档
|
||||
|
||||
```
|
||||
FDLv1.3 or any later version. Full license found in `docs/LICENSE.txt`
|
||||
```
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
# Hasty Paste
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
A fast and minimal paste bin.
|
||||
|
||||
## Looking For Maintainers
|
||||
I don't find myself using this app much and not having infinite time; would like some assistance on maintaining this project. Since this project is mostly fully feature complete, I am looking for someone who can perform small maintenance.
|
||||
|
||||
You can contact at the links shown [here](https://github.com/enchant97#-how-to-reach-me) (or raise an issue), if you are interested.
|
||||
|
||||
> This project is **not** being abandoned. Any security or major fixes will still be done, if needed.
|
||||
|
||||
## Features
|
||||
- Quickly paste and save, to share some text
|
||||
- Publicly accessible, no auth needed
|
||||
- Randomly generated id's, optional "long" id to reduce brute force attacks
|
||||
- Add expiring pastes
|
||||
- Dark theme
|
||||
- Optional syntax highlighting
|
||||
- No JavaScript needed
|
||||
- Uses minimal resources
|
||||
- REST API
|
||||
- Pick your file system
|
||||
- Custom flat-file system
|
||||
- :construction: S3 objects
|
||||
- Caching (Internal & Redis)
|
||||
- Lightweight Docker image (uses Alpine Linux)
|
||||
|
||||
## Showcase
|
||||
[](docs/assets/showcase.png)
|
||||
|
||||
## Docs
|
||||
Docs are located in the [/docs](docs/index.md) directory. Or on the site: [enchantedcode.co.uk/hasty-paste](https://enchantedcode.co.uk/hasty-paste)
|
||||
|
||||
## Hastily Paste It CLI
|
||||
This is a simple script allowing the creation of pastes from the command-line. You can download your version [here](hastily-paste-it/README.md).
|
||||
|
||||
## Branches
|
||||
| Name | Description | State |
|
||||
| :----------- | :--------------------- | :------------ |
|
||||
| main | Work ready for release | Stable |
|
||||
| next | Work for next version | Very Unstable |
|
||||
| historical-X | Historical versions | Unsupported |
|
||||
|
||||
> Choose a tag/release for most stable if running project
|
||||
|
||||
## Why Is It Called "Hasty Paste"?
|
||||
The name was chosen not because the project is written badly, but because you use it so fast without a care in the world and "Fast Paste" was already taken!
|
||||
|
||||
## License
|
||||
This project is Copyright (c) 2023 Leo Spratt, licences shown below:
|
||||
|
||||
Code
|
||||
|
||||
AGPL-3 or any later version. Full license found in `LICENSE.txt`
|
||||
|
||||
Documentation
|
||||
|
||||
FDLv1.3 or any later version. Full license found in `docs/LICENSE.txt`
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
CONTAINER_NAME="headscale-derp"
|
||||
PANEL_APP_PORT_HTTPS="40184"
|
||||
PANEL_APP_PORT_STUN="3478"
|
||||
DATA_PATH="./data"
|
||||
DERP_DOMAIN="derper.your-domain.com"
|
||||
CLIENTS_VERIFY_SWITCH="false"
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40184
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTPS
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 3478
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_STUN
|
||||
labelEn: STUN Service Port
|
||||
labelZh: STUN 服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path (Domain certificate needs to be replaced, certificate file name is the same as the server hostname)
|
||||
labelZh: 数据文件夹路径 (需要替换域名证书,证书文件名与服务器主机名相同)
|
||||
required: true
|
||||
type: text
|
||||
- default: 'derper.your-domain.com'
|
||||
edit: true
|
||||
envKey: DERP_DOMAIN
|
||||
labelEn: Derper server hostname
|
||||
labelZh: Derper服务器主机名
|
||||
required: true
|
||||
type: text
|
||||
- default: "false"
|
||||
edit: true
|
||||
envKey: CLIENTS_VERIFY_SWITCH
|
||||
labelEn: "Client verify (On: true, Off: false)"
|
||||
labelZh: 客户端验证(开启:true,关闭:false)
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICTzCCAfWgAwIBAgIUVimWHYcwGCEzjo2PIWRX+pk5xk4wCgYIKoZIzj0EAwIw
|
||||
czELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC0xv
|
||||
cyBBbmdlbGVzMRgwFgYDVQQKDA9NeSBPcmdhbml6YXRpb24xHzAdBgNVBAMMFmRl
|
||||
cnBlci55b3VyLWRvbWFpbi5jb20wIBcNMjMxMjEzMTMzMTM1WhgPMjEyMzExMTkx
|
||||
MzMxMzVaMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYD
|
||||
VQQHDAtMb3MgQW5nZWxlczEYMBYGA1UECgwPTXkgT3JnYW5pemF0aW9uMR8wHQYD
|
||||
VQQDDBZkZXJwZXIueW91ci1kb21haW4uY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEuQsY4F6ixzijQoNJ5qhRwiXIQVRi8/4+ARi9y2XDqno+mRTe6kcqbWza
|
||||
o1Qvnb+bDQX3TlI0znR07/TBbnKm3KNlMGMwIQYDVR0RBBowGIIWZGVycGVyLnlv
|
||||
dXItZG9tYWluLmNvbTAdBgNVHQ4EFgQU42YYF2rWI639HjHPYr4T4XNDs5gwHwYD
|
||||
VR0jBBgwFoAUM05GUd0314M3wxC0/hXTJDS/RiswCgYIKoZIzj0EAwIDSAAwRQIg
|
||||
IeK6zsPY9KH9LooAzG5IMjTFfhL66I/LpMxwhD4ZoHkCIQDV4aWOeE/1SH9OJeUQ
|
||||
J9KKE11IOW5ieMP/UGLq5g7I8A==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPTCCAeOgAwIBAgIUM8dtduktU0oMp6IbjUdN0NYfth4wCgYIKoZIzj0EAwIw
|
||||
czELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC0xv
|
||||
cyBBbmdlbGVzMRgwFgYDVQQKDA9NeSBPcmdhbml6YXRpb24xHzAdBgNVBAMMFmRl
|
||||
cnBlci55b3VyLWRvbWFpbi5jb20wIBcNMjMxMjEzMTMzMTM0WhgPMjEyMzExMTkx
|
||||
MzMxMzRaMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYD
|
||||
VQQHDAtMb3MgQW5nZWxlczEYMBYGA1UECgwPTXkgT3JnYW5pemF0aW9uMR8wHQYD
|
||||
VQQDDBZkZXJwZXIueW91ci1kb21haW4uY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
||||
AQcDQgAEYg7HUFZFXMrnG44AFGKASd5UX5Oo70k09G1+OSkCLcyqQPQyHnlLUnEg
|
||||
01kpVOxAM7hEl0WaDdiT6PuyJHO1xKNTMFEwHQYDVR0OBBYEFDNORlHdN9eDN8MQ
|
||||
tP4V0yQ0v0YrMB8GA1UdIwQYMBaAFDNORlHdN9eDN8MQtP4V0yQ0v0YrMA8GA1Ud
|
||||
EwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhAJwSWKP0yDpBe8RAfwwm49Ym
|
||||
clETnK7i3vnFG/OE3Z6UAiBgT8UBSt5surHTtMQIYfezWBTx2pxYSKJxaUStFyDi
|
||||
tw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFMO2b7macGU9gXYD
|
||||
NNVXS+NaDgVBT7chDLvRckGHNUmhRANCAAS5CxjgXqLHOKNCg0nmqFHCJchBVGLz
|
||||
/j4BGL3LZcOqej6ZFN7qRyptbNqjVC+dv5sNBfdOUjTOdHTv9MFucqbc
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
services:
|
||||
headscale-derp:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTPS}:${PANEL_APP_PORT_HTTPS}"
|
||||
- "${PANEL_APP_PORT_STUN}:${PANEL_APP_PORT_STUN}/udp"
|
||||
volumes:
|
||||
- "${DATA_PATH}:/app/certs"
|
||||
environment:
|
||||
- DERP_DOMAIN=${DERP_DOMAIN}
|
||||
- DERP_CERT_MODE=manual
|
||||
- DERP_ADDR=:${PANEL_APP_PORT_HTTPS}
|
||||
- DERP_HTTP_PORT=-1
|
||||
- DERP_STUN=true
|
||||
- DERP_STUN_PORT=${PANEL_APP_PORT_STUN}
|
||||
- DERP_CERT_DIR=/app/certs
|
||||
- DERP_VERIFY_CLIENTS=${CLIENTS_VERIFY_SWITCH}
|
||||
image: fredliang/derper:v1.84.2
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,28 +1,26 @@
|
|||
# Derper
|
||||
|
||||
[](https://hub.docker.com/r/fredliang/derper)
|
||||
[](https://hub.docker.com/r/fredliang/derper)
|
||||
[](https://hub.docker.com/r/fredliang/derper/tags)
|
||||
[](https://hub.docker.com/r/fredliang/derper) [](https://hub.docker.com/r/fredliang/derper) [](https://hub.docker.com/r/fredliang/derper/tags)
|
||||
|
||||
# Setup
|
||||
# 设置
|
||||
|
||||
> required: set env `DERP_DOMAIN` to your domain
|
||||
> required: 设置环境变量 `DERP_DOMAIN` 为您的域名
|
||||
|
||||
```bash
|
||||
docker run -e DERP_DOMAIN=derper.your-domain.com -p 80:80 -p 443:443 -p 3478:3478/udp fredliang/derper
|
||||
```
|
||||
|
||||
| env | required | description | default value |
|
||||
| ------------------- | -------- | ---------------------------------------------------------------------- | ----------------- |
|
||||
| DERP_DOMAIN | true | derper server hostname | your-hostname.com |
|
||||
| DERP_CERT_DIR | false | directory to store LetsEncrypt certs(if addr's port is :443) | /app/certs |
|
||||
| DERP_CERT_MODE | false | mode for getting a cert. possible options: manual, letsencrypt | letsencrypt |
|
||||
| DERP_ADDR | false | listening server address | :443 |
|
||||
| DERP_STUN | false | also run a STUN server | true |
|
||||
| DERP_STUN_PORT | false | The UDP port on which to serve STUN. | 3478 |
|
||||
| DERP_HTTP_PORT | false | The port on which to serve HTTP. Set to -1 to disable | 80 |
|
||||
| DERP_VERIFY_CLIENTS | false | verify clients to this DERP server through a local tailscaled instance | false |
|
||||
| env | required | 描述 | 默认值 |
|
||||
| --- | --- | --- | --- |
|
||||
| DERP\_DOMAIN | true | derper 服务器主机名 | your-hostname.com |
|
||||
| DERP\_CERT\_DIR | false | 存储 Let's Encrypt 证书的目录(如果地址的端口是:443) | /app/certs |
|
||||
| DERP\_CERT\_MODE | false | 获取证书的模式。可能的选项:手动、Let's Encrypt | Let's Encrypt |
|
||||
| DERP\_ADDR | false | 监听服务器地址 | :443 |
|
||||
| DERP\_STUN | false | 同时运行一个 STUN 服务器 | true |
|
||||
| DERP\_STUN\_PORT | false | 用于提供 STUN 服务的 UDP 端口。 | 3478 |
|
||||
| DERP\_HTTP\_PORT | false | HTTP 服务的端口。设置为-1 以禁用 | 80 |
|
||||
| DERP\_VERIFY\_CLIENTS | false | 通过本地 tailscaled 实例验证此 DERP 服务器上的客户端 | false |
|
||||
|
||||
# Usage
|
||||
# 使用方法
|
||||
|
||||
Fully DERP setup offical documentation: https://tailscale.com/kb/1118/custom-derp-servers/
|
||||
完全 DERP 设置官方文档:[https://tailscale.com/kb/1118/custom-derp-servers/](https://tailscale.com/kb/1118/custom-derp-servers/)
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Derper
|
||||
|
||||
[](https://hub.docker.com/r/fredliang/derper)
|
||||
[](https://hub.docker.com/r/fredliang/derper)
|
||||
[](https://hub.docker.com/r/fredliang/derper/tags)
|
||||
|
||||
# Setup
|
||||
|
||||
> required: set env `DERP_DOMAIN` to your domain
|
||||
|
||||
```bash
|
||||
docker run -e DERP_DOMAIN=derper.your-domain.com -p 80:80 -p 443:443 -p 3478:3478/udp fredliang/derper
|
||||
```
|
||||
|
||||
| env | required | description | default value |
|
||||
| ------------------- | -------- | ---------------------------------------------------------------------- | ----------------- |
|
||||
| DERP_DOMAIN | true | derper server hostname | your-hostname.com |
|
||||
| DERP_CERT_DIR | false | directory to store LetsEncrypt certs(if addr's port is :443) | /app/certs |
|
||||
| DERP_CERT_MODE | false | mode for getting a cert. possible options: manual, letsencrypt | letsencrypt |
|
||||
| DERP_ADDR | false | listening server address | :443 |
|
||||
| DERP_STUN | false | also run a STUN server | true |
|
||||
| DERP_STUN_PORT | false | The UDP port on which to serve STUN. | 3478 |
|
||||
| DERP_HTTP_PORT | false | The port on which to serve HTTP. Set to -1 to disable | 80 |
|
||||
| DERP_VERIFY_CLIENTS | false | verify clients to this DERP server through a local tailscaled instance | false |
|
||||
|
||||
# Usage
|
||||
|
||||
Fully DERP setup offical documentation: https://tailscale.com/kb/1118/custom-derp-servers/
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
CONTAINER_NAME="headscale-ui"
|
||||
PANEL_APP_PORT_HTTPS="40182"
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40182
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTPS
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
services:
|
||||
headscale-ui:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTPS}:443"
|
||||
image: ghcr.io/gurucomputing/headscale-ui:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -3,15 +3,20 @@
|
|||
**Headscale 服务器地址,只能用经过域名反向代理的地址。**
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
|
||||
* * *
|
||||
|
||||
# Headscale-UI
|
||||
A web frontend for the [headscale](https://github.com/juanfont/headscale) Tailscale-compatible coordination server.
|
||||
|
||||
## Installation
|
||||
Headscale-UI is currently released as a static site: just take the release and host with your favorite web server. Headscale-UI expects to be served from the `/web` path to avoid overlap with headscale on the same domain. Note that due to CORS (see https://github.com/juanfont/headscale/issues/623), headscale UI *must* be served on the same subdomain, or CORS headers injected via reverse proxy.
|
||||
一个适用于 [headscale](https://github.com/juanfont/headscale) Tailscale 兼容协调服务器的网页前端。
|
||||
|
||||
### Docker Installation
|
||||
If you are using docker, you can install `headscale` alongside `headscale-ui`, like so:
|
||||
## 安装
|
||||
|
||||
Headscale-UI 目前以静态站点的形式发布:只需获取发布版本,并用您喜欢的网页服务器进行托管。Headscale-UI 预期将从 `/web` 路径提供服务,以避免与同一域名上的 headscale 发生冲突。请注意,由于 CORS(见 [https://github.com/juanfont/headscale/issues/623](https://github.com/juanfont/headscale/issues/623)),headscale UI *必须* 在同一子域名上提供服务,或者通过反向代理注入 CORS 标头。
|
||||
|
||||
### Docker 安装
|
||||
|
||||
如果您使用 docker,可以像这样安装 `headscale` 和 `headscale-ui`:
|
||||
|
||||
```yaml
|
||||
version: '3.5'
|
||||
|
|
@ -34,17 +39,21 @@ services:
|
|||
# - 9443:443
|
||||
```
|
||||
|
||||
Headscale UI serves on port 443 and uses a self signed cert by default. You will need to add a `config.yaml` file under your `container-config` folder so that `headscale` has all of the required settings declared. An example from the official `headscale` repo is [here](https://github.com/juanfont/headscale/blob/main/config-example.yaml).
|
||||
Headscale UI 在 443 端口上运行,默认使用自签名的证书。您需要在 `container-config` 文件夹下添加一个 `config.yaml` 文件,以便 `headscale` 声明所有必需的设置。官方 `headscale` 仓库的一个示例[在这里](https://github.com/juanfont/headscale/blob/main/config-example.yaml) 。
|
||||
|
||||
### Additional Docker Settings
|
||||
The docker container lets you set the following settings:
|
||||
| Variable | Description | Example |
|
||||
|----|----|----|
|
||||
| HTTP_PORT | Sets the HTTP port to an alternate value | `80` |
|
||||
| HTTPS_PORT | Sets the HTTPS port to an alternate value | `443` |
|
||||
### 额外的 Docker 设置
|
||||
|
||||
Docker 容器允许您设置以下设置:
|
||||
|
||||
| 变量 | 描述 | 示例 |
|
||||
| --- | --- | --- |
|
||||
| HTTP\_PORT | 设置 HTTP 端口号为其他值 | 80 |
|
||||
| HTTPS\_PORT | 设置 HTTPS 端口号为其他值 | 443 |
|
||||
|
||||
### 代理设置
|
||||
|
||||
您需要在您的域名上安装 `headscale-ui` 时需要一个反向代理。以下是一个实现此功能的示例 [Caddy 配置](https://caddyserver.com/) :
|
||||
|
||||
### Proxy Settings
|
||||
You will need a reverse proxy to install `headscale-ui` on your domain. Here is an example [Caddy Config](https://caddyserver.com/) to achieve this:
|
||||
```
|
||||
https://hs.yourdomain.com.au {
|
||||
reverse_proxy /web* https://headscale-ui {
|
||||
|
|
@ -59,8 +68,10 @@ https://hs.yourdomain.com.au {
|
|||
|
||||
```
|
||||
|
||||
### Cross Domain Installation
|
||||
If you do not want to configure headscale-ui on the same subdomain as headscale, you must intercept headscale traffic via your reverse proxy to fix CORS (see https://github.com/juanfont/headscale/issues/623). Here is an example fix with Caddy, replacing your headscale UI domain with `hs-ui.yourdomain.com.au`:
|
||||
### 跨域安装
|
||||
|
||||
如果您不想在与 headscale 相同的子域名上配置 headscale-ui,您必须通过反向代理拦截 headscale 流量以修复 CORS(见 [https://github.com/juanfont/headscale/issues/623](https://github.com/juanfont/headscale/issues/623))。以下是一个使用 Caddy 的示例修复,将您的 headscale UI 域名替换为 `hs-ui.yourdomain.com.au`:
|
||||
|
||||
```
|
||||
https://hs.yourdomain.com.au {
|
||||
@hs-options {
|
||||
|
|
@ -89,40 +100,49 @@ https://hs.yourdomain.com.au {
|
|||
|
||||
```
|
||||
|
||||
### Other Configurations
|
||||
See [Other Configurations](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/configuration.md) for further proxy examples, such as Traefik
|
||||
### 其他配置
|
||||
|
||||
## Versioning
|
||||
The following versions correspond to the appropriate headscale version
|
||||
| Headscale Version | HS-UI Version |
|
||||
|-------------------|---------------|
|
||||
| 19+ | 2023-01-30+ |
|
||||
| <19 | <2023-01-30 |
|
||||
查看[其他配置](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/configuration.md)以获取更多代理示例,例如 Traefik
|
||||
|
||||
## Troubleshooting
|
||||
Make sure you are using the latest version of headscale. Headscale-UI is only tested against:
|
||||
## 版本控制
|
||||
|
||||
* The current stable version of headscale
|
||||
* Chrome/Chrome Mobile
|
||||
* Firefox/Firefox Mobile
|
||||
以下版本对应适当的 Headscale 版本
|
||||
|
||||
Note that while mobile is checked for functionality, the web experience is not mobile optimised.
|
||||
| Headscale 版本 | HS-UI 版本 |
|
||||
| --- | --- |
|
||||
| 19+ | 2023-01-30+ |
|
||||
| <19 | <2023-01-30 |
|
||||
|
||||
If you are getting errors about preflight checks, it's probably CORS related. Make sure your UI sits on the same subdomain as headscale or inject CORS headers.
|
||||
## 故障排除
|
||||
|
||||
### Errors related to "Missing Bearer Prefix"
|
||||
Your API key is either not saved or you haven't configured your reverse proxy. Create an API key in `headscale` (via command line) with `headscale apikeys create` or `docker exec <headscale container> headscale apikeys create` and save it in `settings`.
|
||||
请确保您正在使用最新的 headscale 版本。Headscale-UI 仅针对以下版本进行测试:
|
||||
|
||||
HS-UI *has* to be ran on the same subdomain as headscale or you need to configure CORS. Yes you need to use a reverse proxy to do this. Use a reverse proxy. If you are trying to use raw IPs and ports, it *will* not work.
|
||||
* 当前 headscale 的稳定版本
|
||||
* Chrome/Chrome 移动版
|
||||
* Firefox/Firefox 移动版
|
||||
|
||||
## Security
|
||||
see [security](https://github.com/gurucomputing/headscale-ui/blob/master/SECURITY.md) for details
|
||||
请注意,虽然已检查移动版的功能,但网页体验并未针对移动设备进行优化。
|
||||
|
||||
## Development
|
||||
see [development](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/development.md) for details
|
||||
如果您收到有关预检检查的错误,这可能是 CORS 相关的问题。请确保您的 UI 位于与 headscale 相同的子域名上,或者注入 CORS 头。
|
||||
|
||||
## Style Guide
|
||||
see [style](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/style.md) for details
|
||||
### 与“缺少 Bearer 前缀”相关的错误
|
||||
|
||||
## Architecture
|
||||
See [architecture](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/architecture.md) for details
|
||||
您的 API 密钥可能未保存,或者您尚未配置反向代理。在 `headscale`(通过命令行)中使用 `headscale apikeys create` 或 `docker exec <headscale container> headscale apikeys create` 创建 API 密钥,并将其保存在`设置`中。
|
||||
|
||||
HS-UI *必须*在与 headscale 相同的子域名上运行或您需要配置 CORS。是的,您需要使用反向代理来完成此操作。使用反向代理。如果您尝试使用原始 IP 和端口,它*将不会工作* 。
|
||||
|
||||
## 安全
|
||||
|
||||
详情见[安全](https://github.com/gurucomputing/headscale-ui/blob/master/SECURITY.md)
|
||||
|
||||
## 开发
|
||||
|
||||
详情见[开发](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/development.md)
|
||||
|
||||
## 风格指南
|
||||
|
||||
查看[样式](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/style.md)详情
|
||||
|
||||
## 架构
|
||||
|
||||
查看[架构](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/architecture.md)详情
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
# 使用说明
|
||||
|
||||
**Headscale 服务器地址,只能用经过域名反向代理的地址。**
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
# Headscale-UI
|
||||
A web frontend for the [headscale](https://github.com/juanfont/headscale) Tailscale-compatible coordination server.
|
||||
|
||||
## Installation
|
||||
Headscale-UI is currently released as a static site: just take the release and host with your favorite web server. Headscale-UI expects to be served from the `/web` path to avoid overlap with headscale on the same domain. Note that due to CORS (see https://github.com/juanfont/headscale/issues/623), headscale UI *must* be served on the same subdomain, or CORS headers injected via reverse proxy.
|
||||
|
||||
### Docker Installation
|
||||
If you are using docker, you can install `headscale` alongside `headscale-ui`, like so:
|
||||
|
||||
```yaml
|
||||
version: '3.5'
|
||||
services:
|
||||
headscale:
|
||||
image: headscale/headscale:latest
|
||||
container_name: headscale
|
||||
volumes:
|
||||
- ./container-config:/etc/headscale
|
||||
- ./container-data/data:/var/lib/headscale
|
||||
# ports:
|
||||
# - 27896:8080
|
||||
command: headscale serve
|
||||
restart: unless-stopped
|
||||
headscale-ui:
|
||||
image: ghcr.io/gurucomputing/headscale-ui:latest
|
||||
restart: unless-stopped
|
||||
container_name: headscale-ui
|
||||
# ports:
|
||||
# - 9443:443
|
||||
```
|
||||
|
||||
Headscale UI serves on port 443 and uses a self signed cert by default. You will need to add a `config.yaml` file under your `container-config` folder so that `headscale` has all of the required settings declared. An example from the official `headscale` repo is [here](https://github.com/juanfont/headscale/blob/main/config-example.yaml).
|
||||
|
||||
### Additional Docker Settings
|
||||
The docker container lets you set the following settings:
|
||||
| Variable | Description | Example |
|
||||
|----|----|----|
|
||||
| HTTP_PORT | Sets the HTTP port to an alternate value | `80` |
|
||||
| HTTPS_PORT | Sets the HTTPS port to an alternate value | `443` |
|
||||
|
||||
### Proxy Settings
|
||||
You will need a reverse proxy to install `headscale-ui` on your domain. Here is an example [Caddy Config](https://caddyserver.com/) to achieve this:
|
||||
```
|
||||
https://hs.yourdomain.com.au {
|
||||
reverse_proxy /web* https://headscale-ui {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
|
||||
reverse_proxy * http://headscale:8080
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### Cross Domain Installation
|
||||
If you do not want to configure headscale-ui on the same subdomain as headscale, you must intercept headscale traffic via your reverse proxy to fix CORS (see https://github.com/juanfont/headscale/issues/623). Here is an example fix with Caddy, replacing your headscale UI domain with `hs-ui.yourdomain.com.au`:
|
||||
```
|
||||
https://hs.yourdomain.com.au {
|
||||
@hs-options {
|
||||
host hs.yourdomain.com.au
|
||||
method OPTIONS
|
||||
}
|
||||
@hs-other {
|
||||
host hs.yourdomain.com.au
|
||||
}
|
||||
handle @hs-options {
|
||||
header {
|
||||
Access-Control-Allow-Origin https://hs-ui.yourdomain.au
|
||||
Access-Control-Allow-Headers *
|
||||
Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE"
|
||||
}
|
||||
respond 204
|
||||
}
|
||||
handle @hs-other {
|
||||
reverse_proxy http://headscale:8080 {
|
||||
header_down Access-Control-Allow-Origin https://hs-ui.yourdomain.com.au
|
||||
header_down Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE"
|
||||
header_down Access-Control-Allow-Headers *
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Other Configurations
|
||||
See [Other Configurations](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/configuration.md) for further proxy examples, such as Traefik
|
||||
|
||||
## Versioning
|
||||
The following versions correspond to the appropriate headscale version
|
||||
| Headscale Version | HS-UI Version |
|
||||
|-------------------|---------------|
|
||||
| 19+ | 2023-01-30+ |
|
||||
| <19 | <2023-01-30 |
|
||||
|
||||
## Troubleshooting
|
||||
Make sure you are using the latest version of headscale. Headscale-UI is only tested against:
|
||||
|
||||
* The current stable version of headscale
|
||||
* Chrome/Chrome Mobile
|
||||
* Firefox/Firefox Mobile
|
||||
|
||||
Note that while mobile is checked for functionality, the web experience is not mobile optimised.
|
||||
|
||||
If you are getting errors about preflight checks, it's probably CORS related. Make sure your UI sits on the same subdomain as headscale or inject CORS headers.
|
||||
|
||||
### Errors related to "Missing Bearer Prefix"
|
||||
Your API key is either not saved or you haven't configured your reverse proxy. Create an API key in `headscale` (via command line) with `headscale apikeys create` or `docker exec <headscale container> headscale apikeys create` and save it in `settings`.
|
||||
|
||||
HS-UI *has* to be ran on the same subdomain as headscale or you need to configure CORS. Yes you need to use a reverse proxy to do this. Use a reverse proxy. If you are trying to use raw IPs and ports, it *will* not work.
|
||||
|
||||
## Security
|
||||
see [security](https://github.com/gurucomputing/headscale-ui/blob/master/SECURITY.md) for details
|
||||
|
||||
## Development
|
||||
see [development](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/development.md) for details
|
||||
|
||||
## Style Guide
|
||||
see [style](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/style.md) for details
|
||||
|
||||
## Architecture
|
||||
See [architecture](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/architecture.md) for details
|
||||
|
|
@ -2,81 +2,79 @@
|
|||
|
||||
## 数据文件夹授权
|
||||
|
||||
- 1、**必要操作:** 首次安装完成后,进入已安装应用界面,点击跳转数据目录,修改目录下的`data`文件夹为`1000`用户和用户组。
|
||||
* 1、**必要操作:** 首次安装完成后,进入已安装应用界面,点击跳转数据目录,修改目录下的`data`文件夹为`1000`用户和用户组。
|
||||
|
||||
命令行修改则类似如下,路径按需修改:
|
||||
|
||||
```
|
||||
chown -R 1000:1000 /opt/1panel/apps/local/headscale-webui/headscale-webui/data
|
||||
```
|
||||
|
||||
- 2、回到已安装应用界面,重建应用。
|
||||
|
||||
* 2、回到已安装应用界面,重建应用。
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
<p align="center">
|
||||
<a href="https://github.com/juanfont/headscale">
|
||||
<img src="https://github.com/iFargle/headscale-webui/raw/main/static/img/headscale3-dots.png" width="250">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h2 align="center">Headscale-WebUI</h3>
|
||||
* * *
|
||||
|
||||
<p align="center">
|
||||
A simple Headscale web UI for small-scale deployments.
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/iFargle/headscale-webui/blob/main/README.md#Screenshots">Screenshots</a> | <a href="https://github.com/iFargle/headscale-webui/blob/main/SETUP.md">Installation</a> | <a href="https://github.com/iFargle/headscale-webui/issues">Issues</a>
|
||||
</p>
|
||||
[](https://github.com/juanfont/headscale)
|
||||
|
||||
---
|
||||
# Features
|
||||
1. Enable/Disable routes and exit nodes
|
||||
* Manage failover routes as well
|
||||
2. Add, move, rename, and remove machines
|
||||
3. Add and remove users/namespaces
|
||||
4. Add and expire PreAuth keys
|
||||
5. Add and remove machine tags
|
||||
6. View machine details
|
||||
* Hostname
|
||||
* User associated with the machine
|
||||
* IP addresses in the Tailnet
|
||||
* Last seen by the control server
|
||||
* Last update with the control server
|
||||
* Creation date
|
||||
* Expiration date (will also display a badge when nearing expiration)
|
||||
* PreAuth key associated with the machine
|
||||
* Enable / disable routes and exit nodes
|
||||
* Add and delete machine tags
|
||||
7. Basic and OIDC Authentication
|
||||
* OIDC Authentication tested with Authelia and Keycloak
|
||||
8. Change your color theme! See MaterializeCSS Documentation for Colors for examples.
|
||||
9. Search your machines and users.
|
||||
* Machines have tags you can use to filter search:
|
||||
* `tag:tagname` Searches only for specific tags
|
||||
* `machine:machine-name` Searches only for specific machines
|
||||
* `user:user-name` Searches only for specific users
|
||||
## Headscale-WebUI
|
||||
|
||||
一个简单的 Headscale 网络 UI,适用于小规模部署。
|
||||
|
||||
---
|
||||
# Installation
|
||||
* See [SETUP.md](SETUP.md) for installation and configuration instructions.
|
||||
[截图](https://github.com/iFargle/headscale-webui/blob/main/README.md#Screenshots) | [安装](https://github.com/iFargle/headscale-webui/blob/main/SETUP.md) | [问题](https://github.com/iFargle/headscale-webui/issues)
|
||||
|
||||
---
|
||||
# Screenshots:
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
* * *
|
||||
|
||||
---
|
||||
# Tech used:
|
||||
* Python - [Link](https://www.python.org/)
|
||||
* Poetry - [Link](https://python-poetry.org/)
|
||||
* MaterializeCSS - [Link](https://github.com/Dogfalo/materialize)
|
||||
* jQuery - [Link](https://jquery.com/)
|
||||
# 功能
|
||||
|
||||
For Python libraries, see [pyproject.toml](https://github.com/iFargle/headscale-webui/blob/main/pyproject.toml)
|
||||
1. 启用/禁用路由和出口节点
|
||||
* 管理故障转移路由
|
||||
2. 添加、移动、重命名和删除机器
|
||||
3. 添加和删除用户/命名空间
|
||||
4. 添加和过期预认证密钥
|
||||
5. 添加和删除机器标签
|
||||
6. 查看机器详情
|
||||
* 主机名
|
||||
* 与机器关联的用户
|
||||
* Tailnet 中的 IP 地址
|
||||
* 最后由控制服务器看到
|
||||
* 最后更新时间(与控制服务器同步)
|
||||
* 创建日期
|
||||
* 过期日期(临近过期时也会显示徽章)
|
||||
* 与机器关联的预授权密钥
|
||||
* 启用/禁用路由和出口节点
|
||||
* 添加和删除机器标签
|
||||
7. 基本和 OIDC 身份验证
|
||||
* 使用 Authelia 和 Keycloak 测试的 OIDC 身份验证
|
||||
8. 更改您的颜色主题!请参阅 MaterializeCSS 文档中的颜色示例。
|
||||
9. 搜索您的计算机和用户。
|
||||
* 计算机有您可以用来筛选搜索的标签:
|
||||
* `标签:tagname` 仅搜索特定标签
|
||||
* `machine:machine-name` 仅搜索特定机器
|
||||
* `user:user-name` 仅搜索特定用户
|
||||
|
||||
If you use this project, please reach out! It keeps me motivated! Thank you!
|
||||
* * *
|
||||
|
||||
# 安装
|
||||
|
||||
* 请参阅 [SETUP.md](SETUP.md) 获取安装和配置说明。
|
||||
|
||||
* * *
|
||||
|
||||
# 截图:
|
||||
|
||||
    
|
||||
|
||||
* * *
|
||||
|
||||
# 使用的技术:
|
||||
|
||||
* Python - [链接](https://www.python.org/)
|
||||
* 诗歌 - [链接](https://python-poetry.org/)
|
||||
* MaterializeCSS - [链接](https://github.com/Dogfalo/materialize)
|
||||
* jQuery - [链接](https://jquery.com/)
|
||||
|
||||
Python 库请参阅 [pyproject.toml](https://github.com/iFargle/headscale-webui/blob/main/pyproject.toml)
|
||||
|
||||
如果您使用这个项目,请与我联系!这让我更有动力!谢谢!
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
# 使用说明
|
||||
|
||||
## 数据文件夹授权
|
||||
|
||||
- 1、**必要操作:** 首次安装完成后,进入已安装应用界面,点击跳转数据目录,修改目录下的`data`文件夹为`1000`用户和用户组。
|
||||
|
||||
命令行修改则类似如下,路径按需修改:
|
||||
```
|
||||
chown -R 1000:1000 /opt/1panel/apps/local/headscale-webui/headscale-webui/data
|
||||
```
|
||||
|
||||
- 2、回到已安装应用界面,重建应用。
|
||||
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
<p align="center">
|
||||
<a href="https://github.com/juanfont/headscale">
|
||||
<img src="https://github.com/iFargle/headscale-webui/raw/main/static/img/headscale3-dots.png" width="250">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h2 align="center">Headscale-WebUI</h3>
|
||||
|
||||
<p align="center">
|
||||
A simple Headscale web UI for small-scale deployments.
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/iFargle/headscale-webui/blob/main/README.md#Screenshots">Screenshots</a> | <a href="https://github.com/iFargle/headscale-webui/blob/main/SETUP.md">Installation</a> | <a href="https://github.com/iFargle/headscale-webui/issues">Issues</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
# Features
|
||||
1. Enable/Disable routes and exit nodes
|
||||
* Manage failover routes as well
|
||||
2. Add, move, rename, and remove machines
|
||||
3. Add and remove users/namespaces
|
||||
4. Add and expire PreAuth keys
|
||||
5. Add and remove machine tags
|
||||
6. View machine details
|
||||
* Hostname
|
||||
* User associated with the machine
|
||||
* IP addresses in the Tailnet
|
||||
* Last seen by the control server
|
||||
* Last update with the control server
|
||||
* Creation date
|
||||
* Expiration date (will also display a badge when nearing expiration)
|
||||
* PreAuth key associated with the machine
|
||||
* Enable / disable routes and exit nodes
|
||||
* Add and delete machine tags
|
||||
7. Basic and OIDC Authentication
|
||||
* OIDC Authentication tested with Authelia and Keycloak
|
||||
8. Change your color theme! See MaterializeCSS Documentation for Colors for examples.
|
||||
9. Search your machines and users.
|
||||
* Machines have tags you can use to filter search:
|
||||
* `tag:tagname` Searches only for specific tags
|
||||
* `machine:machine-name` Searches only for specific machines
|
||||
* `user:user-name` Searches only for specific users
|
||||
|
||||
|
||||
---
|
||||
# Installation
|
||||
* See [SETUP.md](SETUP.md) for installation and configuration instructions.
|
||||
|
||||
---
|
||||
# Screenshots:
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
---
|
||||
# Tech used:
|
||||
* Python - [Link](https://www.python.org/)
|
||||
* Poetry - [Link](https://python-poetry.org/)
|
||||
* MaterializeCSS - [Link](https://github.com/Dogfalo/materialize)
|
||||
* jQuery - [Link](https://jquery.com/)
|
||||
|
||||
For Python libraries, see [pyproject.toml](https://github.com/iFargle/headscale-webui/blob/main/pyproject.toml)
|
||||
|
||||
If you use this project, please reach out! It keeps me motivated! Thank you!
|
||||
|
|
@ -1,44 +1,46 @@
|
|||
# Heimdall
|
||||
# 海姆达尔
|
||||
|
||||
[](https://heimdall.site)
|
||||
|
||||
[](https://discord.gg/CCjHKn4)
|
||||
[](https://hub.docker.com/r/linuxserver/heimdall/)
|
||||
[](https://www.firsttimersonly.com/)
|
||||
[](https://www.paypal.me/heimdall)
|
||||
[](https://discord.gg/CCjHKn4) [](https://hub.docker.com/r/linuxserver/heimdall/) [](https://www.firsttimersonly.com/) [](https://www.paypal.me/heimdall)
|
||||
|
||||
___
|
||||
* * *
|
||||
|
||||
Visit the website - https://heimdall.site
|
||||
___
|
||||
访问网站 - [https://heimdall.site](https://heimdall.site)
|
||||
|
||||
## About
|
||||
As the name suggests Heimdall Application Dashboard is a dashboard for all your web applications. It doesn't need to be limited to applications though, you can add links to anything you like.
|
||||
* * *
|
||||
|
||||
Heimdall is an elegant solution to organise all your web applications. It’s dedicated to this purpose so you won’t lose your links in a sea of bookmarks.
|
||||
## 关于
|
||||
|
||||
Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.
|
||||
正如其名,海姆达尔应用仪表板是您所有网络应用的仪表板。不过,它并不仅限于应用,您还可以添加您喜欢的任何链接。
|
||||
|
||||
海姆达尔是一个优雅的解决方案,用于组织您所有的网络应用程序。它专注于这个目的,所以您不会在书签的海洋中丢失链接。
|
||||
|
||||
为什么不将其用作您的浏览器起始页呢?它甚至能够包含使用谷歌、必应或 DuckDuckGo 的搜索栏。
|
||||
|
||||

|
||||
|
||||
## Video
|
||||
If you want to see a quick video of it in use, go to https://youtu.be/GXnnMAxPzMc
|
||||
## 视频
|
||||
|
||||
## Supported applications
|
||||
You can use the app to link to any site or application, but Foundation apps will auto fill in the icon for the app and supply a default color for the tile. In addition Enhanced apps allow you provide details to an apps API, allowing you to view live stats directly on the dashboad. For example, the NZBGet and Sabnzbd Enhanced apps will display the queue size and download speed while something is downloading.
|
||||
如果您想快速查看其使用视频,请访问 [https://youtu.be/GXnnMAxPzMc](https://youtu.be/GXnnMAxPzMc)
|
||||
|
||||
Supported applications are recognized by the title of the application as entered in the title field when adding an application. For example, to add a link to pfSense, begin by typing "p" in the title field and then select "pfSense" from the list of supported applications.
|
||||
## 支持的应用程序
|
||||
|
||||
您可以使用该应用链接到任何网站或应用程序,但基础应用程序将自动填充应用程序的图标并为磁贴提供默认颜色。此外,增强型应用程序允许您向应用程序的 API 提供详细信息,让您可以直接在仪表板上查看实时统计数据。例如,NZBGet 和 Sabnzbd 增强型应用程序将在下载时显示队列大小和下载速度。
|
||||
|
||||
支持的应用程序通过在添加应用程序时在标题字段中输入的应用程序标题来识别。例如,要添加 pfSense 的链接,请在标题字段中输入“p”,然后从支持的应用程序列表中选择“pfSense”。
|
||||
|
||||
[](https://apps.heimdall.site/applications/enhanced)
|
||||
|
||||
[](https://apps.heimdall.site/applications/foundation)
|
||||
|
||||
## Installing
|
||||
Apart from the Laravel 8 dependencies, namely PHP >= 7.4.32, BCMath PHP Extension, INTL PHP Extension, Ctype PHP Extension, Fileinfo PHP extension, JSON PHP Extension, Mbstring PHP Extension, OpenSSL PHP Extension, PDO PHP Extension, Tokenizer PHP Extension, XML PHP Extension, the only other thing Heimdall needs is sqlite support and zip support (php-zip).
|
||||
## 安装
|
||||
|
||||
If you find you can't change the background make sure `php_fileinfo` is enabled in your php.ini. I believe it should be by default, but one user came across the issue on a windows system.
|
||||
除了 Laravel 8 的依赖项,即 PHP >= 7.4.32、BCMath PHP 扩展、INTL PHP 扩展、Ctype PHP 扩展、Fileinfo PHP 扩展、JSON PHP 扩展、Mbstring PHP 扩展、OpenSSL PHP 扩展、PDO PHP 扩展、Tokenizer PHP 扩展、XML PHP 扩展之外,Heimdall 还需要 sqlite 支持和 zip 支持(php-zip)。
|
||||
|
||||
Installation is as simple as cloning the repository somewhere, or downloading and extracting the zip/tar and pointing your httpd document root to the `/public` folder then creating the .env file and generating an encryption key (this is all taken care of for you with the docker).
|
||||
如果你发现无法更改背景,请确保在 php.ini 中启用了 `php_fileinfo`。我相信它应该是默认启用的,但一位用户在 Windows 系统上遇到了这个问题。
|
||||
|
||||
安装非常简单,只需将仓库克隆到某个位置,或者下载并解压 zip/tar 文件,然后将 httpd 文档根目录指向 `/public` 文件夹,然后创建.env 文件并生成加密密钥(所有这些操作都由 docker 为你处理)。
|
||||
|
||||
```
|
||||
cd /path/to/heimdall
|
||||
|
|
@ -46,83 +48,91 @@ cp .env.example .env
|
|||
php artisan key:generate
|
||||
```
|
||||
|
||||
For simple testing you could just go to the folder and type `php artisan serve`
|
||||
对于简单测试,你只需进入文件夹,输入 `php artisan serve`
|
||||
|
||||
There is also a multi-arch Docker which supports x86-64, armhf and arm64, instructions on how to use them at
|
||||
也存在支持 x86-64、armhf 和 arm64 的多架构 Docker,如何在
|
||||
|
||||
- https://hub.docker.com/r/linuxserver/heimdall/
|
||||
* [https://hub.docker.com/r/linuxserver/heimdall/](https://hub.docker.com/r/linuxserver/heimdall/)
|
||||
|
||||
## Updating
|
||||
To update your instance, simply clone this repository or download the zip/tar file with the new version and copy it over the old installation.
|
||||
## 更新
|
||||
|
||||
## Search Providers
|
||||
v2.3.0 added the ability for users to customise the search options.
|
||||
要更新您的实例,只需克隆此仓库或下载包含新版本的 zip/tar 文件,并将其复制到旧安装上。
|
||||
|
||||
Options are stored in `/storage/app/searchproviders.yaml` (`/config/www/searchproviders.yaml` on docker installs), feel free to rearrange the options, add new ones, delete ones you don't use, etc.
|
||||
## 搜索提供商
|
||||
|
||||
Consider contributing to https://github.com/linuxserver/Heimdall/discussions/categories/search-providers to help others add new ones.
|
||||
v2.3.0 版本增加了用户自定义搜索选项的功能。
|
||||
|
||||
The item at the top of the list `Tiles` allows you to search for apps on your dashboard by name, helpful when you have lots of icons.
|
||||
选项存储在 `/storage/app/searchproviders.yaml` (在 Docker 安装中为 `/config/www/searchproviders.yaml` ),您可以随意调整选项顺序,添加新的选项,删除不使用的选项等。
|
||||
|
||||
## New background image not being set
|
||||
If you are using the docker image or a default php install you may find images over 2MB wont get set as the background image, you just need to change the `upload_max_filesize` in the php.ini.
|
||||
请考虑向 [https://github.com/linuxserver/Heimdall/discussions/categories/search-providers](https://github.com/linuxserver/Heimdall/discussions/categories/search-providers) 做出贡献,以帮助他人添加新的选项。
|
||||
|
||||
If you are using the linuxserver.io docker image simply edit `/path/to/config/php/php-local.ini` and add `upload_max_filesize = 30M` to the end.
|
||||
列表顶部的项目`瓷砖`允许您通过名称在仪表板上搜索应用程序,当您有很多图标时非常有用。
|
||||
|
||||
## Docker and enhanced apps
|
||||
If you are running the docker and the EnhancedApps you are using are also in dockers, you may need to use the docker networking addresses to communicate with them.
|
||||
## 新背景图片未设置
|
||||
|
||||
You can do this by using `http(s)://docker_name:port` in the config section. Instead of the name you can use the internal docker ip, this usually starts with `172.`
|
||||
如果您正在使用 docker 镜像或默认的 php 安装,您可能会发现超过 2MB 的图片无法设置为背景图片,您只需更改 php.ini 中的 `upload_max_filesize`。
|
||||
|
||||
## Languages
|
||||
The app has been translated into several languages; however, the quality of the translations could do with work. If you would like to improve them, or help with other translations, they are stored in `/resources/lang/`.
|
||||
如果您正在使用 linuxserver.io docker 镜像,只需编辑 `/path/to/config/php/php-local.ini` ,并在末尾添加 `upload_max_filesize = 30M`。
|
||||
|
||||
To create a new language translation, make a new folder with the ISO 3166-1 alpha-2 code as the name, copy `app.php` from `/resources/lang/en/app.php` into your new folder and replace the English strings.
|
||||
## Docker 和增强应用
|
||||
|
||||
When you are finished, create a pull request.
|
||||
如果您正在运行 docker,并且您使用的 EnhancedApps 也位于 docker 中,您可能需要使用 docker 网络地址来与它们通信。
|
||||
|
||||
Currently added languages are
|
||||
您可以通过在配置部分使用 `http(s)://docker_name:port` 来实现这一点。代替名称,您可以使用内部 Docker IP,这通常以 `172.` 开头。
|
||||
|
||||
- Breton
|
||||
- Chinese
|
||||
- Danish
|
||||
- Dutch
|
||||
- English
|
||||
- Finnish
|
||||
- French
|
||||
- German
|
||||
- Greek
|
||||
- Hungarian
|
||||
- Italian
|
||||
- Japanese
|
||||
- Korean
|
||||
- Lombard
|
||||
- Norwegian
|
||||
- Polish
|
||||
- Portuguese
|
||||
- Russian
|
||||
- Slovenian
|
||||
- Spanish
|
||||
- Swedish
|
||||
- Turkish
|
||||
## 语言
|
||||
|
||||
## Web Server Configuration
|
||||
该应用已翻译成多种语言;然而,翻译质量有待提高。如果您想改进它们或帮助进行其他翻译,它们存储在 `/resources/lang/`。
|
||||
|
||||
要创建一种新的语言翻译,创建一个以 ISO 3166-1 alpha-2 代码命名的文件夹,将 `app.php` 从 `/resources/lang/en/app.php` 复制到您的文件夹中,并替换英文字符串。
|
||||
|
||||
完成之后,创建一个 pull request。
|
||||
|
||||
目前添加的语言有
|
||||
|
||||
* 布列塔尼语
|
||||
* 中文
|
||||
* 丹麦语
|
||||
* 荷兰语
|
||||
* 英语
|
||||
* 芬兰语
|
||||
* 法语
|
||||
* 德语
|
||||
* 希腊语
|
||||
* 匈牙利语
|
||||
* 意大利语
|
||||
* 日语
|
||||
* 韩语
|
||||
* 伦巴第
|
||||
* 挪威语
|
||||
* 波兰语
|
||||
* 葡萄牙语
|
||||
* 俄语
|
||||
* 斯洛文尼亚语
|
||||
* 西班牙语
|
||||
* 瑞典语
|
||||
* 土耳其
|
||||
|
||||
## Web 服务器配置
|
||||
|
||||
### Apache
|
||||
A `.htaccess` file ships with the app, however, a lot of apache installations disallow `.htaccess` files by default.
|
||||
You will notice this due to some links not working like `/settings`.
|
||||
In addition mod-rewrite needs to be enabled if it isn't already.
|
||||
|
||||
#### Fixes & work around options
|
||||
##### - Apache global allow .htaccess
|
||||
Find the `AllowOverride None` line in your apache configuration and change this to `AllowOverride All`
|
||||
应用程序附带一个 `.htaccess` 文件,然而,许多 Apache 安装默认禁止 `.htaccess` 文件。您会注意到一些链接无法正常工作,如 `/settings`。此外,如果尚未启用,还需要启用 mod-rewrite 模块。
|
||||
|
||||
##### - Apache vhost configuration allow .htaccess
|
||||
In the apache vhost configuration in the `<Directory />` block add `AllowOverride All`
|
||||
#### 修复和绕过选项
|
||||
|
||||
##### \- Apache 全局允许 .htaccess
|
||||
|
||||
在您的 Apache 配置中找到 `AllowOverride None` 行,并将其更改为 `AllowOverride All`
|
||||
|
||||
##### \- Apache vhost 配置允许 .htaccess
|
||||
|
||||
在 apache vhost 配置中的 `<Directory />` 块中添加 `AllowOverride All`
|
||||
|
||||
##### \- 在 apache 配置中添加.htaccess 内容
|
||||
|
||||
您可以将完整的 `.htaccess` 添加到您的 apache 配置中,这样您就不需要允许 `.htaccess` 文件。您甚至可以在将其插入到 apache 配置中时缩短 `.htaccess` 的内容:
|
||||
|
||||
##### - Add .htaccess content in apache configuration
|
||||
You can add the full `.htaccess` into your apache configuration, this way you do not need to allow `.htaccess` files.
|
||||
You can even shorten the content of the `.htaccess` when inserting it into the apache configuration to:
|
||||
```
|
||||
Options +FollowSymLinks
|
||||
RewriteEngine On
|
||||
|
|
@ -131,33 +141,36 @@ RewriteCond %{REQUEST_FILENAME} !-d
|
|||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^ index.php [L]
|
||||
```
|
||||
#### More info
|
||||
More info about `AllowOverride` can be found here:
|
||||
https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride
|
||||
|
||||
#### 更多信息
|
||||
|
||||
更多关于 `AllowOverride` 的信息可以在这里找到: [https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride](https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride)
|
||||
|
||||
### Nginx
|
||||
If you are using Nginx, the following directive in your site configuration will direct all requests to the `index.php` front controller:
|
||||
|
||||
如果您正在使用 Nginx,您的站点配置中的以下指令将把所有请求导向 `index.php` 前端控制器:
|
||||
|
||||
```
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
```
|
||||
Someone was using the same nginx setup to both run this and reverse proxy Plex, Plex is served from `/web` so their location was interfering with the `/webfonts`.
|
||||
|
||||
Therefore, if your fonts aren't showing because you have a location for `/web`, add the following
|
||||
有人使用相同的 nginx 配置来运行这个和反向代理 Plex,Plex 是从 `/web` 提供的,所以它们的位置干扰了 `/webfonts`。
|
||||
|
||||
因此,如果你的字体没有显示,因为你有一个位于 `/web` 的位置,请添加以下内容
|
||||
|
||||
```
|
||||
location /webfonts {
|
||||
try_files $uri $uri/;
|
||||
}
|
||||
```
|
||||
If there are any other locations which might interfere with any of the folders in the `/public` folder, you might have to do the same for those as well, but it's a super fringe case.
|
||||
|
||||
### Reverse proxy
|
||||
If you'd like to reverse proxy this app, we recommend using our letsencrypt/nginx docker image: [SWAG - Secure Web Application Gateway](https://hub.docker.com/r/linuxserver/swag)
|
||||
You can either reverse proxy from the root location, or from a subdomain (subfolder method is currently not supported). For HTTPS proxy, make sure you use the HTTPS port of Heimdall webserver, otherwise some links may break. You can add security through `.htpasswd`
|
||||
如果有任何其他位置可能会干扰到 `/public` 文件夹中的任何文件夹,您可能也需要对它们做同样的处理,但这只是一个极边缘的情况。
|
||||
|
||||
### 反向代理
|
||||
|
||||
如果您想反向代理此应用,我们建议使用我们的 letsencrypt/nginx docker 镜像:\[SWAG - Secure Web Application Gateway\](#0) 您可以从根位置或子域名(目前不支持子文件夹方法)进行反向代理。对于 HTTPS 代理,请确保您使用 Heimdall web 服务器的 HTTPS 端口,否则某些链接可能会中断。您可以通过 `.htpasswd` 添加安全性。
|
||||
|
||||
```
|
||||
location / {
|
||||
|
|
@ -169,44 +182,50 @@ location / {
|
|||
}
|
||||
```
|
||||
|
||||
### Self-signed certificates and local CAs
|
||||
Per default Heimdall uses the standard certificate bundle file (`ca-certificates.crt`) to verify HTTPS sites and will ignore additional certificates placed in `/etc/ssl/certs`. If you wish to use enhanced apps with HTTPS sites that use a self-signed certificate or certs signed with your own local CA, you can override the default bundle:
|
||||
### 自签名证书和本地 CA
|
||||
|
||||
- Create a unified certificate `.pem` file that contains all CAs and certificates that Heimdall has to verify. For example, if you use both LetsEncrypt and a local CA for your internal apps, concatenate the LetsEncrypt intermediate CA (export via browser) and your local CA `cert.pem` (or any number of self-signed certs) into one `heimdall.pem` file.
|
||||
- Place the `heimdall.pem` into the container (if you use Docker), for example by placing it in the path that you mapped to `/config`. Make sure that the Heimdall user has read access (`chmod a+r`).
|
||||
- Set the `openssl.cafile` setting in `/config/php/php-local.ini` to your cert bundle:
|
||||
默认情况下,Heimdall 使用标准证书捆绑文件(`ca-certificates.crt`)来验证 HTTPS 站点,并将忽略放置在 `/etc/ssl/certs` 中的附加证书。如果您希望使用带有自签名证书或使用您自己的本地 CA 签名的证书的增强型 HTTPS 站点应用,您可以覆盖默认捆绑:
|
||||
|
||||
* 创建一个包含所有 CA 和证书的统一证书文件 `.pem`,以便 Heimdall 进行验证。例如,如果您同时使用 Let's Encrypt 和本地 CA 为您的内部应用,将 Let's Encrypt 的中间 CA(通过浏览器导出)和您的本地 CA `cert.pem`(或任何数量的自签名证书)合并到一个 `heimdall.pem` 文件中。
|
||||
* 将 `heimdall.pem` 放入容器中(如果您使用 Docker),例如将其放置在映射到 `/config` 的路径中。确保 Heimdall 用户有读取权限(`chmod a+r`)。
|
||||
* 在 `/config/php/php-local.ini` 中设置 `openssl.cafile` 设置为您证书包:
|
||||
|
||||
```
|
||||
# /config/php/php-local.ini
|
||||
openssl.cafile = /config/heimdall.pem
|
||||
```
|
||||
|
||||
Restart the container and the enhanced apps should now be able to access your local HTTP websites. This configuration will survive updating or recreating the Heimdall container.
|
||||
重启容器,增强后的应用现在应该能够访问您的本地 HTTP 网站。此配置将在更新或重新创建 Heimdall 容器时保持不变。
|
||||
|
||||
## Running offline
|
||||
The apps list is hosted on github, you have a couple of options if you want to run without a connection to the outside world:
|
||||
1) Clone the repository and host it yourself, look at the .github actions file to see how to generate the apps list.
|
||||
2) Download the apps list and store it as a json accessible to heimdall named `list.json`
|
||||
## 离线运行
|
||||
|
||||
With both options all you need to do is add the following to your `.env`
|
||||
`APP_SOURCE=http://localhost/` Where `http://localhost/` is the path to the apps list without the name of the file, so if your file is stored at `https://heimdall.local/list.json` you would put `APP_SOURCE=https://heimdall.local/`
|
||||
应用程序列表托管在 GitHub 上,如果您想在无外部连接的情况下运行,有以下几种选择:
|
||||
|
||||
## Support
|
||||
https://discord.gg/CCjHKn4 or through GitHub issues
|
||||
1. 克隆仓库并自行托管,查看.gitignore 文件了解如何生成应用程序列表。
|
||||
2. 下载应用程序列表并将其存储为名为 `list.json` 的可供 heimdall 访问的 json 文件。
|
||||
|
||||
## Donate
|
||||
If you would like to show your appreciation, feel free to use the link below.
|
||||
只需将以下内容添加到您的 `.env``APP_SOURCE=http://localhost/`,其中 `http://localhost/` 是不带文件名的应用列表路径,所以如果您的文件存储在 `https://heimdall.local/list.json` ,您应该输入 `APP_SOURCE=https://heimdall.local/`
|
||||
|
||||
## 支持
|
||||
|
||||
[https://discord.gg/CCjHKn4](https://discord.gg/CCjHKn4) 或通过 GitHub issues
|
||||
|
||||
## 捐赠
|
||||
|
||||
如果您想表达感谢,请随意使用下面的链接。
|
||||
|
||||
[](https://www.paypal.me/heimdall)
|
||||
|
||||
## Credits
|
||||
- PHP Framework - [Laravel](https://laravel.com/)
|
||||
- Icons - [FontAwesome 5](https://fontawesome.com/)
|
||||
- JavaScript - [jQuery](https://jquery.com/)
|
||||
- Colour picker - [Huebee](http://huebee.buzz/)
|
||||
- Background image - [pexels](https://www.pexels.com)
|
||||
- Trianglify library - [Trianglify](https://github.com/qrohlf/trianglify)
|
||||
- Everyone at Linuxserver.io that has helped with the app and let's not forget IronicBadger for the following question that started it all:
|
||||
## 致谢
|
||||
|
||||
* PHP 框架 - [Laravel](https://laravel.com/)
|
||||
* 图标 - [FontAwesome 5](https://fontawesome.com/)
|
||||
* JavaScript - [jQuery](https://jquery.com/)
|
||||
* 颜色选择器 - [Huebee](http://huebee.buzz/)
|
||||
* 背景图片 - [pexels](https://www.pexels.com)
|
||||
* 三角形图案库 - [Trianglify](https://github.com/qrohlf/trianglify)
|
||||
* Linuxserver.io 上的每个人都帮助了这款应用,还有不要忘了 IronicBadger,正是以下问题开启了这一切:
|
||||
|
||||
```
|
||||
you know, i would love something like this landing page for all my servers apps
|
||||
that gives me the ability to pin favourites
|
||||
|
|
@ -214,6 +233,6 @@ and / or search
|
|||
@Stark @Kode do either of you think you'd be able to rustle something like this up ?
|
||||
```
|
||||
|
||||
## License
|
||||
## 许可证
|
||||
|
||||
This app is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
|
||||
此应用是开源软件,许可协议为 [MIT 许可协议](https://opensource.org/licenses/MIT) 。
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
# Heimdall
|
||||
|
||||
[](https://heimdall.site)
|
||||
|
||||
[](https://discord.gg/CCjHKn4)
|
||||
[](https://hub.docker.com/r/linuxserver/heimdall/)
|
||||
[](https://www.firsttimersonly.com/)
|
||||
[](https://www.paypal.me/heimdall)
|
||||
|
||||
___
|
||||
|
||||
Visit the website - https://heimdall.site
|
||||
___
|
||||
|
||||
## About
|
||||
As the name suggests Heimdall Application Dashboard is a dashboard for all your web applications. It doesn't need to be limited to applications though, you can add links to anything you like.
|
||||
|
||||
Heimdall is an elegant solution to organise all your web applications. It’s dedicated to this purpose so you won’t lose your links in a sea of bookmarks.
|
||||
|
||||
Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.
|
||||
|
||||

|
||||
|
||||
## Video
|
||||
If you want to see a quick video of it in use, go to https://youtu.be/GXnnMAxPzMc
|
||||
|
||||
## Supported applications
|
||||
You can use the app to link to any site or application, but Foundation apps will auto fill in the icon for the app and supply a default color for the tile. In addition Enhanced apps allow you provide details to an apps API, allowing you to view live stats directly on the dashboad. For example, the NZBGet and Sabnzbd Enhanced apps will display the queue size and download speed while something is downloading.
|
||||
|
||||
Supported applications are recognized by the title of the application as entered in the title field when adding an application. For example, to add a link to pfSense, begin by typing "p" in the title field and then select "pfSense" from the list of supported applications.
|
||||
|
||||
[](https://apps.heimdall.site/applications/enhanced)
|
||||
|
||||
[](https://apps.heimdall.site/applications/foundation)
|
||||
|
||||
## Installing
|
||||
Apart from the Laravel 8 dependencies, namely PHP >= 7.4.32, BCMath PHP Extension, INTL PHP Extension, Ctype PHP Extension, Fileinfo PHP extension, JSON PHP Extension, Mbstring PHP Extension, OpenSSL PHP Extension, PDO PHP Extension, Tokenizer PHP Extension, XML PHP Extension, the only other thing Heimdall needs is sqlite support and zip support (php-zip).
|
||||
|
||||
If you find you can't change the background make sure `php_fileinfo` is enabled in your php.ini. I believe it should be by default, but one user came across the issue on a windows system.
|
||||
|
||||
Installation is as simple as cloning the repository somewhere, or downloading and extracting the zip/tar and pointing your httpd document root to the `/public` folder then creating the .env file and generating an encryption key (this is all taken care of for you with the docker).
|
||||
|
||||
```
|
||||
cd /path/to/heimdall
|
||||
cp .env.example .env
|
||||
php artisan key:generate
|
||||
```
|
||||
|
||||
For simple testing you could just go to the folder and type `php artisan serve`
|
||||
|
||||
There is also a multi-arch Docker which supports x86-64, armhf and arm64, instructions on how to use them at
|
||||
|
||||
- https://hub.docker.com/r/linuxserver/heimdall/
|
||||
|
||||
## Updating
|
||||
To update your instance, simply clone this repository or download the zip/tar file with the new version and copy it over the old installation.
|
||||
|
||||
## Search Providers
|
||||
v2.3.0 added the ability for users to customise the search options.
|
||||
|
||||
Options are stored in `/storage/app/searchproviders.yaml` (`/config/www/searchproviders.yaml` on docker installs), feel free to rearrange the options, add new ones, delete ones you don't use, etc.
|
||||
|
||||
Consider contributing to https://github.com/linuxserver/Heimdall/discussions/categories/search-providers to help others add new ones.
|
||||
|
||||
The item at the top of the list `Tiles` allows you to search for apps on your dashboard by name, helpful when you have lots of icons.
|
||||
|
||||
## New background image not being set
|
||||
If you are using the docker image or a default php install you may find images over 2MB wont get set as the background image, you just need to change the `upload_max_filesize` in the php.ini.
|
||||
|
||||
If you are using the linuxserver.io docker image simply edit `/path/to/config/php/php-local.ini` and add `upload_max_filesize = 30M` to the end.
|
||||
|
||||
## Docker and enhanced apps
|
||||
If you are running the docker and the EnhancedApps you are using are also in dockers, you may need to use the docker networking addresses to communicate with them.
|
||||
|
||||
You can do this by using `http(s)://docker_name:port` in the config section. Instead of the name you can use the internal docker ip, this usually starts with `172.`
|
||||
|
||||
## Languages
|
||||
The app has been translated into several languages; however, the quality of the translations could do with work. If you would like to improve them, or help with other translations, they are stored in `/resources/lang/`.
|
||||
|
||||
To create a new language translation, make a new folder with the ISO 3166-1 alpha-2 code as the name, copy `app.php` from `/resources/lang/en/app.php` into your new folder and replace the English strings.
|
||||
|
||||
When you are finished, create a pull request.
|
||||
|
||||
Currently added languages are
|
||||
|
||||
- Breton
|
||||
- Chinese
|
||||
- Danish
|
||||
- Dutch
|
||||
- English
|
||||
- Finnish
|
||||
- French
|
||||
- German
|
||||
- Greek
|
||||
- Hungarian
|
||||
- Italian
|
||||
- Japanese
|
||||
- Korean
|
||||
- Lombard
|
||||
- Norwegian
|
||||
- Polish
|
||||
- Portuguese
|
||||
- Russian
|
||||
- Slovenian
|
||||
- Spanish
|
||||
- Swedish
|
||||
- Turkish
|
||||
|
||||
## Web Server Configuration
|
||||
|
||||
### Apache
|
||||
A `.htaccess` file ships with the app, however, a lot of apache installations disallow `.htaccess` files by default.
|
||||
You will notice this due to some links not working like `/settings`.
|
||||
In addition mod-rewrite needs to be enabled if it isn't already.
|
||||
|
||||
#### Fixes & work around options
|
||||
##### - Apache global allow .htaccess
|
||||
Find the `AllowOverride None` line in your apache configuration and change this to `AllowOverride All`
|
||||
|
||||
##### - Apache vhost configuration allow .htaccess
|
||||
In the apache vhost configuration in the `<Directory />` block add `AllowOverride All`
|
||||
|
||||
##### - Add .htaccess content in apache configuration
|
||||
You can add the full `.htaccess` into your apache configuration, this way you do not need to allow `.htaccess` files.
|
||||
You can even shorten the content of the `.htaccess` when inserting it into the apache configuration to:
|
||||
```
|
||||
Options +FollowSymLinks
|
||||
RewriteEngine On
|
||||
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^ index.php [L]
|
||||
```
|
||||
#### More info
|
||||
More info about `AllowOverride` can be found here:
|
||||
https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride
|
||||
|
||||
|
||||
|
||||
### Nginx
|
||||
If you are using Nginx, the following directive in your site configuration will direct all requests to the `index.php` front controller:
|
||||
|
||||
```
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
```
|
||||
Someone was using the same nginx setup to both run this and reverse proxy Plex, Plex is served from `/web` so their location was interfering with the `/webfonts`.
|
||||
|
||||
Therefore, if your fonts aren't showing because you have a location for `/web`, add the following
|
||||
```
|
||||
location /webfonts {
|
||||
try_files $uri $uri/;
|
||||
}
|
||||
```
|
||||
If there are any other locations which might interfere with any of the folders in the `/public` folder, you might have to do the same for those as well, but it's a super fringe case.
|
||||
|
||||
### Reverse proxy
|
||||
If you'd like to reverse proxy this app, we recommend using our letsencrypt/nginx docker image: [SWAG - Secure Web Application Gateway](https://hub.docker.com/r/linuxserver/swag)
|
||||
You can either reverse proxy from the root location, or from a subdomain (subfolder method is currently not supported). For HTTPS proxy, make sure you use the HTTPS port of Heimdall webserver, otherwise some links may break. You can add security through `.htpasswd`
|
||||
|
||||
```
|
||||
location / {
|
||||
auth_basic "Restricted";
|
||||
auth_basic_user_file /config/nginx/.htpasswd;
|
||||
include /config/nginx/proxy.conf;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_pass http://heimdall;
|
||||
}
|
||||
```
|
||||
|
||||
### Self-signed certificates and local CAs
|
||||
Per default Heimdall uses the standard certificate bundle file (`ca-certificates.crt`) to verify HTTPS sites and will ignore additional certificates placed in `/etc/ssl/certs`. If you wish to use enhanced apps with HTTPS sites that use a self-signed certificate or certs signed with your own local CA, you can override the default bundle:
|
||||
|
||||
- Create a unified certificate `.pem` file that contains all CAs and certificates that Heimdall has to verify. For example, if you use both LetsEncrypt and a local CA for your internal apps, concatenate the LetsEncrypt intermediate CA (export via browser) and your local CA `cert.pem` (or any number of self-signed certs) into one `heimdall.pem` file.
|
||||
- Place the `heimdall.pem` into the container (if you use Docker), for example by placing it in the path that you mapped to `/config`. Make sure that the Heimdall user has read access (`chmod a+r`).
|
||||
- Set the `openssl.cafile` setting in `/config/php/php-local.ini` to your cert bundle:
|
||||
|
||||
```
|
||||
# /config/php/php-local.ini
|
||||
openssl.cafile = /config/heimdall.pem
|
||||
```
|
||||
|
||||
Restart the container and the enhanced apps should now be able to access your local HTTP websites. This configuration will survive updating or recreating the Heimdall container.
|
||||
|
||||
## Running offline
|
||||
The apps list is hosted on github, you have a couple of options if you want to run without a connection to the outside world:
|
||||
1) Clone the repository and host it yourself, look at the .github actions file to see how to generate the apps list.
|
||||
2) Download the apps list and store it as a json accessible to heimdall named `list.json`
|
||||
|
||||
With both options all you need to do is add the following to your `.env`
|
||||
`APP_SOURCE=http://localhost/` Where `http://localhost/` is the path to the apps list without the name of the file, so if your file is stored at `https://heimdall.local/list.json` you would put `APP_SOURCE=https://heimdall.local/`
|
||||
|
||||
## Support
|
||||
https://discord.gg/CCjHKn4 or through GitHub issues
|
||||
|
||||
## Donate
|
||||
If you would like to show your appreciation, feel free to use the link below.
|
||||
|
||||
[](https://www.paypal.me/heimdall)
|
||||
|
||||
## Credits
|
||||
- PHP Framework - [Laravel](https://laravel.com/)
|
||||
- Icons - [FontAwesome 5](https://fontawesome.com/)
|
||||
- JavaScript - [jQuery](https://jquery.com/)
|
||||
- Colour picker - [Huebee](http://huebee.buzz/)
|
||||
- Background image - [pexels](https://www.pexels.com)
|
||||
- Trianglify library - [Trianglify](https://github.com/qrohlf/trianglify)
|
||||
- Everyone at Linuxserver.io that has helped with the app and let's not forget IronicBadger for the following question that started it all:
|
||||
```
|
||||
you know, i would love something like this landing page for all my servers apps
|
||||
that gives me the ability to pin favourites
|
||||
and / or search
|
||||
@Stark @Kode do either of you think you'd be able to rustle something like this up ?
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This app is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
|
||||
|
|
@ -1,102 +1,87 @@
|
|||
<img src="https://raw.githubusercontent.com/hexojs/logo/master/hexo-logo-avatar.png" alt="Hexo logo" width="100" height="100" align="right" />
|
||||

|
||||
|
||||
# Hexo
|
||||
|
||||
> A fast, simple & powerful blog framework, powered by [Node.js](https://nodejs.org).
|
||||
> 一个快速、简单且强大的博客框架,由 [Node.js](https://nodejs.org) 驱动。
|
||||
|
||||
[Website](https://hexo.io) |
|
||||
[Documentation](https://hexo.io/docs/) |
|
||||
[Installation Guide](https://hexo.io/docs/#Installation) |
|
||||
[Contribution Guide](https://hexo.io/docs/contributing) |
|
||||
[Code of Conduct](CODE_OF_CONDUCT.md) |
|
||||
[API](https://hexo.io/api/) |
|
||||
[Twitter](https://twitter.com/hexojs)
|
||||
[网站](https://hexo.io) | [文档](https://hexo.io/docs/) | [安装指南](https://hexo.io/docs/#Installation) | [贡献指南](https://hexo.io/docs/contributing) | [行为准则](CODE_OF_CONDUCT.md) | [API](https://hexo.io/api/) | [推特](https://twitter.com/hexojs)
|
||||
|
||||
[](https://www.npmjs.com/package/hexo)
|
||||

|
||||
[](https://github.com/hexojs/hexo/actions?query=workflow%3ATester)
|
||||
[](https://libraries.io/npm/hexo)
|
||||
[](https://coveralls.io/r/hexojs/hexo?branch=master)
|
||||
[](https://gitter.im/hexojs/hexo)
|
||||
[](https://discord.gg/teM2Anj)
|
||||
[](https://t.me/hexojs)
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fhexojs%2Fhexo?ref=badge_shield)
|
||||
[](CODE_OF_CONDUCT.md)
|
||||
[](https://www.npmjs.com/package/hexo)  [](https://github.com/hexojs/hexo/actions?query=workflow%3ATester) [](https://libraries.io/npm/hexo) [](https://coveralls.io/r/hexojs/hexo?branch=master) [](https://gitter.im/hexojs/hexo) [](https://discord.gg/teM2Anj) [](https://t.me/hexojs) [](https://app.fossa.com/projects/git%2Bgithub.com%2Fhexojs%2Fhexo?ref=badge_shield) [](CODE_OF_CONDUCT.md)
|
||||
|
||||
## Features
|
||||
## 功能
|
||||
|
||||
- Blazing fast generating
|
||||
- Support for GitHub Flavored Markdown and most Octopress plugins
|
||||
- One-command deploy to GitHub Pages, Heroku, etc.
|
||||
- Powerful API for limitless extensibility
|
||||
- Hundreds of [themes](https://hexo.io/themes/) & [plugins](https://hexo.io/plugins/)
|
||||
* 闪电般的生成速度
|
||||
* 支持 GitHub Flavored Markdown 和大多数 Octopress 插件
|
||||
* 一键部署到 GitHub Pages、Heroku 等
|
||||
* 强大的 API,无限可扩展
|
||||
* 数百个[主题](https://hexo.io/themes/) & [插件](https://hexo.io/plugins/)
|
||||
|
||||
## Quick Start
|
||||
## 快速开始
|
||||
|
||||
**Install Hexo**
|
||||
**安装 Hexo**
|
||||
|
||||
``` bash
|
||||
```bash
|
||||
$ npm install hexo-cli -g
|
||||
```
|
||||
|
||||
Install with [brew](https://brew.sh/) on macOS and Linux:
|
||||
使用 [brew](https://brew.sh/) 在 macOS 和 Linux 上安装:
|
||||
|
||||
```bash
|
||||
$ brew install hexo
|
||||
```
|
||||
|
||||
**Setup your blog**
|
||||
**设置您的博客**
|
||||
|
||||
``` bash
|
||||
```bash
|
||||
$ hexo init blog
|
||||
$ cd blog
|
||||
```
|
||||
|
||||
**Start the server**
|
||||
**启动服务器**
|
||||
|
||||
``` bash
|
||||
```bash
|
||||
$ hexo server
|
||||
```
|
||||
|
||||
**Create a new post**
|
||||
**创建一篇新文章**
|
||||
|
||||
``` bash
|
||||
```bash
|
||||
$ hexo new "Hello Hexo"
|
||||
```
|
||||
|
||||
**Generate static files**
|
||||
**生成静态文件**
|
||||
|
||||
``` bash
|
||||
```bash
|
||||
$ hexo generate
|
||||
```
|
||||
|
||||
## More Information
|
||||
## 更多信息
|
||||
|
||||
- Read the [documentation](https://hexo.io/)
|
||||
- Visit the [Awesome Hexo](https://github.com/hexojs/awesome-hexo) list
|
||||
- Find solutions in [troubleshooting](https://hexo.io/docs/troubleshooting.html)
|
||||
- Join discussion on [Google Group](https://groups.google.com/group/hexo), [Discord](https://discord.gg/teM2Anj), [Gitter](https://gitter.im/hexojs/hexo) or [Telegram](https://t.me/hexojs)
|
||||
- See the [plugin list](https://hexo.io/plugins/) and the [theme list](https://hexo.io/themes/) on wiki
|
||||
- Follow [@hexojs](https://twitter.com/hexojs) for latest news
|
||||
* 阅读[文档](https://hexo.io/)
|
||||
* 访问 [Awesome Hexo](https://github.com/hexojs/awesome-hexo) 列表
|
||||
* 找到[故障排除](https://hexo.io/docs/troubleshooting.html)中的解决方案
|
||||
* 在 [Google Group](https://groups.google.com/group/hexo)、[Discord](https://discord.gg/teM2Anj)、[Gitter](https://gitter.im/hexojs/hexo) 或 [Telegram](https://t.me/hexojs) 上参与讨论
|
||||
* 在 wiki 上查看[插件列表](https://hexo.io/plugins/)和[主题列表](https://hexo.io/themes/)
|
||||
* 关注 [@hexojs](https://twitter.com/hexojs) 获取最新消息
|
||||
|
||||
## Contributing
|
||||
## 贡献
|
||||
|
||||
We welcome you to join the development of Hexo. Please see [contributing document](https://hexo.io/docs/contributing). 🤗
|
||||
我们欢迎您加入 Hexo 的开发。请参阅[贡献文档](https://hexo.io/docs/contributing) 。🤗
|
||||
|
||||
Also, we welcome PR or issue to [official-plugins](https://github.com/hexojs).
|
||||
此外,我们也欢迎向[官方插件](https://github.com/hexojs)提交 PR 或 issue。
|
||||
|
||||
## Contributors
|
||||
## 贡献者
|
||||
|
||||
[](https://github.com/hexojs/hexo/graphs/contributors)
|
||||
|
||||
## Backers
|
||||
## 支持者
|
||||
|
||||
[](https://opencollective.com/hexo)
|
||||
|
||||
## Sponsors
|
||||
## 赞助商
|
||||
|
||||
<a href="https://linktr.ee/rss3"><img src="https://d1fdloi71mui9q.cloudfront.net/8xxahBqRTnecXgXKObeo_L8ks2KjC31fmM5Nd" alt="RSS3" width="200"/></a>
|
||||
[](https://linktr.ee/rss3)
|
||||
|
||||
## License
|
||||
## 许可证
|
||||
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fhexojs%2Fhexo?ref=badge_large)
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fhexojs%2Fhexo?ref=badge_large)
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: "/home/homarr"
|
||||
edit: true
|
||||
envKey: HOMARR_ROOT_PATH
|
||||
labelZh: 数据持久化路径
|
||||
labelEn: Data persistence path
|
||||
required: true
|
||||
type: text
|
||||
- default: 7575
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelZh: WebUI 端口
|
||||
labelEn: WebUI port
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: "b7fa3f6f09ac8084ca03b94589d799e6a9225212e8f691c6b419a139acf412c7"
|
||||
edit: true
|
||||
envKey: SECRET_ENCRYPTION_KEY
|
||||
labelZh: 密钥
|
||||
labelEn: Secret key
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
||||
services:
|
||||
homarr:
|
||||
image: ghcr.io/ajnart/homarr:0.15.10
|
||||
container_name: ${CONTAINER_NAME}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
restart: always
|
||||
network_mode: ${NETWORK_MODE}
|
||||
ports:
|
||||
- ${PANEL_APP_PORT_HTTP}:7575
|
||||
env_file:
|
||||
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
||||
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ${HOMARR_ROOT_PATH}/appdata:/appdata
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
# 使用说明
|
||||
|
||||
- 默认访问地址
|
||||
* 默认访问地址
|
||||
|
||||
```
|
||||
IP:8123
|
||||
```
|
||||
|
|
@ -9,25 +10,16 @@ IP:8123
|
|||
|
||||
# Home Assistant [](https://www.home-assistant.io/join-chat/)
|
||||
|
||||
Open source home automation that puts local control and privacy first.
|
||||
Powered by a worldwide community of tinkerers and DIY enthusiasts.
|
||||
Perfect to run on a Raspberry Pi or a local server.
|
||||
开源智能家居自动化系统,将本地控制和隐私放在首位。由全球的 DIY 爱好者和技术爱好者社区支持。非常适合在树莓派或本地服务器上运行。
|
||||
|
||||
Check out [home-assistant.io](https://home-assistant.io) for [ademo](https://demo.home-assistant.io), [installation instructions](https://home-assistant.io/getting-started/),[tutorials](https://home-assistant.io/getting-started/automation/) and [documentation](https://home-assistant.io/docs/).
|
||||
访问 [home-assistant.io](https://home-assistant.io) 获取[演示](https://demo.home-assistant.io) 、 [安装说明](https://home-assistant.io/getting-started/) 、 [教程](https://home-assistant.io/getting-started/automation/)和[文档](https://home-assistant.io/docs/) 。
|
||||
|
||||
[](https://demo.home-assistant.io)
|
||||
|
||||
## Featured integrations
|
||||
## 特色集成
|
||||
|
||||
[](https://home-assistant.io/integrations/)
|
||||
|
||||
The system is built using a modular approach so support for other
|
||||
devices or actions can be implemented easily. See also the [section on
|
||||
architecture](https://developers.home-assistant.io/docs/architecture_index/)
|
||||
and the [section on creating your own
|
||||
components](https://developers.home-assistant.io/docs/creating_component_index/).
|
||||
系统采用模块化方法构建,因此可以轻松实现其他设备或动作的支持。请参阅[架构部分](https://developers.home-assistant.io/docs/architecture_index/)和[创建自己的组件部分](https://developers.home-assistant.io/docs/creating_component_index/) 。
|
||||
|
||||
If you run into issues while using Home Assistant or during development
|
||||
of a component, check the [Home Assistant help
|
||||
section](https://home-assistant.io/help/) of our website for further
|
||||
help and information.
|
||||
如果您在使用 Home Assistant 或开发组件时遇到问题,请访问我们网站上的 [Home Assistant 帮助部分](https://home-assistant.io/help/)以获取更多帮助和信息。
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# 使用说明
|
||||
|
||||
- 默认访问地址
|
||||
```
|
||||
IP:8123
|
||||
```
|
||||
|
||||
# 原始相关
|
||||
|
||||
# Home Assistant [](https://www.home-assistant.io/join-chat/)
|
||||
|
||||
Open source home automation that puts local control and privacy first.
|
||||
Powered by a worldwide community of tinkerers and DIY enthusiasts.
|
||||
Perfect to run on a Raspberry Pi or a local server.
|
||||
|
||||
Check out [home-assistant.io](https://home-assistant.io) for [ademo](https://demo.home-assistant.io), [installation instructions](https://home-assistant.io/getting-started/),[tutorials](https://home-assistant.io/getting-started/automation/) and [documentation](https://home-assistant.io/docs/).
|
||||
|
||||
[](https://demo.home-assistant.io)
|
||||
|
||||
## Featured integrations
|
||||
|
||||
[](https://home-assistant.io/integrations/)
|
||||
|
||||
The system is built using a modular approach so support for other
|
||||
devices or actions can be implemented easily. See also the [section on
|
||||
architecture](https://developers.home-assistant.io/docs/architecture_index/)
|
||||
and the [section on creating your own
|
||||
components](https://developers.home-assistant.io/docs/creating_component_index/).
|
||||
|
||||
If you run into issues while using Home Assistant or during development
|
||||
of a component, check the [Home Assistant help
|
||||
section](https://home-assistant.io/help/) of our website for further
|
||||
help and information.
|
||||
|
|
@ -1,40 +1,21 @@
|
|||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="images/banner_light@2x.png">
|
||||
<img src="https://github.com/gethomepage/homepage/raw/main/images/banner_dark@2x.png" width="65%">
|
||||
</picture>
|
||||
</p>
|
||||

|
||||
|
||||
<p align="center">
|
||||
A modern, <em>fully static, fast</em>, secure <em>fully proxied</em>, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.
|
||||
</p>
|
||||
一个现代的、 *完全静态、快速* 、安全的*完全代理* 、高度可定制的应用程序仪表板,支持超过 100 种服务的集成和多语言翻译。可通过 YAML 文件或通过 docker 标签发现轻松配置。
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/gethomepage/homepage/raw/main/images/1.png?v=2" />
|
||||
</p>
|
||||

|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/gethomepage/homepage/actions/workflows/docker-publish.yml"><img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/gethomepage/homepage/docker-publish.yml"></a>
|
||||
|
||||
<a href="https://crowdin.com/project/gethomepage" target="_blank"><img src="https://badges.crowdin.net/gethomepage/localized.svg"></a>
|
||||
|
||||
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
|
||||
|
||||
<a href="http://gethomepage.dev/latest/" title="Docs"><img title="Docs" src="https://github.com/gethomepage/homepage/actions/workflows/docs-publish.yml/badge.svg"/></a>
|
||||
|
||||
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
|
||||
</p>
|
||||
[](https://github.com/gethomepage/homepage/actions/workflows/docker-publish.yml) [](https://crowdin.com/project/gethomepage) [](https://discord.gg/k4ruYNrudu) [](http://gethomepage.dev/latest/ "Docs") [](https://paypal.me/phelpsben "Donate")
|
||||
|
||||
# Features
|
||||
# 功能
|
||||
|
||||
With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
|
||||
具有快速搜索、书签、天气支持、广泛的集成和小部件、优雅现代的设计以及注重性能等特点,首页是您每天理想的开始,也是全天候的便捷伴侣。
|
||||
|
||||
- **Fast** - The site is statically generated at build time for instant load times.
|
||||
- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
|
||||
- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6.
|
||||
- **Full i18n** - Support for over 40 languages.
|
||||
- **Service & Web Bookmarks** - Add custom links to the homepage.
|
||||
- **Docker Integration** - Container status and stats. Automatic service discovery via labels.
|
||||
- **Service Integration** - Over 100 service integrations, including popular starr and self-hosted apps.
|
||||
- **Information & Utility Widgets** - Weather, time, date, search, and more.
|
||||
- **And much more...**
|
||||
* **快速** \- 网站在构建时静态生成,实现即时加载时间。
|
||||
* **安全** \- 所有后端服务的 API 请求都经过代理,隐藏您的 API 密钥。社区持续审查以确保安全。
|
||||
* **面向所有人** \- 为 AMD64、ARM64、ARMv7 和 ARMv6 构建的镜像。
|
||||
* **全国际化** \- 支持 40 多种语言。
|
||||
* **服务与网页书签** \- 将自定义链接添加到主页。
|
||||
* **Docker 集成** \- 容器状态和统计信息。通过标签自动服务发现。
|
||||
* **服务集成** \- 超过 100 种服务集成,包括流行的第三方和自托管应用。
|
||||
* **信息与实用小部件** \- 天气、时间、日期、搜索等。
|
||||
* **还有更多...**
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="images/banner_light@2x.png">
|
||||
<img src="https://github.com/gethomepage/homepage/raw/main/images/banner_dark@2x.png" width="65%">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
A modern, <em>fully static, fast</em>, secure <em>fully proxied</em>, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/gethomepage/homepage/raw/main/images/1.png?v=2" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/gethomepage/homepage/actions/workflows/docker-publish.yml"><img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/gethomepage/homepage/docker-publish.yml"></a>
|
||||
|
||||
<a href="https://crowdin.com/project/gethomepage" target="_blank"><img src="https://badges.crowdin.net/gethomepage/localized.svg"></a>
|
||||
|
||||
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
|
||||
|
||||
<a href="http://gethomepage.dev/latest/" title="Docs"><img title="Docs" src="https://github.com/gethomepage/homepage/actions/workflows/docs-publish.yml/badge.svg"/></a>
|
||||
|
||||
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
|
||||
</p>
|
||||
|
||||
# Features
|
||||
|
||||
With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
|
||||
|
||||
- **Fast** - The site is statically generated at build time for instant load times.
|
||||
- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
|
||||
- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6.
|
||||
- **Full i18n** - Support for over 40 languages.
|
||||
- **Service & Web Bookmarks** - Add custom links to the homepage.
|
||||
- **Docker Integration** - Container status and stats. Automatic service discovery via labels.
|
||||
- **Service Integration** - Over 100 service integrations, including popular starr and self-hosted apps.
|
||||
- **Information & Utility Widgets** - Weather, time, date, search, and more.
|
||||
- **And much more...**
|
||||
|
|
@ -1,45 +1,46 @@
|
|||

|
||||
|
||||
Useful tools for developer and people working in IT. [Have a look !](https://it-tools.tech).
|
||||
有用的工具,适用于开发人员和 IT 行业工作者。 [看看吧!](https://it-tools.tech)。
|
||||
|
||||
## Functionalities and roadmap
|
||||
## 功能与路线图
|
||||
|
||||
Please check the [issues](https://github.com/CorentinTh/it-tools/issues) to see if some feature listed to be implemented.
|
||||
请查看 [问题](https://github.com/CorentinTh/it-tools/issues) ,看看是否有列出的功能即将实现。
|
||||
|
||||
You have an idea of a tool? Submit a [feature request](https://github.com/CorentinTh/it-tools/issues/new/choose)!
|
||||
您有一个工具的想法吗?提交一个 [功能请求](https://github.com/CorentinTh/it-tools/issues/new/choose) !
|
||||
|
||||
## Self host
|
||||
## 自托管
|
||||
|
||||
Self host solutions for your homelab
|
||||
为您的家庭实验室提供自托管解决方案
|
||||
|
||||
**From docker hub:**
|
||||
**从 Docker Hub 获取:**
|
||||
|
||||
```sh
|
||||
docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest
|
||||
```
|
||||
|
||||
**From github packages:**
|
||||
**从 GitHub 包获取:**
|
||||
|
||||
```sh
|
||||
docker run -d --name it-tools --restart unless-stopped -p 8080:80 ghcr.io/corentinth/it-tools:latest
|
||||
```
|
||||
|
||||
**Other solutions:**
|
||||
**其他解决方案:**
|
||||
|
||||
- [Tipi](https://www.runtipi.io/docs/apps-available)
|
||||
- [Unraid](https://unraid.net/community/apps?q=it-tools)
|
||||
* [帐篷](https://www.runtipi.io/docs/apps-available)
|
||||
* [Unraid](https://unraid.net/community/apps?q=it-tools)
|
||||
|
||||
## Contribute
|
||||
## 贡献
|
||||
|
||||
### Recommended IDE Setup
|
||||
### 推荐 IDE 设置
|
||||
|
||||
[VSCode](https://code.visualstudio.com/) with the following extensions:
|
||||
- [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur)
|
||||
- [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
||||
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
||||
- [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally)
|
||||
[VSCode](https://code.visualstudio.com/) 配置以下扩展:
|
||||
|
||||
with the following settings:
|
||||
* [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar)(并禁用 Vetur)
|
||||
* [TypeScript Vue 插件(Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
||||
* [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
||||
* [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally)
|
||||
|
||||
使用以下设置:
|
||||
|
||||
```json5
|
||||
{
|
||||
|
|
@ -57,64 +58,63 @@ with the following settings:
|
|||
|
||||
### Type Support for `.vue` Imports in TS
|
||||
|
||||
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
|
||||
TypeScript 默认无法处理 `.vue` 导入的类型信息,因此我们用 `vue-tsc` 替换 `tsc` CLI 进行类型检查。在编辑器中,我们需要 [TypeScript Vue 插件 (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) 来让 TypeScript 语言服务了解 `.vue` 类型。
|
||||
|
||||
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
|
||||
如果您觉得独立的 TypeScript 插件不够快,Volar 还实现了更高效的 [接管模式](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) 。您可以通过以下步骤启用它:
|
||||
|
||||
1. Disable the built-in TypeScript Extension
|
||||
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
|
||||
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
|
||||
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
|
||||
1. 禁用内置的 TypeScript 扩展
|
||||
1. 从 VSCode 的命令面板运行 `Extensions: Show Built-in Extensions`
|
||||
2. 找到 `TypeScript and JavaScript Language Features` ,右键单击并选择 `禁用(工作区)`
|
||||
2. 通过从命令面板运行 `开发者:重新加载窗口` 来重新加载 VSCode 窗口。
|
||||
|
||||
### Project Setup
|
||||
### 项目设置
|
||||
|
||||
```sh
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### Compile and Hot-Reload for Development
|
||||
### 编译和热重载以进行开发
|
||||
|
||||
```sh
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### Type-Check, Compile and Minify for Production
|
||||
### 类型检查、编译和压缩以用于生产
|
||||
|
||||
```sh
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### Run Unit Tests with [Vitest](https://vitest.dev/)
|
||||
### 使用 [Vitest](https://vitest.dev/) 运行单元测试
|
||||
|
||||
```sh
|
||||
pnpm test
|
||||
```
|
||||
|
||||
### Lint with [ESLint](https://eslint.org/)
|
||||
### 使用 [ESLint](https://eslint.org/) 进行代码检查
|
||||
|
||||
```sh
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
### Create a new tool
|
||||
### 创建一个新工具
|
||||
|
||||
To create a new tool, there is a script that generate the boilerplate of the new tool, simply run:
|
||||
要创建一个新工具,有一个脚本可以生成新工具的模板,只需运行:
|
||||
|
||||
```sh
|
||||
pnpm run script:create-new-tool my-tool-name
|
||||
```
|
||||
|
||||
It will create a directory in `src/tools` with the correct files, and a the import in `src/tools/index.ts`. You will just need to add the imported tool in the proper category and develop the tool.
|
||||
它将在 `src/tools` 目录下创建正确的文件,并在 `src/tools/index.ts` 中添加导入。你只需将导入的工具添加到正确的类别并开发工具即可。
|
||||
|
||||
## Credits
|
||||
## 致谢
|
||||
|
||||
Coded with ❤️ by [Corentin Thomasset](https://corentin-thomasset.fr/).
|
||||
由 [Corentin Thomasset](https://corentin-thomasset.fr/) 用 ❤️ 编写。
|
||||
|
||||
This project is continuously deployed using [vercel.com](https://vercel.com).
|
||||
该项目使用 [vercel.com](https://vercel.com) 持续部署。
|
||||
|
||||
<a href="https://www.producthunt.com/posts/it-tools?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-it-tools" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=345793&theme=light" alt="IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||
<a href="https://www.producthunt.com/posts/it-tools?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-it-tools" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=345793&theme=light&period=daily" alt="IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||
[](https://www.producthunt.com/posts/it-tools?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-it-tools) [](https://www.producthunt.com/posts/it-tools?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-it-tools)
|
||||
|
||||
## License
|
||||
## 许可证
|
||||
|
||||
This project is under the [GNU GPLv3](https://github.com/CorentinTh/it-tools/blob/main/LICENSE).
|
||||
此项目遵循 [GNU GPLv3](https://github.com/CorentinTh/it-tools/blob/main/LICENSE) 协议。
|
||||
|
|
@ -0,0 +1,120 @@
|
|||

|
||||
|
||||
Useful tools for developer and people working in IT. [Have a look !](https://it-tools.tech).
|
||||
|
||||
## Functionalities and roadmap
|
||||
|
||||
Please check the [issues](https://github.com/CorentinTh/it-tools/issues) to see if some feature listed to be implemented.
|
||||
|
||||
You have an idea of a tool? Submit a [feature request](https://github.com/CorentinTh/it-tools/issues/new/choose)!
|
||||
|
||||
## Self host
|
||||
|
||||
Self host solutions for your homelab
|
||||
|
||||
**From docker hub:**
|
||||
|
||||
```sh
|
||||
docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest
|
||||
```
|
||||
|
||||
**From github packages:**
|
||||
|
||||
```sh
|
||||
docker run -d --name it-tools --restart unless-stopped -p 8080:80 ghcr.io/corentinth/it-tools:latest
|
||||
```
|
||||
|
||||
**Other solutions:**
|
||||
|
||||
- [Tipi](https://www.runtipi.io/docs/apps-available)
|
||||
- [Unraid](https://unraid.net/community/apps?q=it-tools)
|
||||
|
||||
## Contribute
|
||||
|
||||
### Recommended IDE Setup
|
||||
|
||||
[VSCode](https://code.visualstudio.com/) with the following extensions:
|
||||
- [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur)
|
||||
- [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
||||
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
||||
- [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally)
|
||||
|
||||
with the following settings:
|
||||
|
||||
```json5
|
||||
{
|
||||
"editor.formatOnSave": false,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": true
|
||||
},
|
||||
"i18n-ally.localesPaths": [
|
||||
"locales",
|
||||
"src/tools/*/locales"
|
||||
],
|
||||
"i18n-ally.keystyle": "nested"
|
||||
}
|
||||
```
|
||||
|
||||
### Type Support for `.vue` Imports in TS
|
||||
|
||||
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
|
||||
|
||||
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
|
||||
|
||||
1. Disable the built-in TypeScript Extension
|
||||
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
|
||||
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
|
||||
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
|
||||
|
||||
### Project Setup
|
||||
|
||||
```sh
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### Compile and Hot-Reload for Development
|
||||
|
||||
```sh
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### Type-Check, Compile and Minify for Production
|
||||
|
||||
```sh
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### Run Unit Tests with [Vitest](https://vitest.dev/)
|
||||
|
||||
```sh
|
||||
pnpm test
|
||||
```
|
||||
|
||||
### Lint with [ESLint](https://eslint.org/)
|
||||
|
||||
```sh
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
### Create a new tool
|
||||
|
||||
To create a new tool, there is a script that generate the boilerplate of the new tool, simply run:
|
||||
|
||||
```sh
|
||||
pnpm run script:create-new-tool my-tool-name
|
||||
```
|
||||
|
||||
It will create a directory in `src/tools` with the correct files, and a the import in `src/tools/index.ts`. You will just need to add the imported tool in the proper category and develop the tool.
|
||||
|
||||
## Credits
|
||||
|
||||
Coded with ❤️ by [Corentin Thomasset](https://corentin-thomasset.fr/).
|
||||
|
||||
This project is continuously deployed using [vercel.com](https://vercel.com).
|
||||
|
||||
<a href="https://www.producthunt.com/posts/it-tools?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-it-tools" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=345793&theme=light" alt="IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||
<a href="https://www.producthunt.com/posts/it-tools?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-it-tools" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=345793&theme=light&period=daily" alt="IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||
|
||||
## License
|
||||
|
||||
This project is under the [GNU GPLv3](https://github.com/CorentinTh/it-tools/blob/main/LICENSE).
|
||||
|
|
@ -1,176 +1,133 @@
|
|||
<h1 align="center">Jellyfin</h1>
|
||||
<h3 align="center">The Free Software Media System</h3>
|
||||
# Jellyfin
|
||||
|
||||
---
|
||||
### 免费软件媒体系统
|
||||
|
||||
<p align="center">
|
||||
<img alt="Logo Banner" src="https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true"/>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="https://github.com/jellyfin/jellyfin">
|
||||
<img alt="GPL 2.0 License" src="https://img.shields.io/github/license/jellyfin/jellyfin.svg"/>
|
||||
</a>
|
||||
<a href="https://github.com/jellyfin/jellyfin/releases">
|
||||
<img alt="Current Release" src="https://img.shields.io/github/release/jellyfin/jellyfin.svg"/>
|
||||
</a>
|
||||
<a href="https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/?utm_source=widget">
|
||||
<img alt="Translation Status" src="https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-core/svg-badge.svg"/>
|
||||
</a>
|
||||
<a href="https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=29">
|
||||
<img alt="Azure Builds" src="https://dev.azure.com/jellyfin-project/jellyfin/_apis/build/status/Jellyfin%20Server"/>
|
||||
</a>
|
||||
<a href="https://hub.docker.com/r/jellyfin/jellyfin">
|
||||
<img alt="Docker Pull Count" src="https://img.shields.io/docker/pulls/jellyfin/jellyfin.svg"/>
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://opencollective.com/jellyfin">
|
||||
<img alt="Donate" src="https://img.shields.io/opencollective/all/jellyfin.svg?label=backers"/>
|
||||
</a>
|
||||
<a href="https://features.jellyfin.org">
|
||||
<img alt="Submit Feature Requests" src="https://img.shields.io/badge/fider-vote%20on%20features-success.svg"/>
|
||||
</a>
|
||||
<a href="https://matrix.to/#/#jellyfinorg:matrix.org">
|
||||
<img alt="Chat on Matrix" src="https://img.shields.io/matrix/jellyfin:matrix.org.svg?logo=matrix"/>
|
||||
</a>
|
||||
<a href="https://www.reddit.com/r/jellyfin">
|
||||
<img alt="Join our Subreddit" src="https://img.shields.io/badge/reddit-r%2Fjellyfin-%23FF5700.svg"/>
|
||||
</a>
|
||||
<a href="https://github.com/jellyfin/jellyfin/releases.atom">
|
||||
<img alt="Release RSS Feed" src="https://img.shields.io/badge/rss-releases-ffa500?logo=rss" />
|
||||
</a>
|
||||
<a href="https://github.com/jellyfin/jellyfin/commits/master.atom">
|
||||
<img alt="Master Commits RSS Feed" src="https://img.shields.io/badge/rss-commits-ffa500?logo=rss" />
|
||||
</a>
|
||||
</p>
|
||||
* * *
|
||||
|
||||
---
|
||||

|
||||
[](https://github.com/jellyfin/jellyfin)[ ](https://github.com/jellyfin/jellyfin/releases)[ ](https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/?utm_source=widget)[ ](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=29)[](https://hub.docker.com/r/jellyfin/jellyfin)
|
||||
[](https://opencollective.com/jellyfin)[ ](https://features.jellyfin.org)[ ](https://matrix.to/#/#jellyfinorg:matrix.org)[ ](https://www.reddit.com/r/jellyfin)[ ](https://github.com/jellyfin/jellyfin/releases.atom)[](https://github.com/jellyfin/jellyfin/commits/master.atom)
|
||||
|
||||
Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!
|
||||
* * *
|
||||
|
||||
For further details, please see [our documentation page](https://jellyfin.org/docs/). To receive the latest updates, get help with Jellyfin, and join the community, please visit [one of our communication channels](https://jellyfin.org/docs/general/getting-help). For more information about the project, please see our [about page](https://jellyfin.org/docs/general/about).
|
||||
Jellyfin 是一个免费软件媒体系统,让您掌控媒体管理和流媒体播放。它是 Emby 和 Plex 等专有软件的替代品,通过多个应用程序从专用服务器向终端设备提供媒体。Jellyfin 源自 Emby 的 3.5.2 版本,并移植到.NET Core 框架以实现全平台支持。没有任何附加条件,没有高级许可证或功能,也没有隐藏议程:只有一个想要打造更好产品并共同努力实现目标的团队。我们欢迎任何有兴趣加入我们追求的人!
|
||||
|
||||
<strong>Want to get started?</strong><br/>
|
||||
Check out our <a href="https://jellyfin.org/downloads">downloads page</a> or our <a href="https://jellyfin.org/docs/general/installation/">installation guide</a>, then see our <a href="https://jellyfin.org/docs/general/quick-start">quick start guide</a>. You can also <a href="https://jellyfin.org/docs/general/installation/source">build from source</a>.<br/>
|
||||
有关详细信息,请参阅[我们的文档页面](https://jellyfin.org/docs/) 。要获取最新更新,获取 Jellyfin 的帮助并加入社区,请访问[我们的沟通渠道之一](https://jellyfin.org/docs/general/getting-help) 。有关项目的更多信息,请参阅我们的[关于页面](https://jellyfin.org/docs/general/about) 。
|
||||
|
||||
<strong>Something not working right?</strong><br/>
|
||||
Open an <a href="https://jellyfin.org/docs/general/contributing/issues">Issue</a> on GitHub.<br/>
|
||||
**想要开始吗?**
|
||||
查看我们的[下载页面](https://jellyfin.org/downloads)或我们的[安装指南](https://jellyfin.org/docs/general/installation/) ,然后查看我们的[快速入门指南](https://jellyfin.org/docs/general/quick-start) 。您还可以[从源代码构建](https://jellyfin.org/docs/general/installation/source) 。
|
||||
|
||||
<strong>Want to contribute?</strong><br/>
|
||||
Check out our <a href="https://jellyfin.org/contribute">contributing choose-your-own-adventure</a> to see where you can help, then see our <a href="https://jellyfin.org/docs/general/contributing/">contributing guide</a> and our <a href="https://jellyfin.org/docs/general/community-standards">community standards</a>.<br/>
|
||||
**有什么问题吗?**
|
||||
在 GitHub 上[提交问题](https://jellyfin.org/docs/general/contributing/issues) 。
|
||||
|
||||
<strong>New idea or improvement?</strong><br/>
|
||||
Check out our <a href="https://features.jellyfin.org/?view=most-wanted">feature request hub</a>.<br/>
|
||||
**想要贡献?**
|
||||
查看我们的[贡献选择冒险](https://jellyfin.org/contribute) ,看看你可以在哪里提供帮助,然后查看我们的[贡献指南](https://jellyfin.org/docs/general/contributing/)和我们的[社区标准](https://jellyfin.org/docs/general/community-standards) 。
|
||||
|
||||
<strong>Don't see Jellyfin in your language?</strong><br/>
|
||||
Check out our <a href="https://translate.jellyfin.org">Weblate instance</a> to help translate Jellyfin and its subprojects.<br/>
|
||||
**有新想法或改进建议?**
|
||||
查看我们的[功能请求中心](https://features.jellyfin.org/?view=most-wanted) 。
|
||||
|
||||
<a href="https://translate.jellyfin.org/engage/jellyfin/?utm_source=widget">
|
||||
<img src="https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/multi-auto.svg" alt="Detailed Translation Status"/>
|
||||
</a>
|
||||
**没看到 Jellyfin 支持你的语言?**
|
||||
访问我们的 [Weblate 实例](https://translate.jellyfin.org)来帮助翻译 Jellyfin 及其子项目。
|
||||
|
||||
---
|
||||
[](https://translate.jellyfin.org/engage/jellyfin/?utm_source=widget)
|
||||
|
||||
## Jellyfin Server
|
||||
* * *
|
||||
|
||||
This repository contains the code for Jellyfin's backend server. Note that this is only one of many projects under the Jellyfin GitHub [organization](https://github.com/jellyfin/) on GitHub. If you want to contribute, you can start by checking out our [documentation](https://jellyfin.org/docs/general/contributing/index.html) to see what to work on.
|
||||
## Jellyfin 服务器
|
||||
|
||||
## Server Development
|
||||
此存储库包含 Jellyfin 后端服务器的代码。请注意,这仅仅是 GitHub 上 Jellyfin GitHub [组织](https://github.com/jellyfin/)下的众多项目之一。如果你想贡献,可以从查看我们的[文档](https://jellyfin.org/docs/general/contributing/index.html)开始,了解可以做什么工作。
|
||||
|
||||
These instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our [guidelines on development contributions](https://jellyfin.org/docs/general/contributing/development.html). Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible.
|
||||
## 服务器开发
|
||||
|
||||
### Prerequisites
|
||||
以下说明将帮助您设置本地开发环境,以便为这个仓库做出贡献。在开始之前,请务必完全阅读我们关于开发贡献的[指南](https://jellyfin.org/docs/general/contributing/development.html) 。请注意,本项目支持所有主流操作系统,除了 FreeBSD,它仍然不兼容。
|
||||
|
||||
Before the project can be built, you must first install the [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet) on your system.
|
||||
### 先决条件
|
||||
|
||||
Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of [Visual Studio](https://visualstudio.microsoft.com/downloads/) (at least 2022) and [Visual Studio Code](https://code.visualstudio.com/Download).
|
||||
在构建项目之前,您必须首先在您的系统上安装 [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet)。
|
||||
|
||||
[ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg) will also need to be installed.
|
||||
在此包含运行此项目的命令行说明,但如果您想在服务器运行时进行调试,还需要安装一个 IDE。任何支持.NET 6 开发的 IDE 都可以使用,但两种选项是 [Visual Studio](https://visualstudio.microsoft.com/downloads/) 的最新版本(至少 2022 年)和 [Visual Studio Code](https://code.visualstudio.com/Download)。
|
||||
|
||||
### Cloning the Repository
|
||||
[ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg) 也需要安装。
|
||||
|
||||
After dependencies are installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should [set up your own fork](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo) of the repository. The following example shows how you can clone the repository directly over HTTPS.
|
||||
### 克隆仓库
|
||||
|
||||
在安装依赖项之后,您需要克隆此仓库的本地副本。如果您只想从源代码运行服务器,可以直接克隆此仓库,但如果您打算向项目贡献代码更改,您应该 [设置自己的仓库分支](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo) 。以下示例显示了如何直接通过 HTTPS 克隆仓库。
|
||||
|
||||
```bash
|
||||
git clone https://github.com/jellyfin/jellyfin.git
|
||||
```
|
||||
|
||||
### Installing the Web Client
|
||||
### 安装 Web 客户端
|
||||
|
||||
The server is configured to host the static files required for the [web client](https://github.com/jellyfin/jellyfin-web) in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly.
|
||||
服务器配置为托管 [Web 客户端](https://github.com/jellyfin/jellyfin-web)所需的静态文件,同时默认提供后端服务。在您运行服务器之前,您需要获取 Web 客户端的副本,因为这些文件并未直接包含在本存储库中。
|
||||
|
||||
Note that it is also possible to [host the web client separately](#hosting-the-web-client-separately) from the web server with some additional configuration, in which case you can skip this step.
|
||||
请注意,您还可以通过一些额外的配置将 [Web 客户端单独托管](#hosting-the-web-client-separately)在 Web 服务器之外,在这种情况下,您可以跳过此步骤。
|
||||
|
||||
There are three options to get the files for the web client.
|
||||
获取 Web 客户端文件有三种选项。
|
||||
|
||||
1. Download one of the finished builds from the [Azure DevOps pipeline](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27). You can download the build for a specific release by looking at the [branches tab](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27&_a=summary&repositoryFilter=6&view=branches) of the pipelines page.
|
||||
2. Build them from source following the instructions on the [jellyfin-web repository](https://github.com/jellyfin/jellyfin-web)
|
||||
3. Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at `C:\Program Files\Jellyfin\Server\jellyfin-web`
|
||||
1. 从 [Azure DevOps 管道](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27)下载一个完成的构建。您可以通过查看管道页面的[分支选项卡](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27&_a=summary&repositoryFilter=6&view=branches)来下载特定版本的构建。
|
||||
2. 从源代码构建,按照 [jellyfin-web 仓库](https://github.com/jellyfin/jellyfin-web)上的说明进行
|
||||
3. 从现有服务器安装中获取预构建文件。例如,在 Windows 服务器安装中,客户端文件位于 `C:\Program Files\Jellyfin\Server\jellyfin-web`
|
||||
|
||||
### Running The Server
|
||||
### 运行服务器
|
||||
|
||||
The following instructions will help you get the project up and running via the command line, or your preferred IDE.
|
||||
以下说明将帮助您通过命令行或您首选的 IDE 启动项目。
|
||||
|
||||
#### Running With Visual Studio
|
||||
#### 使用 Visual Studio 运行
|
||||
|
||||
To run the project with Visual Studio you can open the Solution (`.sln`) file and then press `F5` to run the server.
|
||||
要使用 Visual Studio 运行项目,您可以打开解决方案文件(`.sln`),然后按 `F5` 键运行服务器。
|
||||
|
||||
#### Running With Visual Studio Code
|
||||
#### 使用 Visual Studio Code 运行
|
||||
|
||||
To run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the `Open Folder...` option.
|
||||
要使用 Visual Studio Code 运行项目,您首先需要使用`打开文件夹...` 选项,用 Visual Studio Code 打开仓库目录。
|
||||
|
||||
Second, you need to [install the recommended extensions for the workspace](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions). Note that extension recommendations are classified as either "Workspace Recommendations" or "Other Recommendations", but only the "Workspace Recommendations" are required.
|
||||
其次,您需要[安装工作空间推荐扩展](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions) 。请注意,扩展推荐分为“工作空间推荐”和“其他推荐”两类,但仅需要“工作空间推荐”。
|
||||
|
||||
After the required extensions are installed, you can run the server by pressing `F5`.
|
||||
安装所需扩展后,您可以通过按下 `F5` 来运行服务器。
|
||||
|
||||
#### Running From The Command Line
|
||||
#### 从命令行运行
|
||||
|
||||
To run the server from the command line you can use the `dotnet run` command. The example below shows how to do this if you have cloned the repository into a directory named `jellyfin` (the default directory name) and should work on all operating systems.
|
||||
要从命令行运行服务器,您可以使用 `dotnet run` 命令。以下示例展示了如果您已将仓库克隆到名为 `jellyfin`(默认目录名)的目录中,应该如何操作,并且应在所有操作系统上有效。
|
||||
|
||||
```bash
|
||||
cd jellyfin # Move into the repository directory
|
||||
dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project
|
||||
```
|
||||
|
||||
A second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the `--help` flag to list details on all the supported command line options.
|
||||
第二种选项是先构建项目,然后直接运行生成的可执行文件。直接运行可执行文件时,您可以轻松添加命令行选项。添加 `--help` 标志可以列出所有支持的命令行选项的详细信息。
|
||||
|
||||
1. Build the project
|
||||
1. 构建项目
|
||||
|
||||
```bash
|
||||
dotnet build # Build the project
|
||||
cd Jellyfin.Server/bin/Debug/net7.0 # Change into the build output directory
|
||||
```
|
||||
|
||||
2. Execute the build output. On Linux, Mac, etc. use `./jellyfin` and on Windows use `jellyfin.exe`.
|
||||
2. 执行构建输出。在 Linux、Mac 等系统上,使用 `./jellyfin`,在 Windows 上使用 `jellyfin.exe`。
|
||||
|
||||
### Running The Tests
|
||||
### 运行测试
|
||||
|
||||
This repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests.
|
||||
此存储库还包括用于在 Azure 上的 CI 管道中验证功能的单元测试。有几种方法可以运行这些测试。
|
||||
|
||||
1. Run tests from the command line using `dotnet test`
|
||||
2. Run tests in Visual Studio using the [Test Explorer](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer)
|
||||
3. Run individual tests in Visual Studio Code using the associated [CodeLens annotation](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests)
|
||||
1. 使用 `dotnet test` 从命令行运行测试
|
||||
2. 使用[测试资源管理器](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer)在 Visual Studio 中运行测试
|
||||
3. 使用相关的 [CodeLens 批注](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests)在 Visual Studio Code 中运行单个测试
|
||||
|
||||
### Advanced Configuration
|
||||
### 高级配置
|
||||
|
||||
The following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above.
|
||||
以下章节描述了从源代码运行服务器的一些更高级场景,这些场景基于上述标准说明。
|
||||
|
||||
#### Hosting The Web Client Separately
|
||||
#### 单独托管 Web 客户端
|
||||
|
||||
It is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) repo for instructions on how to do this.
|
||||
没有必要将前端 Web 客户端作为后端服务器的一部分进行托管。将这两个组件分别托管可能对希望在前端开发服务器中单独托管客户端以实现更紧密的开发循环的前端开发者来说很有用。有关如何操作的说明,请参阅 [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) 仓库。
|
||||
|
||||
To instruct the server not to host the web content, there is a `nowebclient` configuration flag that must be set. This can specified using the command line
|
||||
switch `--nowebclient` or the environment variable `JELLYFIN_NOWEBCONTENT=true`.
|
||||
要指示服务器不托管网页内容,必须设置一个 `nowebclient` 配置标志。这可以通过命令行开关 `--nowebclient` 或环境变量 `JELLYFIN_NOWEBCONTENT=true` 来指定。
|
||||
|
||||
Since this is a common scenario, there is also a separate launch profile defined for Visual Studio called `Jellyfin.Server (nowebcontent)` that can be selected from the 'Start Debugging' dropdown in the main toolbar.
|
||||
由于这是一个常见场景,还有一个单独的 Visual Studio 启动配置文件,称为 `Jellyfin.Server (nowebcontent)` ,可以从主工具栏的“开始调试”下拉菜单中选择。
|
||||
|
||||
**NOTE:** The setup wizard can not be run if the web client is hosted separately.
|
||||
**注意:** 如果网页客户端是单独托管的,则无法运行设置向导。
|
||||
|
||||
---
|
||||
<p align="center">
|
||||
This project is supported by:
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="https://www.digitalocean.com"><img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" height="50px" alt="DigitalOcean"></a>
|
||||
|
||||
<a href="https://www.jetbrains.com"><img src="https://gist.githubusercontent.com/anthonylavado/e8b2403deee9581e0b4cb8cd675af7db/raw/fa104b7d73f759d7262794b94569f1b89df41c0b/jetbrains.svg" height="50px" alt="JetBrains logo"></a>
|
||||
</p>
|
||||
* * *
|
||||
|
||||
本项目由以下组织支持:
|
||||
[](https://www.digitalocean.com) [](https://www.jetbrains.com)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue