Initial Config Branch
|
|
@ -0,0 +1,53 @@
|
|||
name: "⏰为应用催更"
|
||||
description: "报告缺陷来帮助我们完善。 / Create a report to help us improve"
|
||||
title: "[需要更新应用] 哪个应用需要更新? / Which app needs an update?"
|
||||
labels:
|
||||
- Update Needed
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Welcome!
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: 应用名称 / App Name
|
||||
description:
|
||||
于此填入待更新的应用所在的文件夹(例如`gitlab-jh`)。
|
||||
|
||||
Enter the folder name of the app that needs an update (for example, `gitlab-jh`).
|
||||
placeholder: (e.g. gitlab-jh)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: 应用版本 / App Version
|
||||
description:
|
||||
有些应用有`latest`版和带版本号的版本,于此填入需要更新的版本所在的文件夹(例如`18.0.1-jh.0`)
|
||||
|
||||
Some apps have `latest` and versioned versions, enter the folder name of the version that needs an update here (for example, `18.0.1-jh.0`).
|
||||
placeholder: (e.g. 18.0.1-jh.0)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 应用镜像当前的版本 / App's Image Current Version
|
||||
description:
|
||||
于此填入当前版本完整的镜像名 (例如`registry.gitlab.cn/omnibus/gitlab-jh:18.0.1-jh.0`)
|
||||
|
||||
Enter the full image name of the current version here (for example, `registry.gitlab.cn/omnibus/gitlab-jh:18.0.1-jh.0`).
|
||||
placeholder: |
|
||||
(e.g. registry.gitlab.cn/omnibus/gitlab-jh:18.0.1-jh.0)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 应用镜像最新的版本 / App's Image Latest Version
|
||||
description: 于此填入最新版本完整的镜像名(例如`registry.gitlab.cn/omnibus/gitlab-jh:18.0.2-jh.0`) / Enter the full image name of the latest version here (for example, `registry.gitlab.cn/omnibus/gitlab-jh:18.0.2-jh.0`).
|
||||
placeholder: |
|
||||
(e.g. registry.gitlab.cn/omnibus/gitlab-jh:18.0.2-jh.0)
|
||||
validations:
|
||||
required: false
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
name: "📝提交新应用 / Add New App"
|
||||
description: "报告缺陷来帮助我们完善。 / Create a report to help us improve"
|
||||
title: "[需要增加应用] 需要增加哪个应用? / Which app needs to be added?"
|
||||
labels:
|
||||
- Add New App
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Welcome!
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: 应用名称 / App Name
|
||||
description:
|
||||
想要添加哪个应用?请填于此。
|
||||
Which app do you want to add? Please fill in here.
|
||||
placeholder: (e.g. gitlab-jh)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 想要添加的应用有官方的 Docker 镜像吗?/ Do the app you want to add have official Docker images?
|
||||
description:
|
||||
没有官方镜像的应用将不能被添加。
|
||||
|
||||
Apps without official Docker images will not be added.
|
||||
placeholder: (e.g. registry.gitlab.cn/omnibus/gitlab-jh:18.0.1-jh.0:18.0.1-jh.0)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 该应用文档的URL / The URL of the app's documentation
|
||||
description:
|
||||
该应用文档的URL,最好能定位到使用 Docker Compose 安装的部分。例如 https://gitlab.cn/docs/jh/install/docker.html#%E4%BD%BF%E7%94%A8-docker-compose-%E5%AE%89%E8%A3%85%E6%9E%81%E7%8B%90gitlab
|
||||
placeholder: |
|
||||
(e.g. https://gitlab.cn/docs/jh/install/docker.html#%E4%BD%BF%E7%94%A8-docker-compose-%E5%AE%89%E8%A3%85%E6%9E%81%E7%8B%90gitlab)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 该应用的 Logo / The app's logo
|
||||
description:
|
||||
应用无水印 logo , 以正方形为佳,最好是 180 * 180 px,复制图片后,粘贴到此处。
|
||||
|
||||
The app's logo without watermark, it's best to be square, preferably 180 * 180 px, copy the image and paste it here.
|
||||
validations:
|
||||
required: false
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links: []
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
name: Auto Merge Open PRs
|
||||
on:
|
||||
schedule:
|
||||
- cron: 0 0 3/3 * *
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
merge-prs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 登录到 GitHub CLI
|
||||
run: gh auth login --with-token <<< "${{ github.token }}"
|
||||
|
||||
- name: 获取可合并的 PR
|
||||
id: get-prs
|
||||
run: |
|
||||
pr_list=$( gh pr list --state open --json number,mergeable --limit 1000 --jq 'sort_by(.number) | .[] | .number' )
|
||||
|
||||
pr_list=$(echo "$pr_list" | tr '\n' ' ')
|
||||
|
||||
echo "PRs to merge: $pr_list"
|
||||
echo "pr_list=$pr_list" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 合并 PR
|
||||
run: |
|
||||
for pr in ${{ steps.get-prs.outputs.pr_list }}; do
|
||||
if ! gh pr merge $pr --merge --delete-branch --body ""; then
|
||||
echo "⚠️ 合并 PR #$pr 失败"
|
||||
else
|
||||
echo "✅ 合并 PR #$pr 成功"
|
||||
fi
|
||||
sleep 3
|
||||
done
|
||||
|
|
@ -9,18 +9,29 @@ docker_compose_files=$(find apps/$app_name/$old_version -name docker-compose.yml
|
|||
|
||||
for docker_compose_file in $docker_compose_files
|
||||
do
|
||||
# Assuming that the app version will be from the first docker image
|
||||
first_service=$(yq '.services | keys | .[0]' $docker_compose_file)
|
||||
# Assuming that the app version will be from the first docker image
|
||||
first_service=$(yq '.services | keys | .[0]' $docker_compose_file)
|
||||
echo "第一个服务是: $first_service"
|
||||
|
||||
image=$(yq .services.$first_service.image $docker_compose_file)
|
||||
image=$(yq .services.$first_service.image $docker_compose_file)
|
||||
echo "该服务的镜像: $image"
|
||||
|
||||
# Only apply changes if the format is <image>:<version>
|
||||
if [[ "$image" == *":"* ]]; then
|
||||
version=$(cut -d ":" -f2- <<< "$image")
|
||||
# Only apply changes if the format is <image>:<version>
|
||||
if [[ "$image" == *":"* ]]; then
|
||||
version=$(cut -d ":" -f2- <<< "$image")
|
||||
echo "版本号: $version"
|
||||
|
||||
# Trim the "v" prefix
|
||||
trimmed_version=${version/#"v"}
|
||||
|
||||
mv apps/$app_name/$old_version apps/$app_name/$trimmed_version
|
||||
# Trim the "v" prefix
|
||||
trimmed_version=${version/#"v"}
|
||||
echo "Trimmed version: $trimmed_version"
|
||||
if [ "$old_version" != "$trimmed_version" ]; then
|
||||
echo "将 apps/$app_name/$old_version 重命名为 apps/$app_name/$trimmed_version"
|
||||
if [ ! -d "apps/$app_name/$trimmed_version" ]; then
|
||||
mv apps/$app_name/$old_version apps/$app_name/$trimmed_version
|
||||
else
|
||||
echo "apps/$app_name/$trimmed_version 文件夹已存在"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
|
@ -11,6 +11,8 @@ on:
|
|||
jobs:
|
||||
update-app-version:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
|
|
|
|||
|
|
@ -3,9 +3,6 @@ name: Renovate
|
|||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
push:
|
||||
branches:
|
||||
- localApps
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
manual-trigger:
|
||||
|
|
@ -19,7 +16,7 @@ jobs:
|
|||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- name: Run Renovate
|
||||
uses: renovatebot/github-action@v41.0.6
|
||||
uses: renovatebot/github-action@87c405b9750f1b6affae06311395b50e3882d54f # v42.0.6
|
||||
with:
|
||||
useSlim: false
|
||||
token: ${{ secrets.GITHUBTOKEN }}
|
||||
token: ${{ github.token }}
|
||||
|
|
@ -0,0 +1 @@
|
|||
*.bat
|
||||
26
README-en.md
|
|
@ -1,17 +1,9 @@
|
|||
[中文](https://github.com/okxlin/appstore/blob/localApps/README.md) | English
|
||||
***
|
||||
|
||||
## Contribution Link
|
||||
|
||||
[**Click here to contribute with AFDIAN**](https://afdian.com/a/dockerapps)
|
||||
|
||||
[](https://afdian.com/a/dockerapps)
|
||||
[中文](https://github.com/pooneyy/1Panel-appstore/blob/localApps/README.md) | English
|
||||
|
||||
* * *
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Contribution Link](#contribution-link)
|
||||
- [Table of Contents](#table-of-contents)
|
||||
- [Disclaimer](#disclaimer)
|
||||
- [1. Image Container Adaptation](#1-image-container-adaptation)
|
||||
|
|
@ -53,12 +45,6 @@ These are some configurations of docker applications adapted for the `1Panel` st
|
|||
|
||||
Dedicated to running various Docker applications with just one click. Enjoy convenience and efficiency without complex configurations.
|
||||
|
||||
### 1Panel Third-Party App Store Categories and Introduction
|
||||
|
||||
- https://1p.131.gs
|
||||
|
||||
**Special thanks to the author [@baozishu](https://github.com/baozishu)**
|
||||
|
||||
## 2. Usage
|
||||
|
||||
The default installation path of `1Panel` is `/opt/`, which can be modified as needed.
|
||||
|
|
@ -74,7 +60,7 @@ The default installation path of `1Panel` is `/opt/`, which can be modified as n
|
|||
In the `Shell Script` task type in the `1Panel` scheduled tasks, add and execute the following command, or run the following command in the terminal:
|
||||
|
||||
```shell
|
||||
git clone -b localApps https://ghp.ci/https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
git clone -b localApps https://ghp.ci/https://github.com/pooneyy/1Panel-appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
|
||||
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
|
||||
|
||||
|
|
@ -88,7 +74,7 @@ Then refresh the local applications in the app store.
|
|||
In the `Shell Script` task type in the `1Panel` scheduled tasks, add and execute the following command, or run the following command in the terminal:
|
||||
|
||||
```shell
|
||||
wget -P /opt/1panel/resource/apps/local https://ghp.ci/https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip
|
||||
wget -P /opt/1panel/resource/apps/local https://ghp.ci/https://github.com/pooneyy/1Panel-appstore/archive/refs/heads/localApps.zip
|
||||
|
||||
unzip -o -d /opt/1panel/resource/apps/local/ /opt/1panel/resource/apps/local/localApps.zip
|
||||
|
||||
|
|
@ -108,7 +94,7 @@ Then refresh the local applications in the app store.
|
|||
In the `Shell Script` task type in the `1Panel` scheduled tasks, add and execute the following command, or run the following command in the terminal:
|
||||
|
||||
```shell
|
||||
git clone -b localApps https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
git clone -b localApps https://github.com/pooneyy/1Panel-appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
|
||||
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
|
||||
|
||||
|
|
@ -122,7 +108,7 @@ Then refresh the local applications in the app store.
|
|||
In the `Shell Script` task type in the `1Panel` scheduled tasks, add and execute the following command, or run the following command in the terminal:
|
||||
|
||||
```shell
|
||||
wget -P /opt/1panel/resource/apps/local https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip
|
||||
wget -P /opt/1panel/resource/apps/local https://github.com/pooneyy/1Panel-appstore/archive/refs/heads/localApps.zip
|
||||
|
||||
unzip -o -d /opt/1panel/resource/apps/local/ /opt/1panel/resource/apps/local/localApps.zip
|
||||
|
||||
|
|
@ -165,4 +151,4 @@ cat ./data/hbbs/id_ed25519.pub
|
|||
|
||||
## 4. App Overview
|
||||
|
||||

|
||||

|
||||
|
|
|
|||
30
README.md
|
|
@ -1,16 +1,8 @@
|
|||
中文 | [English](https://github.com/okxlin/appstore/blob/localApps/README-en.md)
|
||||
***
|
||||
|
||||
## 打赏链接
|
||||
|
||||
[**点我打赏,用爱发电**](https://afdian.com/a/dockerapps)
|
||||
|
||||
[](https://afdian.com/a/dockerapps)
|
||||
中文 | [English](https://github.com/pooneyy/1Panel-appstore/blob/localApps/README-en.md)
|
||||
|
||||
* * *
|
||||
## 目录
|
||||
|
||||
- [打赏链接](#打赏链接)
|
||||
- [目录](#目录)
|
||||
- [免责声明](#免责声明)
|
||||
- [1. 镜像容器适配](#1-镜像容器适配)
|
||||
|
|
@ -52,11 +44,11 @@
|
|||
|
||||
致力于一键运行各种 Docker 应用。无需复杂配置,享受便利和高效。
|
||||
|
||||
### 1Panel第三方应用商店应用分类合集与介绍
|
||||
|
||||
- https://1p.131.gs
|
||||
|
||||
**感谢作者[@包子叔](https://github.com/baozishu)**
|
||||
### 本仓库分支说明
|
||||
- `localApps`:主分支
|
||||
- `config`:配置文件分支,专门用于编辑本仓库的配置文件
|
||||
- `patch/*`:用于编辑时的临时分支
|
||||
- `renovate/*`:机器人产生的临时分支
|
||||
|
||||
## 2. 使用方式
|
||||
|
||||
|
|
@ -72,7 +64,7 @@
|
|||
|
||||
`1Panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
|
||||
```shell
|
||||
git clone -b localApps https://ghp.ci/https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
git clone -b localApps https://ghp.ci/https://github.com/pooneyy/1Panel-appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
|
||||
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
|
||||
|
||||
|
|
@ -85,7 +77,7 @@ rm -rf /opt/1panel/resource/apps/local/appstore-localApps
|
|||
|
||||
`1Panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
|
||||
```shell
|
||||
wget -P /opt/1panel/resource/apps/local https://ghp.ci/https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip
|
||||
wget -P /opt/1panel/resource/apps/local https://ghp.ci/https://github.com/pooneyy/1Panel-appstore/archive/refs/heads/localApps.zip
|
||||
|
||||
unzip -o -d /opt/1panel/resource/apps/local/ /opt/1panel/resource/apps/local/localApps.zip
|
||||
|
||||
|
|
@ -104,7 +96,7 @@ rm -rf /opt/1panel/resource/apps/local/localApps.zip
|
|||
|
||||
`1Panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
|
||||
```shell
|
||||
git clone -b localApps https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
git clone -b localApps https://github.com/pooneyy/1Panel-appstore /opt/1panel/resource/apps/local/appstore-localApps
|
||||
|
||||
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
|
||||
|
||||
|
|
@ -117,7 +109,7 @@ rm -rf /opt/1panel/resource/apps/local/appstore-localApps
|
|||
|
||||
`1Panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
|
||||
```shell
|
||||
wget -P /opt/1panel/resource/apps/local https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip
|
||||
wget -P /opt/1panel/resource/apps/local https://github.com/pooneyy/1Panel-appstore/archive/refs/heads/localApps.zip
|
||||
|
||||
unzip -o -d /opt/1panel/resource/apps/local/ /opt/1panel/resource/apps/local/localApps.zip
|
||||
|
||||
|
|
@ -161,4 +153,4 @@ cat ./data/hbbs/id_ed25519.pub
|
|||
|
||||
## 4. 应用一览图
|
||||
|
||||

|
||||

|
||||
|
|
|
|||
|
|
@ -1,72 +0,0 @@
|
|||
# 115网盘Linux版本的Docker封装
|
||||
[](https://hub.docker.com/r/funcman/115pc/)
|
||||
|
||||
## 紧急提示
|
||||
我发现在使用一段时间后,会出现无法继续使用的问题。
|
||||
|
||||
最近终于抽出时间仔细看了一下,临时的解决方法就是把Web浏览器中的115pc相关的Cookie清除掉。
|
||||
|
||||
操作方法比如:<https://support.google.com/chrome/answer/95647>
|
||||
|
||||
|
||||
## 拉取镜像
|
||||
|
||||
```shell
|
||||
docker pull funcman/115pc:latest
|
||||
```
|
||||
|
||||
|
||||
## 创建容器
|
||||
|
||||
```shell
|
||||
docker create --name=115pc \
|
||||
-p 11580:5800 \
|
||||
-p 11591:5900 \
|
||||
-v <YourConfigDir>:/config \
|
||||
-v <YourDownloadDir>:/Downloads/115download \
|
||||
--restart always \
|
||||
funcman/115pc:latest
|
||||
```
|
||||
|
||||
|
||||
## 启停
|
||||
|
||||
```shell
|
||||
docker start 115pc
|
||||
docker stop 115pc
|
||||
```
|
||||
|
||||
*启动之后,可通过 `http://<ip>:11580`进行访问*
|
||||
|
||||
|
||||
## 参数
|
||||
|
||||
|名称 |说明 |
|
||||
|:- |:- |
|
||||
|`APP_NAME` |应用名称,默认:115pc |
|
||||
|`APP_VERSION` |指定115客户端版本号,默认:2.0.5.5 |
|
||||
|`USER_ID` |指定容器内的用户ID,默认:root |
|
||||
|`GROUP_ID` |指定容器内的组ID,默认:root |
|
||||
|`ENABLE_CJK_FONT` |默认:1,不建议修改 |
|
||||
|`DISPLAY_WIDTH` |应用界面宽度,默认:1920 |
|
||||
|`DISPLAY_HEIGHT` |应用界面高度,默认:1080 |
|
||||
|`APT_SOURCE_HOST` |Apt更新源地址,默认为科技大镜像:mirrors.ustc.edu.cn |
|
||||
|
||||
*更多参数设置,请参考:<https://github.com/jlesage/docker-baseimage-gui>*
|
||||
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 考虑到Docker运行的特殊性,在每次容器启动时,都会改回***下载路径***设置,以达到固化路径的作用。
|
||||
2. 同时由于v1.0.6.7这个版本(后期版本未特别验证,至少到v2.0.5.5依然如此)115客户端,默认的设置中,下载路径有多余的换行符,亦使用强制改回配置的方式实现。
|
||||
3. 副作用是其他设置也会被一并改回,若有特殊需求,请自行修改代码。
|
||||
4. 由于`jlesage/baseimage-gui`默认情况下,在容器内使用`app`用户运行程序,会造成115客户端无权限使用默认下载路径。
|
||||
5. 采用修改参数`USER_ID`和`GROUP_ID`为`root`的手法,解决了事项4的问题,目前没找到更好的方法。
|
||||
6. 由于默认使用了`root`用户,导致115客户端下载的文件的权限在其他用户面前为只读,所以尽量使用115客户端删除下载文件。
|
||||
7. **不支持**115客户端的在线升级,主要是因为升级过程中需要输入115所在主机系统的登录密码,但是输入设置的密码会提示密码不正确。
|
||||
|
||||
|
||||
## 感谢
|
||||
|
||||
* [jlesage/baseimage-gui](https://hub.docker.com/r/jlesage/baseimage-gui)提供的X图形应用容器基础镜像,使用它可以轻松将Linux图形应用程序以Web和VNC的方式使用。
|
||||
* CALTyang制作的[115pc-docker](https://github.com/CALTyang/115pc-docker),我这里fork了他的代码,并进一步折腾解决了一些小问题,收获很多。
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: 115网盘
|
||||
tags:
|
||||
- 工具
|
||||
title: 115网盘是115科技推出的云存储服务
|
||||
description: 115网盘是115科技推出的云存储服务
|
||||
additionalProperties:
|
||||
key: 115pc
|
||||
name: 115网盘
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: 115网盘是115科技推出的云存储服务
|
||||
shortDescEn: 115 network disk is a cloud storage service launched by 115 Technology
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://115.com
|
||||
github: https://www.github.com/funcman/docker_115pc
|
||||
document: https://www.github.com/funcman/docker_115pc
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
CONTAINER_NAME="115pc"
|
||||
APT_SOURCE="mirrors.ustc.edu.cn"
|
||||
CONFIG_PATH="./data/config"
|
||||
DOWNLOAD_PATH="./data/downloads"
|
||||
PANEL_APP_PORT_HTTP="40088"
|
||||
VNC_DISPLAY_HEIGHT="1080"
|
||||
VNC_DISPLAY_WIDTH="1920"
|
||||
VNC_PASSWORD="VNCPassword"
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40088
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: WebUI Port
|
||||
labelZh: 网页端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: VNCPassword
|
||||
edit: true
|
||||
envKey: VNC_PASSWORD
|
||||
labelEn: Access Password
|
||||
labelZh: 访问密码
|
||||
random: false
|
||||
required: true
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ./data/config
|
||||
edit: true
|
||||
envKey: CONFIG_PATH
|
||||
labelEn: Config file path
|
||||
labelZh: 配置文件所在路径
|
||||
required: true
|
||||
type: text
|
||||
- default: ./data/downloads
|
||||
edit: true
|
||||
envKey: DOWNLOAD_PATH
|
||||
labelEn: Download folder path
|
||||
labelZh: 下载文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: mirrors.ustc.edu.cn
|
||||
edit: true
|
||||
envKey: APT_SOURCE
|
||||
labelEn: apt source
|
||||
labelZh: apt 源
|
||||
required: true
|
||||
type: text
|
||||
- default: 1920
|
||||
edit: true
|
||||
envKey: VNC_DISPLAY_WIDTH
|
||||
labelEn: VNC display width
|
||||
labelZh: VNC显示宽度
|
||||
required: true
|
||||
type: number
|
||||
- default: 1080
|
||||
edit: true
|
||||
envKey: VNC_DISPLAY_HEIGHT
|
||||
labelEn: VNC display height
|
||||
labelZh: VNC显示高度
|
||||
required: true
|
||||
type: number
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
services:
|
||||
115pc:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
environment:
|
||||
- "TZ=Asia/Shanghai"
|
||||
- "VNC_PASSWORD=${VNC_PASSWORD}"
|
||||
- "DISPLAY_WIDTH=${VNC_DISPLAY_WIDTH}"
|
||||
- "DISPLAY_HEIGHT=${VNC_DISPLAY_HEIGHT}"
|
||||
- "ENABLE_CJK_FONT=1"
|
||||
- "APT_SOURCE_HOST=${APT_SOURCE}"
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:5800"
|
||||
volumes:
|
||||
- "${CONFIG_PATH}:/config"
|
||||
- "${DOWNLOAD_PATH}:/Downloads/115download"
|
||||
image: funcman/115pc:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
Before Width: | Height: | Size: 3.9 KiB |
|
|
@ -1,13 +0,0 @@
|
|||
# 1Panel Apps
|
||||
|
||||
这是一款适配 1Panel 应用商店的通用应用模板,
|
||||
|
||||
旨在简化 Docker 应用的快速适配过程,让用户轻松将所需应用集成至 1Panel 应用商店。
|
||||
|
||||
它能够有效解决非商店应用无法使用 1Panel 快照和应用备份功能的问题。
|
||||
|
||||
## 使用说明
|
||||
|
||||
- 可以按需修改安装界面的参数
|
||||
|
||||
- 也可以直接忽视安装界面提供的参数,然后勾选`“高级设置”`,勾选`“编辑compose文件”`,使用自定义的 `docker-compose.yml`文件
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
CONTAINER_NAME="1panel-apps"
|
||||
DATA_PATH="./data"
|
||||
DATA_PATH_INTERNAL="/data"
|
||||
ENV1=""
|
||||
IMAGE=""
|
||||
PANEL_APP_PORT_HTTP=40329
|
||||
PANEL_APP_PORT_HTTP_INTERNAL=40329
|
||||
RESTART_POLICY="always"
|
||||
TIME_ZONE="Asia/Shanghai"
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: IMAGE
|
||||
labelEn: Docker Image
|
||||
labelZh: Docker 镜像
|
||||
required: true
|
||||
type: text
|
||||
- default: "always"
|
||||
edit: true
|
||||
envKey: RESTART_POLICY
|
||||
labelEn: Restart Policy
|
||||
labelZh: 重启策略
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "Always"
|
||||
value: "always"
|
||||
- label: "Unless Stopped"
|
||||
value: "unless-stopped"
|
||||
- label: "On Failure"
|
||||
value: "on-failure"
|
||||
- label: "No"
|
||||
value: "no"
|
||||
- default: "40329"
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: "40329"
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP_INTERNAL
|
||||
labelEn: Internal Port
|
||||
labelZh: 内部端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: "./data"
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data Path
|
||||
labelZh: 数据路径
|
||||
required: true
|
||||
type: text
|
||||
- default: "/data"
|
||||
edit: true
|
||||
envKey: DATA_PATH_INTERNAL
|
||||
labelEn: Internal Data Path
|
||||
labelZh: 内部数据路径
|
||||
required: true
|
||||
type: text
|
||||
- default: "Asia/Shanghai"
|
||||
edit: true
|
||||
envKey: TIME_ZONE
|
||||
labelEn: Time Zone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ENV1
|
||||
labelEn: Environment Variable 1 (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: 环境变量 1 (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
services:
|
||||
1panel-apps:
|
||||
image: ${IMAGE}
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: ${RESTART_POLICY}
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP_INTERNAL}"
|
||||
volumes:
|
||||
- "${DATA_PATH}:${DATA_PATH_INTERNAL}"
|
||||
environment:
|
||||
# 环境参数按需修改 (Modify the environment parameters as required)
|
||||
- TZ=${TIME_ZONE}
|
||||
# 删除以下行前的#号表示启用 (Delete the # sign in front of the following lines to indicate enablement)
|
||||
# - ${ENV1}=${ENV1}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: 1Panel Apps
|
||||
tags:
|
||||
- 建站
|
||||
title: 适配 1Panel 应用商店的通用应用模板
|
||||
description: 适配 1Panel 应用商店的通用应用模板
|
||||
additionalProperties:
|
||||
key: 1panel-apps
|
||||
name: 1Panel Apps
|
||||
tags:
|
||||
- Website
|
||||
shortDescZh: 适配 1Panel 应用商店的通用应用模板
|
||||
shortDescEn: Universal app template for the 1Panel App Store
|
||||
type: website
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/okxlin/appstore
|
||||
github: https://github.com/okxlin/appstore
|
||||
document: https://github.com/okxlin/appstore
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
CONTAINER_NAME="1panel-apps"
|
||||
DATA_PATH="./data"
|
||||
DATA_PATH_INTERNAL="/data"
|
||||
ENV1=""
|
||||
IMAGE=""
|
||||
PANEL_APP_PORT_HTTP=40329
|
||||
RESTART_POLICY="always"
|
||||
TIME_ZONE="Asia/Shanghai"
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: IMAGE
|
||||
labelEn: Docker Image
|
||||
labelZh: Docker 镜像
|
||||
required: true
|
||||
type: text
|
||||
- default: "always"
|
||||
edit: true
|
||||
envKey: RESTART_POLICY
|
||||
labelEn: Restart Policy
|
||||
labelZh: 重启策略
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "Always"
|
||||
value: "always"
|
||||
- label: "Unless Stopped"
|
||||
value: "unless-stopped"
|
||||
- label: "On Failure"
|
||||
value: "on-failure"
|
||||
- label: "No"
|
||||
value: "no"
|
||||
- default: "40329"
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port (determined by the Docker application itself)
|
||||
labelZh: 端口 (由 Docker 应用自身决定)
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: "./data"
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data Path
|
||||
labelZh: 数据路径
|
||||
required: true
|
||||
type: text
|
||||
- default: "/data"
|
||||
edit: true
|
||||
envKey: DATA_PATH_INTERNAL
|
||||
labelEn: Internal Data Path
|
||||
labelZh: 内部数据路径
|
||||
required: true
|
||||
type: text
|
||||
- default: "Asia/Shanghai"
|
||||
edit: true
|
||||
envKey: TIME_ZONE
|
||||
labelEn: Time Zone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ENV1
|
||||
labelEn: Environment Variable 1 (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: 环境变量 1 (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
services:
|
||||
1panel-apps:
|
||||
image: ${IMAGE}
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: ${RESTART_POLICY}
|
||||
network_mode: host
|
||||
volumes:
|
||||
- "${DATA_PATH}:${DATA_PATH_INTERNAL}"
|
||||
environment:
|
||||
# 环境参数按需修改 (Modify the environment parameters as required)
|
||||
- TZ=${TIME_ZONE}
|
||||
# 删除以下行前的#号表示启用 (Delete the # sign in front of the following lines to indicate enablement)
|
||||
# - ${ENV1}=${ENV1}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
Before Width: | Height: | Size: 4.7 KiB |
|
|
@ -1,4 +0,0 @@
|
|||
CONTAINER_NAME="1panel"
|
||||
PANEL_APP_PORT_HTTP="10086"
|
||||
DATA_PATH="./data"
|
||||
TIME_ZONE="Asia/Shanghai"
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 10086
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port (determined by the listening port)
|
||||
labelZh: 端口 (由监听端口决定)
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: /opt
|
||||
disabled: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data storage folder
|
||||
labelZh: 数据存放文件夹
|
||||
required: true
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TIME_ZONE
|
||||
labelEn: Time zone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
services:
|
||||
1panel:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
network_mode: "host"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||
- ${DATA_PATH}:/opt
|
||||
- /root:/root
|
||||
environment:
|
||||
- TZ=${TIME_ZONE}
|
||||
image: moelin/1panel:v1.10.29-lts
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
# 使用说明
|
||||
|
||||
### 镜像 Github:https://github.com/okxlin/docker-1panel
|
||||
|
||||
### 镜像 Docker Hub:https://hub.docker.com/r/moelin/1panel
|
||||
|
||||
如果更新了更高版本的镜像,实际是更新了对应版本的二进制程序,面板显示的相关版本还需要手动更新,具体操作可以查看[**Github**](https://github.com/okxlin/docker-1panel)。
|
||||
|
||||
**不要点击容器化部署的 `1Panel` 右下角进行更新,应该拉取新镜像再更新**
|
||||
***
|
||||
- 默认端口:`10086`
|
||||
- 默认账户:`1panel`
|
||||
- 默认密码:`1panel_password`
|
||||
- 默认入口:`entrance`
|
||||
***
|
||||
- 不可调整参数
|
||||
- `/var/run/docker.sock`的相关映射
|
||||
***
|
||||
- 可调整参数
|
||||
> **推荐使用/opt路径,否则有些调用本地文件的应用可能出现异常**
|
||||
- `/opt:/opt` 文件存储映射
|
||||
- `/root:/root` 文件存储映射
|
||||
- `TZ=Asia/Shanghai` 时区设置
|
||||
- `1panel` 容器名
|
||||
- `/var/lib/docker/volumes:/var/lib/docker/volumes` 存储卷映射
|
||||
***
|
||||
**架构平台对应镜像**
|
||||
- amd64
|
||||
- arm64
|
||||
- armv7
|
||||
- ppc64le
|
||||
- s390x
|
||||
> 2023年9月3日已经更新单标签多镜像
|
||||
```
|
||||
docker pull moelin/1panel:latest
|
||||
```
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
|
||||
<p align="center"><a href="https://1panel.cn"><img src="http://1panel.oss-cn-hangzhou.aliyuncs.com/img/1panel-logo.png" alt="1Panel" width="300" /></a></p>
|
||||
<p align="center"><b>现代化、开源的 Linux 服务器运维管理面板</b></p>
|
||||
<p align="center">
|
||||
<a href="https://www.gnu.org/licenses/gpl-3.0.html"><img src="https://shields.io/github/license/1Panel-dev/1Panel?color=%231890FF" alt="License: GPL v3"></a>
|
||||
<a href="https://app.codacy.com/gh/1Panel-dev/1Panel?utm_source=github.com&utm_medium=referral&utm_content=1Panel-dev/1Panel&utm_campaign=Badge_Grade_Dashboard"><img src="https://app.codacy.com/project/badge/Grade/da67574fd82b473992781d1386b937ef" alt="Codacy"></a>
|
||||
<a href="https://github.com/1Panel-dev/1Panel/releases"><img src="https://img.shields.io/github/v/release/1Panel-dev/1Panel" alt="GitHub release"></a>
|
||||
<a href="https://github.com/1Panel-dev/1Panel"><img src="https://img.shields.io/github/stars/1Panel-dev/1Panel?color=%231890FF&style=flat-square" alt="Stars"></a>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2F1Panel-dev%2F1Panel?ref=badge_shield"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2F1Panel-dev%2F1Panel.svg?type=shield" alt="FOSSA Status"></a><br>
|
||||
[<a href="https://github.com/1Panel-dev/1Panel/blob/dev/docs/README_TW.md">中文(繁體)</a>] | [<a href="https://github.com/1Panel-dev/1Panel/blob/dev/docs/README_EN.md">English</a>] | [<a href="https://github.com/1Panel-dev/1Panel/blob/dev/docs/README_JP.md">日本語</a>]
|
||||
</p>
|
||||
|
||||
------------------------------
|
||||
|
||||
1Panel 是新一代的 Linux 服务器运维管理面板。
|
||||
|
||||
- **高效管理**:用户可以通过 Web 图形界面轻松管理 Linux 服务器,实现主机监控、文件管理、数据库管理、容器管理等功能;
|
||||
- **快速建站**:深度集成开源建站软件 WordPress 和 [Halo](https://github.com/halo-dev/halo/),域名绑定、SSL 证书配置等操作一键搞定;
|
||||
- **应用商店**:精选上架各类高质量的开源工具和应用软件,协助用户轻松安装并升级;
|
||||
- **安全可靠**:基于容器管理并部署应用,实现最小的漏洞暴露面,同时提供防火墙和日志审计等功能;
|
||||
- **一键备份**:支持一键备份和恢复,用户可以将数据备份到各类云端存储介质,永不丢失。
|
||||
|
||||
1Panel 三分钟速览:https://www.bilibili.com/video/BV1Mt421n7LZ/
|
||||
|
||||
## UI 展示
|
||||
|
||||

|
||||
|
||||
## 快速开始
|
||||
|
||||
**在线体验**
|
||||
|
||||
- 环境地址:<https://demo.1panel.cn/>
|
||||
- 用户名:demo
|
||||
- 密码:1panel
|
||||
|
||||
**一键安装**
|
||||
|
||||
执行如下命令一键安装 1Panel:
|
||||
|
||||
```sh
|
||||
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
|
||||
```
|
||||
|
||||
**学习资料**
|
||||
|
||||
- [在线文档](https://1panel.cn/docs/)
|
||||
- [教学视频](https://space.bilibili.com/510493147/channel/collectiondetail?sid=1199760)
|
||||
- [社区论坛](https://bbs.fit2cloud.com/c/1p/7)
|
||||
|
||||
**加入微信交流群**
|
||||
|
||||
<img src="https://1panel.cn/img/wechat-group.jpg" width="156" height="156"/>
|
||||
|
||||
## 安全说明
|
||||
|
||||
如果您在使用过程中发现任何安全问题,请通过以下方式直接联系我们:
|
||||
|
||||
- 邮箱:support@fit2cloud.com
|
||||
- 电话:400-052-0755
|
||||
|
||||
## Star History
|
||||
|
||||
[](https://star-history.com/#1Panel-dev/1Panel&Date)
|
||||
|
||||
## FOSSA Status
|
||||
|
||||
[](https://app.fossa.com/projects/git%2Bgithub.com%2F1Panel-dev%2F1Panel?ref=badge_large)
|
||||
|
||||
## License
|
||||
|
||||
Copyright (c) 2014-2023 [FIT2CLOUD 飞致云](https://fit2cloud.com/), All rights reserved.
|
||||
|
||||
Licensed under The GNU General Public License version 3 (GPLv3) (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
|
||||
|
||||
<https://www.gnu.org/licenses/gpl-3.0.html>
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: 1Panel
|
||||
tags:
|
||||
- 工具
|
||||
title: 现代化、开源的 Linux 服务器运维管理面板
|
||||
description: 现代化、开源的 Linux 服务器运维管理面板
|
||||
additionalProperties:
|
||||
key: 1panel
|
||||
name: 1Panel
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: 现代化、开源的 Linux 服务器运维管理面板
|
||||
shortDescEn: Modern and Open-Source Linux Server Operation and Management Panel
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 1
|
||||
recommend: 0
|
||||
website: https://1panel.cn
|
||||
github: https://github.com/1Panel-dev/1Panel
|
||||
document: https://1panel.cn/docs
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
CONTAINER_NAME="1panel"
|
||||
PANEL_APP_PORT_HTTP="10086"
|
||||
DATA_PATH="./data"
|
||||
TIME_ZONE="Asia/Shanghai"
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 10086
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port (determined by the listening port)
|
||||
labelZh: 端口 (由监听端口决定)
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: /opt
|
||||
disabled: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data storage folder
|
||||
labelZh: 数据存放文件夹
|
||||
required: true
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TIME_ZONE
|
||||
labelEn: Time zone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
services:
|
||||
1panel:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
network_mode: "host"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||
- ${DATA_PATH}:/opt
|
||||
- /root:/root
|
||||
environment:
|
||||
- TZ=${TIME_ZONE}
|
||||
image: moelin/1panel:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
Before Width: | Height: | Size: 9.1 KiB |
|
|
@ -1,54 +0,0 @@
|
|||
APP_DEBUG="false"
|
||||
APP_ENV="local"
|
||||
APP_KEY="yuBiR9dlyokasPeguSPl8oPRLpHiqAbr"
|
||||
APP_NAME="2FAuth"
|
||||
APP_TIMEZONE="Asia/Shanghai"
|
||||
APP_URL="http://192.168.123.9:40273"
|
||||
AUTHENTICATION_GUARD="web-guard"
|
||||
AUTHENTICATION_LOG_RETENTION=365
|
||||
AUTH_PROXY_HEADER_FOR_EMAIL=""
|
||||
AUTH_PROXY_HEADER_FOR_USER=""
|
||||
BROADCAST_DRIVER="log"
|
||||
CACHE_DRIVER="file"
|
||||
CONTAINER_NAME="2fauth"
|
||||
DB_DATABASE="/srv/database/database.sqlite"
|
||||
GITHUB_CLIENT_ID=""
|
||||
GITHUB_CLIENT_SECRET=""
|
||||
IS_DEMO_APP="false"
|
||||
LOGIN_THROTTLE=5
|
||||
LOG_CHANNEL="daily"
|
||||
LOG_LEVEL="notice"
|
||||
MAIL_ENCRYPTION=""
|
||||
MAIL_FROM_ADDRESS=""
|
||||
MAIL_FROM_NAME=""
|
||||
MAIL_HOST=""
|
||||
MAIL_MAILER="log"
|
||||
MAIL_PASSWORD=""
|
||||
MAIL_PORT=""
|
||||
MAIL_USERNAME=""
|
||||
MAIL_VERIFY_SSL_PEER="true"
|
||||
MIX_ENV="local"
|
||||
OPENID_AUTHORIZE_URL=""
|
||||
OPENID_CLIENT_ID=""
|
||||
OPENID_CLIENT_SECRET=""
|
||||
OPENID_TOKEN_URL=""
|
||||
OPENID_USERINFO_URL=""
|
||||
PANEL_APP_PORT_HTTP=40273
|
||||
PANEL_REDIS_ROOT_PASSWORD="redis_password"
|
||||
PROXY_FOR_OUTGOING_REQUESTS=""
|
||||
PROXY_LOGOUT_URL=""
|
||||
PUSHER_APP_CLUSTER="mt1"
|
||||
PUSHER_APP_ID=""
|
||||
PUSHER_APP_KEY=""
|
||||
PUSHER_APP_SECRET=""
|
||||
QUEUE_DRIVER="sync"
|
||||
REDIS_HOST="redis"
|
||||
REDIS_PORT=6379
|
||||
SESSION_DRIVER="file"
|
||||
SESSION_LIFETIME=120
|
||||
SITE_OWNER="admin@localhost.com"
|
||||
THROTTLE_API=60
|
||||
TRUSTED_PROXIES=""
|
||||
WEBAUTHN_ID=""
|
||||
WEBAUTHN_NAME="2FAuth"
|
||||
WEBAUTHN_USER_VERIFICATION="preferred"
|
||||
|
|
@ -1,426 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: "40273"
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: "2FAuth"
|
||||
edit: true
|
||||
envKey: APP_NAME
|
||||
labelEn: App Name
|
||||
labelZh: 应用名
|
||||
required: true
|
||||
type: text
|
||||
- default: "local"
|
||||
edit: true
|
||||
envKey: APP_ENV
|
||||
labelEn: App Environment
|
||||
labelZh: 应用环境
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "local"
|
||||
value: "local"
|
||||
- label: "production"
|
||||
value: "production"
|
||||
- default: "Asia/Shanghai"
|
||||
edit: true
|
||||
envKey: APP_TIMEZONE
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
- default: "false"
|
||||
edit: true
|
||||
envKey: APP_DEBUG
|
||||
labelEn: Debug Mode
|
||||
labelZh: 调试模式
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "True"
|
||||
value: "true"
|
||||
- label: "False"
|
||||
value: "false"
|
||||
- default: "admin@localhost.com"
|
||||
edit: true
|
||||
envKey: SITE_OWNER
|
||||
labelEn: Site Owner
|
||||
labelZh: 站点拥有者
|
||||
required: true
|
||||
type: text
|
||||
- default: "yuBiR9dlyokasPeguSPl8oPRLpHiqAbr"
|
||||
edit: true
|
||||
envKey: APP_KEY
|
||||
labelEn: App Key (32 characters)
|
||||
labelZh: 应用密钥 (32 位字符)
|
||||
required: true
|
||||
type: text
|
||||
- default: "http://localhost:40273"
|
||||
edit: true
|
||||
envKey: APP_URL
|
||||
labelEn: App URL (External URL)
|
||||
labelZh: 应用网址 (外部访问地址)
|
||||
required: true
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: "false"
|
||||
edit: true
|
||||
envKey: IS_DEMO_APP
|
||||
labelEn: Demo Mode
|
||||
labelZh: 演示模式
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "True"
|
||||
value: "true"
|
||||
- label: "False"
|
||||
value: "false"
|
||||
- default: "daily"
|
||||
edit: true
|
||||
envKey: LOG_CHANNEL
|
||||
labelEn: Log Channel
|
||||
labelZh: 日志通道
|
||||
required: true
|
||||
type: text
|
||||
- default: "notice"
|
||||
edit: true
|
||||
envKey: LOG_LEVEL
|
||||
labelEn: Log Level
|
||||
labelZh: 日志级别
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "debug"
|
||||
value: "debug"
|
||||
- label: "info"
|
||||
value: "info"
|
||||
- label: "notice"
|
||||
value: "notice"
|
||||
- label: "warning"
|
||||
value: "warning"
|
||||
- label: "error"
|
||||
value: "error"
|
||||
- label: "critical"
|
||||
value: "critical"
|
||||
- label: "alert"
|
||||
value: "alert"
|
||||
- label: "emergency"
|
||||
value: "emergency"
|
||||
- default: "/srv/database/database.sqlite"
|
||||
disabled: true
|
||||
envKey: DB_DATABASE
|
||||
labelEn: Database Path
|
||||
labelZh: 数据库路径
|
||||
required: true
|
||||
type: text
|
||||
- default: "file"
|
||||
disabled: true
|
||||
envKey: CACHE_DRIVER
|
||||
labelEn: Cache Driver
|
||||
labelZh: 缓存驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "file"
|
||||
disabled: true
|
||||
envKey: SESSION_DRIVER
|
||||
labelEn: Session Driver
|
||||
labelZh: 会话驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "log"
|
||||
edit: true
|
||||
envKey: MAIL_MAILER
|
||||
labelEn: Mailer
|
||||
labelZh: 邮件发送方式
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_HOST
|
||||
labelEn: Mail Host
|
||||
labelZh: 邮件服务器
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_PORT
|
||||
labelEn: Mail Port
|
||||
labelZh: 邮件端口
|
||||
required: false
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_USERNAME
|
||||
labelEn: Mail Username
|
||||
labelZh: 邮件用户名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_PASSWORD
|
||||
labelEn: Mail Password
|
||||
labelZh: 邮件密码
|
||||
required: false
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_ENCRYPTION
|
||||
labelEn: Mail Encryption
|
||||
labelZh: 邮件加密方式
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_FROM_NAME
|
||||
labelEn: Mail From Name
|
||||
labelZh: 邮件发件人姓名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_FROM_ADDRESS
|
||||
labelEn: Mail From Address
|
||||
labelZh: 邮件发件人地址
|
||||
required: false
|
||||
type: text
|
||||
- default: "true"
|
||||
edit: true
|
||||
envKey: MAIL_VERIFY_SSL_PEER
|
||||
labelEn: Mail Verify SSL Peer
|
||||
labelZh: 邮件验证 SSL 证书
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "True"
|
||||
value: "true"
|
||||
- label: "False"
|
||||
value: "false"
|
||||
- default: "60"
|
||||
edit: true
|
||||
envKey: THROTTLE_API
|
||||
labelEn: API Throttle
|
||||
labelZh: API 限制
|
||||
required: true
|
||||
type: number
|
||||
- default: "5"
|
||||
edit: true
|
||||
envKey: LOGIN_THROTTLE
|
||||
labelEn: Login Throttle
|
||||
labelZh: 登录限制
|
||||
required: true
|
||||
type: number
|
||||
- default: "web-guard"
|
||||
edit: true
|
||||
envKey: AUTHENTICATION_GUARD
|
||||
labelEn: Authentication Guard
|
||||
labelZh: 认证保护
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "web-guard"
|
||||
value: "web-guard"
|
||||
- label: "reverse-proxy-guard"
|
||||
value: "reverse-proxy-guard"
|
||||
- default: "365"
|
||||
edit: true
|
||||
envKey: AUTHENTICATION_LOG_RETENTION
|
||||
labelEn: Authentication Log Retention
|
||||
labelZh: 认证日志保留
|
||||
required: true
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: AUTH_PROXY_HEADER_FOR_USER
|
||||
labelEn: Authentication Proxy Header for User
|
||||
labelZh: 用户认证代理头
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: AUTH_PROXY_HEADER_FOR_EMAIL
|
||||
labelEn: Authentication Proxy Header for Email
|
||||
labelZh: 邮箱认证代理头
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PROXY_LOGOUT_URL
|
||||
labelEn: Proxy Logout URL
|
||||
labelZh: 代理注销网址
|
||||
required: false
|
||||
type: text
|
||||
- default: "2FAuth"
|
||||
edit: true
|
||||
envKey: WEBAUTHN_NAME
|
||||
labelEn: WebAuthn Name
|
||||
labelZh: WebAuthn 名称
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: WEBAUTHN_ID
|
||||
labelEn: WebAuthn ID
|
||||
labelZh: WebAuthn ID
|
||||
required: false
|
||||
type: text
|
||||
- default: "preferred"
|
||||
edit: true
|
||||
envKey: WEBAUTHN_USER_VERIFICATION
|
||||
labelEn: WebAuthn User Verification
|
||||
labelZh: WebAuthn 用户验证
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "Preferred"
|
||||
value: "preferred"
|
||||
- label: "Required"
|
||||
value: "required"
|
||||
- label: "Discouraged"
|
||||
value: "discouraged"
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: TRUSTED_PROXIES
|
||||
labelEn: Trusted Proxies
|
||||
labelZh: 信任代理
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PROXY_FOR_OUTGOING_REQUESTS
|
||||
labelEn: Proxy for Outgoing Requests
|
||||
labelZh: 出站请求代理
|
||||
required: false
|
||||
type: text
|
||||
- default: "log"
|
||||
edit: true
|
||||
envKey: BROADCAST_DRIVER
|
||||
labelEn: Broadcast Driver
|
||||
labelZh: 广播驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "sync"
|
||||
edit: true
|
||||
envKey: QUEUE_DRIVER
|
||||
labelEn: Queue Driver
|
||||
labelZh: 队列驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "120"
|
||||
edit: true
|
||||
envKey: SESSION_LIFETIME
|
||||
labelEn: Session Lifetime
|
||||
labelZh: 会话有效期
|
||||
required: true
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_HOST
|
||||
key: redis
|
||||
labelEn: Redis Service
|
||||
labelZh: Redis服务
|
||||
required: true
|
||||
type: service
|
||||
- default: "6379"
|
||||
edit: true
|
||||
envKey: REDIS_PORT
|
||||
labelEn: Redis Service Port
|
||||
labelZh: Redis服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PANEL_REDIS_ROOT_PASSWORD
|
||||
labelEn: Redis Password
|
||||
labelZh: Redis 密码
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PUSHER_APP_ID
|
||||
labelEn: Pusher App ID
|
||||
labelZh: Pusher 应用 ID
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PUSHER_APP_KEY
|
||||
labelEn: Pusher App Key
|
||||
labelZh: Pusher 应用密钥
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PUSHER_APP_SECRET
|
||||
labelEn: Pusher App Secret
|
||||
labelZh: Pusher 应用密钥
|
||||
required: false
|
||||
type: password
|
||||
- default: "mt1"
|
||||
edit: true
|
||||
envKey: PUSHER_APP_CLUSTER
|
||||
labelEn: Pusher App Cluster
|
||||
labelZh: Pusher 应用集群
|
||||
required: true
|
||||
type: text
|
||||
- default: "local"
|
||||
edit: true
|
||||
envKey: MIX_ENV
|
||||
labelEn: Mix Environment
|
||||
labelZh: Mix 环境
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_AUTHORIZE_URL
|
||||
labelEn: OpenID Authorize URL (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 授权 URL (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_TOKEN_URL
|
||||
labelEn: OpenID Token URL (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 令牌 URL (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_USERINFO_URL
|
||||
labelEn: OpenID Userinfo URL (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 用户信息 URL (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_CLIENT_ID
|
||||
labelEn: OpenID Client ID (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 客户端 ID (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_CLIENT_SECRET
|
||||
labelEn: OpenID Client Secret (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 客户端密钥 (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: GITHUB_CLIENT_ID
|
||||
labelEn: GitHub Client ID (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: GitHub 客户端 ID (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: GITHUB_CLIENT_SECRET
|
||||
labelEn: GitHub Client Secret (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: GitHub 客户端密钥 (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: password
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
services:
|
||||
2fauth:
|
||||
image: "2fauth/2fauth:5.5.2"
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- ${PANEL_APP_PORT_HTTP}:8000/tcp
|
||||
volumes:
|
||||
- ./data:/2fauth
|
||||
environment:
|
||||
- APP_NAME=${APP_NAME}
|
||||
- APP_ENV=${APP_ENV}
|
||||
- APP_TIMEZONE=${APP_TIMEZONE}
|
||||
- APP_DEBUG=${APP_DEBUG}
|
||||
- SITE_OWNER=${SITE_OWNER}
|
||||
- APP_KEY=${APP_KEY}
|
||||
- APP_URL=${APP_URL}
|
||||
- IS_DEMO_APP=${IS_DEMO_APP}
|
||||
- LOG_CHANNEL=${LOG_CHANNEL}
|
||||
- LOG_LEVEL=${LOG_LEVEL}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- CACHE_DRIVER=${CACHE_DRIVER}
|
||||
- SESSION_DRIVER=${SESSION_DRIVER}
|
||||
- MAIL_MAILER=${MAIL_MAILER}
|
||||
- MAIL_HOST=${MAIL_HOST}
|
||||
- MAIL_PORT=${MAIL_PORT}
|
||||
- MAIL_USERNAME=${MAIL_USERNAME}
|
||||
- MAIL_PASSWORD=${MAIL_PASSWORD}
|
||||
- MAIL_ENCRYPTION=${MAIL_ENCRYPTION}
|
||||
- MAIL_FROM_NAME=${MAIL_FROM_NAME}
|
||||
- MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS}
|
||||
- MAIL_VERIFY_SSL_PEER=${MAIL_VERIFY_SSL_PEER}
|
||||
- THROTTLE_API=${THROTTLE_API}
|
||||
- LOGIN_THROTTLE=${LOGIN_THROTTLE}
|
||||
- AUTHENTICATION_GUARD=${AUTHENTICATION_GUARD}
|
||||
- AUTHENTICATION_LOG_RETENTION=${AUTHENTICATION_LOG_RETENTION}
|
||||
- AUTH_PROXY_HEADER_FOR_USER=${AUTH_PROXY_HEADER_FOR_USER}
|
||||
- AUTH_PROXY_HEADER_FOR_EMAIL=${AUTH_PROXY_HEADER_FOR_EMAIL}
|
||||
- PROXY_LOGOUT_URL=${PROXY_LOGOUT_URL}
|
||||
- WEBAUTHN_NAME=${WEBAUTHN_NAME}
|
||||
- WEBAUTHN_ID=${WEBAUTHN_ID}
|
||||
- WEBAUTHN_USER_VERIFICATION=${WEBAUTHN_USER_VERIFICATION}
|
||||
- TRUSTED_PROXIES=${TRUSTED_PROXIES}
|
||||
- PROXY_FOR_OUTGOING_REQUESTS=${PROXY_FOR_OUTGOING_REQUESTS}
|
||||
- BROADCAST_DRIVER=${BROADCAST_DRIVER}
|
||||
- QUEUE_DRIVER=${QUEUE_DRIVER}
|
||||
- SESSION_LIFETIME=${SESSION_LIFETIME}
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- PUSHER_APP_ID=${PUSHER_APP_ID}
|
||||
- PUSHER_APP_KEY=${PUSHER_APP_KEY}
|
||||
- PUSHER_APP_SECRET=${PUSHER_APP_SECRET}
|
||||
- PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER}
|
||||
- VITE_PUSHER_APP_KEY=${PUSHER_APP_KEY}
|
||||
- VITE_PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER}
|
||||
- MIX_ENV=${MIX_ENV}
|
||||
# 删除以下行前的#号表示启用
|
||||
#- OPENID_AUTHORIZE_URL=${OPENID_AUTHORIZE_URL}
|
||||
#- OPENID_TOKEN_URL=${OPENID_TOKEN_URL}
|
||||
#- OPENID_USERINFO_URL=${OPENID_USERINFO_URL}
|
||||
#- OPENID_CLIENT_ID=${OPENID_CLIENT_ID}
|
||||
#- OPENID_CLIENT_SECRET=${OPENID_CLIENT_SECRET}
|
||||
#- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
|
||||
#- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
chown -R 1000:1000 data
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
# 2FAuth
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
管理双因素身份验证(2FA)账户并生成其安全代码的网络应用程序。
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: 2FAuth
|
||||
tags:
|
||||
- 安全
|
||||
title: 开源双因素认证管理器
|
||||
description: 开源双因素认证管理器
|
||||
additionalProperties:
|
||||
key: 2fauth
|
||||
name: 2FAuth
|
||||
tags:
|
||||
- Security
|
||||
shortDescZh: 开源双因素认证管理器
|
||||
shortDescEn: Open-source two-factor authentication manager
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://docs.2fauth.app
|
||||
github: https://github.com/Bubka/2FAuth
|
||||
document: https://docs.2fauth.app
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
APP_DEBUG="false"
|
||||
APP_ENV="local"
|
||||
APP_KEY="yuBiR9dlyokasPeguSPl8oPRLpHiqAbr"
|
||||
APP_NAME="2FAuth"
|
||||
APP_TIMEZONE="Asia/Shanghai"
|
||||
APP_URL="http://192.168.123.9:40273"
|
||||
AUTHENTICATION_GUARD="web-guard"
|
||||
AUTHENTICATION_LOG_RETENTION=365
|
||||
AUTH_PROXY_HEADER_FOR_EMAIL=""
|
||||
AUTH_PROXY_HEADER_FOR_USER=""
|
||||
BROADCAST_DRIVER="log"
|
||||
CACHE_DRIVER="file"
|
||||
CONTAINER_NAME="2fauth"
|
||||
DB_DATABASE="/srv/database/database.sqlite"
|
||||
GITHUB_CLIENT_ID=""
|
||||
GITHUB_CLIENT_SECRET=""
|
||||
IS_DEMO_APP="false"
|
||||
LOGIN_THROTTLE=5
|
||||
LOG_CHANNEL="daily"
|
||||
LOG_LEVEL="notice"
|
||||
MAIL_ENCRYPTION=""
|
||||
MAIL_FROM_ADDRESS=""
|
||||
MAIL_FROM_NAME=""
|
||||
MAIL_HOST=""
|
||||
MAIL_MAILER="log"
|
||||
MAIL_PASSWORD=""
|
||||
MAIL_PORT=""
|
||||
MAIL_USERNAME=""
|
||||
MAIL_VERIFY_SSL_PEER="true"
|
||||
MIX_ENV="local"
|
||||
OPENID_AUTHORIZE_URL=""
|
||||
OPENID_CLIENT_ID=""
|
||||
OPENID_CLIENT_SECRET=""
|
||||
OPENID_TOKEN_URL=""
|
||||
OPENID_USERINFO_URL=""
|
||||
PANEL_APP_PORT_HTTP=40273
|
||||
PANEL_REDIS_ROOT_PASSWORD="redis_password"
|
||||
PROXY_FOR_OUTGOING_REQUESTS=""
|
||||
PROXY_LOGOUT_URL=""
|
||||
PUSHER_APP_CLUSTER="mt1"
|
||||
PUSHER_APP_ID=""
|
||||
PUSHER_APP_KEY=""
|
||||
PUSHER_APP_SECRET=""
|
||||
QUEUE_DRIVER="sync"
|
||||
REDIS_HOST="redis"
|
||||
REDIS_PORT=6379
|
||||
SESSION_DRIVER="file"
|
||||
SESSION_LIFETIME=120
|
||||
SITE_OWNER="admin@localhost.com"
|
||||
THROTTLE_API=60
|
||||
TRUSTED_PROXIES=""
|
||||
WEBAUTHN_ID=""
|
||||
WEBAUTHN_NAME="2FAuth"
|
||||
WEBAUTHN_USER_VERIFICATION="preferred"
|
||||
|
|
@ -1,426 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: "40273"
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: "2FAuth"
|
||||
edit: true
|
||||
envKey: APP_NAME
|
||||
labelEn: App Name
|
||||
labelZh: 应用名
|
||||
required: true
|
||||
type: text
|
||||
- default: "local"
|
||||
edit: true
|
||||
envKey: APP_ENV
|
||||
labelEn: App Environment
|
||||
labelZh: 应用环境
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "local"
|
||||
value: "local"
|
||||
- label: "production"
|
||||
value: "production"
|
||||
- default: "Asia/Shanghai"
|
||||
edit: true
|
||||
envKey: APP_TIMEZONE
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
- default: "false"
|
||||
edit: true
|
||||
envKey: APP_DEBUG
|
||||
labelEn: Debug Mode
|
||||
labelZh: 调试模式
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "True"
|
||||
value: "true"
|
||||
- label: "False"
|
||||
value: "false"
|
||||
- default: "admin@localhost.com"
|
||||
edit: true
|
||||
envKey: SITE_OWNER
|
||||
labelEn: Site Owner
|
||||
labelZh: 站点拥有者
|
||||
required: true
|
||||
type: text
|
||||
- default: "yuBiR9dlyokasPeguSPl8oPRLpHiqAbr"
|
||||
edit: true
|
||||
envKey: APP_KEY
|
||||
labelEn: App Key (32 characters)
|
||||
labelZh: 应用密钥 (32 位字符)
|
||||
required: true
|
||||
type: text
|
||||
- default: "http://localhost:40273"
|
||||
edit: true
|
||||
envKey: APP_URL
|
||||
labelEn: App URL (External URL)
|
||||
labelZh: 应用网址 (外部访问地址)
|
||||
required: true
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: "false"
|
||||
edit: true
|
||||
envKey: IS_DEMO_APP
|
||||
labelEn: Demo Mode
|
||||
labelZh: 演示模式
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "True"
|
||||
value: "true"
|
||||
- label: "False"
|
||||
value: "false"
|
||||
- default: "daily"
|
||||
edit: true
|
||||
envKey: LOG_CHANNEL
|
||||
labelEn: Log Channel
|
||||
labelZh: 日志通道
|
||||
required: true
|
||||
type: text
|
||||
- default: "notice"
|
||||
edit: true
|
||||
envKey: LOG_LEVEL
|
||||
labelEn: Log Level
|
||||
labelZh: 日志级别
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "debug"
|
||||
value: "debug"
|
||||
- label: "info"
|
||||
value: "info"
|
||||
- label: "notice"
|
||||
value: "notice"
|
||||
- label: "warning"
|
||||
value: "warning"
|
||||
- label: "error"
|
||||
value: "error"
|
||||
- label: "critical"
|
||||
value: "critical"
|
||||
- label: "alert"
|
||||
value: "alert"
|
||||
- label: "emergency"
|
||||
value: "emergency"
|
||||
- default: "/srv/database/database.sqlite"
|
||||
disabled: true
|
||||
envKey: DB_DATABASE
|
||||
labelEn: Database Path
|
||||
labelZh: 数据库路径
|
||||
required: true
|
||||
type: text
|
||||
- default: "file"
|
||||
disabled: true
|
||||
envKey: CACHE_DRIVER
|
||||
labelEn: Cache Driver
|
||||
labelZh: 缓存驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "file"
|
||||
disabled: true
|
||||
envKey: SESSION_DRIVER
|
||||
labelEn: Session Driver
|
||||
labelZh: 会话驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "log"
|
||||
edit: true
|
||||
envKey: MAIL_MAILER
|
||||
labelEn: Mailer
|
||||
labelZh: 邮件发送方式
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_HOST
|
||||
labelEn: Mail Host
|
||||
labelZh: 邮件服务器
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_PORT
|
||||
labelEn: Mail Port
|
||||
labelZh: 邮件端口
|
||||
required: false
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_USERNAME
|
||||
labelEn: Mail Username
|
||||
labelZh: 邮件用户名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_PASSWORD
|
||||
labelEn: Mail Password
|
||||
labelZh: 邮件密码
|
||||
required: false
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_ENCRYPTION
|
||||
labelEn: Mail Encryption
|
||||
labelZh: 邮件加密方式
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_FROM_NAME
|
||||
labelEn: Mail From Name
|
||||
labelZh: 邮件发件人姓名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: MAIL_FROM_ADDRESS
|
||||
labelEn: Mail From Address
|
||||
labelZh: 邮件发件人地址
|
||||
required: false
|
||||
type: text
|
||||
- default: "true"
|
||||
edit: true
|
||||
envKey: MAIL_VERIFY_SSL_PEER
|
||||
labelEn: Mail Verify SSL Peer
|
||||
labelZh: 邮件验证 SSL 证书
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "True"
|
||||
value: "true"
|
||||
- label: "False"
|
||||
value: "false"
|
||||
- default: "60"
|
||||
edit: true
|
||||
envKey: THROTTLE_API
|
||||
labelEn: API Throttle
|
||||
labelZh: API 限制
|
||||
required: true
|
||||
type: number
|
||||
- default: "5"
|
||||
edit: true
|
||||
envKey: LOGIN_THROTTLE
|
||||
labelEn: Login Throttle
|
||||
labelZh: 登录限制
|
||||
required: true
|
||||
type: number
|
||||
- default: "web-guard"
|
||||
edit: true
|
||||
envKey: AUTHENTICATION_GUARD
|
||||
labelEn: Authentication Guard
|
||||
labelZh: 认证保护
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "web-guard"
|
||||
value: "web-guard"
|
||||
- label: "reverse-proxy-guard"
|
||||
value: "reverse-proxy-guard"
|
||||
- default: "365"
|
||||
edit: true
|
||||
envKey: AUTHENTICATION_LOG_RETENTION
|
||||
labelEn: Authentication Log Retention
|
||||
labelZh: 认证日志保留
|
||||
required: true
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: AUTH_PROXY_HEADER_FOR_USER
|
||||
labelEn: Authentication Proxy Header for User
|
||||
labelZh: 用户认证代理头
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: AUTH_PROXY_HEADER_FOR_EMAIL
|
||||
labelEn: Authentication Proxy Header for Email
|
||||
labelZh: 邮箱认证代理头
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PROXY_LOGOUT_URL
|
||||
labelEn: Proxy Logout URL
|
||||
labelZh: 代理注销网址
|
||||
required: false
|
||||
type: text
|
||||
- default: "2FAuth"
|
||||
edit: true
|
||||
envKey: WEBAUTHN_NAME
|
||||
labelEn: WebAuthn Name
|
||||
labelZh: WebAuthn 名称
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: WEBAUTHN_ID
|
||||
labelEn: WebAuthn ID
|
||||
labelZh: WebAuthn ID
|
||||
required: false
|
||||
type: text
|
||||
- default: "preferred"
|
||||
edit: true
|
||||
envKey: WEBAUTHN_USER_VERIFICATION
|
||||
labelEn: WebAuthn User Verification
|
||||
labelZh: WebAuthn 用户验证
|
||||
required: true
|
||||
type: select
|
||||
values:
|
||||
- label: "Preferred"
|
||||
value: "preferred"
|
||||
- label: "Required"
|
||||
value: "required"
|
||||
- label: "Discouraged"
|
||||
value: "discouraged"
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: TRUSTED_PROXIES
|
||||
labelEn: Trusted Proxies
|
||||
labelZh: 信任代理
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PROXY_FOR_OUTGOING_REQUESTS
|
||||
labelEn: Proxy for Outgoing Requests
|
||||
labelZh: 出站请求代理
|
||||
required: false
|
||||
type: text
|
||||
- default: "log"
|
||||
edit: true
|
||||
envKey: BROADCAST_DRIVER
|
||||
labelEn: Broadcast Driver
|
||||
labelZh: 广播驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "sync"
|
||||
edit: true
|
||||
envKey: QUEUE_DRIVER
|
||||
labelEn: Queue Driver
|
||||
labelZh: 队列驱动
|
||||
required: true
|
||||
type: text
|
||||
- default: "120"
|
||||
edit: true
|
||||
envKey: SESSION_LIFETIME
|
||||
labelEn: Session Lifetime
|
||||
labelZh: 会话有效期
|
||||
required: true
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_HOST
|
||||
key: redis
|
||||
labelEn: Redis Service
|
||||
labelZh: Redis服务
|
||||
required: true
|
||||
type: service
|
||||
- default: "6379"
|
||||
edit: true
|
||||
envKey: REDIS_PORT
|
||||
labelEn: Redis Service Port
|
||||
labelZh: Redis服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PANEL_REDIS_ROOT_PASSWORD
|
||||
labelEn: Redis Password
|
||||
labelZh: Redis 密码
|
||||
required: true
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PUSHER_APP_ID
|
||||
labelEn: Pusher App ID
|
||||
labelZh: Pusher 应用 ID
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PUSHER_APP_KEY
|
||||
labelEn: Pusher App Key
|
||||
labelZh: Pusher 应用密钥
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: PUSHER_APP_SECRET
|
||||
labelEn: Pusher App Secret
|
||||
labelZh: Pusher 应用密钥
|
||||
required: false
|
||||
type: password
|
||||
- default: "mt1"
|
||||
edit: true
|
||||
envKey: PUSHER_APP_CLUSTER
|
||||
labelEn: Pusher App Cluster
|
||||
labelZh: Pusher 应用集群
|
||||
required: true
|
||||
type: text
|
||||
- default: "local"
|
||||
edit: true
|
||||
envKey: MIX_ENV
|
||||
labelEn: Mix Environment
|
||||
labelZh: Mix 环境
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_AUTHORIZE_URL
|
||||
labelEn: OpenID Authorize URL (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 授权 URL (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_TOKEN_URL
|
||||
labelEn: OpenID Token URL (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 令牌 URL (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_USERINFO_URL
|
||||
labelEn: OpenID Userinfo URL (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 用户信息 URL (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_CLIENT_ID
|
||||
labelEn: OpenID Client ID (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 客户端 ID (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: OPENID_CLIENT_SECRET
|
||||
labelEn: OpenID Client Secret (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: OpenID 客户端密钥 (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: GITHUB_CLIENT_ID
|
||||
labelEn: GitHub Client ID (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: GitHub 客户端 ID (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: GITHUB_CLIENT_SECRET
|
||||
labelEn: GitHub Client Secret (Edit to remove comments in compose.yml to take effect)
|
||||
labelZh: GitHub 客户端密钥 (编辑去除compose.yml里的注释生效)
|
||||
required: false
|
||||
type: password
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
services:
|
||||
2fauth:
|
||||
image: "2fauth/2fauth:latest"
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- ${PANEL_APP_PORT_HTTP}:8000/tcp
|
||||
volumes:
|
||||
- ./data:/2fauth
|
||||
environment:
|
||||
- APP_NAME=${APP_NAME}
|
||||
- APP_ENV=${APP_ENV}
|
||||
- APP_TIMEZONE=${APP_TIMEZONE}
|
||||
- APP_DEBUG=${APP_DEBUG}
|
||||
- SITE_OWNER=${SITE_OWNER}
|
||||
- APP_KEY=${APP_KEY}
|
||||
- APP_URL=${APP_URL}
|
||||
- IS_DEMO_APP=${IS_DEMO_APP}
|
||||
- LOG_CHANNEL=${LOG_CHANNEL}
|
||||
- LOG_LEVEL=${LOG_LEVEL}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- CACHE_DRIVER=${CACHE_DRIVER}
|
||||
- SESSION_DRIVER=${SESSION_DRIVER}
|
||||
- MAIL_MAILER=${MAIL_MAILER}
|
||||
- MAIL_HOST=${MAIL_HOST}
|
||||
- MAIL_PORT=${MAIL_PORT}
|
||||
- MAIL_USERNAME=${MAIL_USERNAME}
|
||||
- MAIL_PASSWORD=${MAIL_PASSWORD}
|
||||
- MAIL_ENCRYPTION=${MAIL_ENCRYPTION}
|
||||
- MAIL_FROM_NAME=${MAIL_FROM_NAME}
|
||||
- MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS}
|
||||
- MAIL_VERIFY_SSL_PEER=${MAIL_VERIFY_SSL_PEER}
|
||||
- THROTTLE_API=${THROTTLE_API}
|
||||
- LOGIN_THROTTLE=${LOGIN_THROTTLE}
|
||||
- AUTHENTICATION_GUARD=${AUTHENTICATION_GUARD}
|
||||
- AUTHENTICATION_LOG_RETENTION=${AUTHENTICATION_LOG_RETENTION}
|
||||
- AUTH_PROXY_HEADER_FOR_USER=${AUTH_PROXY_HEADER_FOR_USER}
|
||||
- AUTH_PROXY_HEADER_FOR_EMAIL=${AUTH_PROXY_HEADER_FOR_EMAIL}
|
||||
- PROXY_LOGOUT_URL=${PROXY_LOGOUT_URL}
|
||||
- WEBAUTHN_NAME=${WEBAUTHN_NAME}
|
||||
- WEBAUTHN_ID=${WEBAUTHN_ID}
|
||||
- WEBAUTHN_USER_VERIFICATION=${WEBAUTHN_USER_VERIFICATION}
|
||||
- TRUSTED_PROXIES=${TRUSTED_PROXIES}
|
||||
- PROXY_FOR_OUTGOING_REQUESTS=${PROXY_FOR_OUTGOING_REQUESTS}
|
||||
- BROADCAST_DRIVER=${BROADCAST_DRIVER}
|
||||
- QUEUE_DRIVER=${QUEUE_DRIVER}
|
||||
- SESSION_LIFETIME=${SESSION_LIFETIME}
|
||||
- REDIS_HOST=${REDIS_HOST}
|
||||
- REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD}
|
||||
- REDIS_PORT=${REDIS_PORT}
|
||||
- PUSHER_APP_ID=${PUSHER_APP_ID}
|
||||
- PUSHER_APP_KEY=${PUSHER_APP_KEY}
|
||||
- PUSHER_APP_SECRET=${PUSHER_APP_SECRET}
|
||||
- PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER}
|
||||
- VITE_PUSHER_APP_KEY=${PUSHER_APP_KEY}
|
||||
- VITE_PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER}
|
||||
- MIX_ENV=${MIX_ENV}
|
||||
# 删除以下行前的#号表示启用
|
||||
#- OPENID_AUTHORIZE_URL=${OPENID_AUTHORIZE_URL}
|
||||
#- OPENID_TOKEN_URL=${OPENID_TOKEN_URL}
|
||||
#- OPENID_USERINFO_URL=${OPENID_USERINFO_URL}
|
||||
#- OPENID_CLIENT_ID=${OPENID_CLIENT_ID}
|
||||
#- OPENID_CLIENT_SECRET=${OPENID_CLIENT_SECRET}
|
||||
#- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
|
||||
#- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
chown -R 1000:1000 data
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
|
|
@ -1,58 +0,0 @@
|
|||
# 使用说明
|
||||
|
||||
这是个民间制作的`aaPanel`的`1Panel`商店版本应用;
|
||||
|
||||
- WebUI入口:`http://IP地址:面板端口/aapanel`
|
||||
- 默认账号:`aapanel`
|
||||
- 密码:`aapanel123`
|
||||
- 容器内root密码:`aapanel123`
|
||||
|
||||
> 容器内数据
|
||||
- 网站目录:`/www/wwwroot`
|
||||
- MySQL目录:`/www/server/data`
|
||||
- 域名数据:`/www/server/panel/vhost`
|
||||
|
||||
|
||||
> 原作者项目相关
|
||||
>> - https://hub.docker.com/r/aapanel/aapanel
|
||||
>> - https://github.com/aaPanel/aaPanel
|
||||
|
||||
|
||||
- 提示:为数据持久化运行,相关数据以存储卷方式存储。
|
||||
|
||||
|
||||
# 原项目介绍
|
||||
|
||||
* 宝塔面板的国际版
|
||||
* 在GitHub开源的版本
|
||||
|
||||
|
||||
# aaPanel Docker Deployment
|
||||
The docker image is officially released by aaPanel
|
||||
|
||||
Maintained by: [aaPanel](https://www.aapanel.com)
|
||||
|
||||
|
||||
|
||||
##How to use
|
||||
|
||||
`$docker run -d -p 8886:8888 -p 22:21 -p 443:443 -p 80:80 -p 889:888 -v ~/website_data:/www/wwwroot -v ~/mysql_data:/www/server/data -v ~/vhost:/www/server/panel/vhost aapanel/aapanel:lib`
|
||||
|
||||
Now you can access aaPanel at http://youripaddress:8886/ from your host system.
|
||||
|
||||
Default username:`aapanel`
|
||||
|
||||
Default password:`aapanel123`
|
||||
|
||||
####Port usage analysis
|
||||
Control Panel : 8888
|
||||
Phpmyadmin : 888
|
||||
|
||||
####Dir usage analysis
|
||||
Website data : /www/wwwroot
|
||||
Mysql data : /www/server/data
|
||||
Vhost file : /www/server/panel/vhost
|
||||
|
||||
**Note: after the deployment is complete, please immediately modify the user name and password in the panel settings and add the installation entry**
|
||||
|
||||
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: aaPanel
|
||||
tags:
|
||||
- 工具
|
||||
title: 宝塔面板国际版,开源的Linux面板
|
||||
description: 宝塔面板国际版,开源的Linux面板
|
||||
additionalProperties:
|
||||
key: aaPanel
|
||||
name: aaPanel
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: 宝塔面板国际版,开源的Linux面板
|
||||
shortDescEn: BT-Panel International Edition, the open source Linux panel
|
||||
type: tool
|
||||
crossVersionUpdate: false
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://www.aapanel.com/new/index.html
|
||||
github: https://github.com/aaPanel/aaPanel
|
||||
document: https://github.com/aaPanel/aaPanel
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
CONTAINER_NAME="aapanel"
|
||||
PANEL_APP_PORT_HTTP="7200"
|
||||
HTTP_PORT="10080"
|
||||
HTTPS_PORT="10443"
|
||||
PHPMYADMIN_PORT="10888"
|
||||
SSH_PORT="20022"
|
||||
FTP_PORT="20021"
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 7200
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Web Panel Port
|
||||
labelZh: 面板端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 10080
|
||||
edit: true
|
||||
envKey: HTTP_PORT
|
||||
labelEn: HTTP Port
|
||||
labelZh: HTTP端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 10443
|
||||
edit: true
|
||||
envKey: HTTPS_PORT
|
||||
labelEn: HTTPS Port
|
||||
labelZh: HTTPS端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 10888
|
||||
edit: true
|
||||
envKey: PHPMYADMIN_PORT
|
||||
labelEn: phpMyAdmin Port
|
||||
labelZh: phpMyAdmin端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20022
|
||||
edit: true
|
||||
envKey: SSH_PORT
|
||||
labelEn: SSH Port
|
||||
labelZh: 面板内SSH端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20021
|
||||
edit: true
|
||||
envKey: FTP_PORT
|
||||
labelEn: SSH Port
|
||||
labelZh: 面板内FTP端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
services:
|
||||
aapanel:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:7800"
|
||||
- "${HTTP_PORT}:80"
|
||||
- "${HTTPS_PORT}:443"
|
||||
- "${PHPMYADMIN_PORT}:888"
|
||||
- "${SSH_PORT}:22"
|
||||
- "${FTP_PORT}:21"
|
||||
volumes:
|
||||
- aapanel:/www
|
||||
image: "aapanel/aapanel:lib"
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
volumes:
|
||||
aapanel:
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
Before Width: | Height: | Size: 5.5 KiB |
|
|
@ -1,6 +0,0 @@
|
|||
CONTAINER_NAME="act_runner"
|
||||
DATA_PATH="./data"
|
||||
GITEA_INSTANCE_URL="http://1.2.3.4:567"
|
||||
RUNNER_REGISTRATION_TOKEN="xxx"
|
||||
RUNNER_NAME="xxx"
|
||||
RUNNER_LABELS="xxx"
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path
|
||||
labelZh: 数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: http://1.2.3.4:567
|
||||
edit: true
|
||||
envKey: GITEA_INSTANCE_URL
|
||||
labelEn: Gitea instance URL
|
||||
labelZh: Gitea 实例 URL
|
||||
required: true
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: ''
|
||||
edit: true
|
||||
envKey: RUNNER_REGISTRATION_TOKEN
|
||||
labelEn: Gitea runner REGISTRATION TOKEN
|
||||
labelZh: Gitea runner REGISTRATION TOKEN
|
||||
required: true
|
||||
type: text
|
||||
- default: ''
|
||||
edit: true
|
||||
envKey: RUNNER_NAME
|
||||
labelEn: Gitea runner name
|
||||
labelZh: Gitea runner name
|
||||
required: true
|
||||
type: text
|
||||
- default: ''
|
||||
edit: true
|
||||
envKey: RUNNER_LABELS
|
||||
labelEn: Gitea runner labels
|
||||
labelZh: Gitea runner labels
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
services:
|
||||
act_runner:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
volumes:
|
||||
#- ${DATA_PATH}/config.yaml:/config.yaml # 可选配置
|
||||
- ${DATA_PATH}/data:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
#- CONFIG_FILE=/config.yaml
|
||||
- GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}
|
||||
- GITEA_RUNNER_REGISTRATION_TOKEN=${RUNNER_REGISTRATION_TOKEN}
|
||||
- GITEA_RUNNER_NAME=${RUNNER_NAME}
|
||||
- GITEA_RUNNER_LABELS=${RUNNER_LABELS}
|
||||
image: gitea/act_runner:0.2.11
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# act runner
|
||||
|
||||
Act runner是一个基于[Gitea fork](https://gitea.com/gitea/act)的[Gitea](https://github.com/nektos/act)上的运行器。
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: Act runner
|
||||
tags:
|
||||
- DevOps
|
||||
title: Gitea Actions 的 Runner
|
||||
description: Gitea Actions 的 Runner
|
||||
additionalProperties:
|
||||
key: act_runner
|
||||
name: Act runner
|
||||
tags:
|
||||
- DevOps
|
||||
shortDescZh: Gitea Actions 的 Runner
|
||||
shortDescEn: A runner for Gitea based on Gitea fork of act
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://gitea.com/gitea/act_runner
|
||||
github: https://gitea.com/gitea/act_runner
|
||||
document: https://docs.gitea.com/next/usage/actions/act-runner
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
CONTAINER_NAME="act_runner"
|
||||
DATA_PATH="./data"
|
||||
GITEA_INSTANCE_URL="http://1.2.3.4:567"
|
||||
RUNNER_REGISTRATION_TOKEN="xxx"
|
||||
RUNNER_NAME="xxx"
|
||||
RUNNER_LABELS="xxx"
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path
|
||||
labelZh: 数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: http://1.2.3.4:567
|
||||
edit: true
|
||||
envKey: GITEA_INSTANCE_URL
|
||||
labelEn: Gitea instance URL
|
||||
labelZh: Gitea 实例 URL
|
||||
required: true
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: ''
|
||||
edit: true
|
||||
envKey: RUNNER_REGISTRATION_TOKEN
|
||||
labelEn: Gitea runner REGISTRATION TOKEN
|
||||
labelZh: Gitea runner REGISTRATION TOKEN
|
||||
required: true
|
||||
type: text
|
||||
- default: ''
|
||||
edit: true
|
||||
envKey: RUNNER_NAME
|
||||
labelEn: Gitea runner name
|
||||
labelZh: Gitea runner name
|
||||
required: true
|
||||
type: text
|
||||
- default: ''
|
||||
edit: true
|
||||
envKey: RUNNER_LABELS
|
||||
labelEn: Gitea runner labels
|
||||
labelZh: Gitea runner labels
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
services:
|
||||
act_runner:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
volumes:
|
||||
#- ${DATA_PATH}/config.yaml:/config.yaml # 可选配置
|
||||
- ${DATA_PATH}/data:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
#- CONFIG_FILE=/config.yaml
|
||||
- GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}
|
||||
- GITEA_RUNNER_REGISTRATION_TOKEN=${RUNNER_REGISTRATION_TOKEN}
|
||||
- GITEA_RUNNER_NAME=${RUNNER_NAME}
|
||||
- GITEA_RUNNER_LABELS=${RUNNER_LABELS}
|
||||
image: gitea/act_runner:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
Before Width: | Height: | Size: 6.9 KiB |
|
|
@ -1,13 +0,0 @@
|
|||
CONTAINER_NAME="adguardhome"
|
||||
PLAIN_DNS_PORT="20053"
|
||||
DHCP_PORT1="20067"
|
||||
DHCP_PORT2="20068"
|
||||
HTTP_PORT="23000"
|
||||
PANEL_APP_PORT_HTTP="23001"
|
||||
DOH_PORT="20443"
|
||||
DOT_PORT="853"
|
||||
QUIC_PORT1="20784"
|
||||
QUIC_PORT2="8853"
|
||||
DNS_CRYPT_PORT="5443"
|
||||
WORK_PATH="./data/work"
|
||||
CONFIG_PATH="./data/conf"
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 20053
|
||||
edit: true
|
||||
envKey: PLAIN_DNS_PORT
|
||||
labelEn: Plain DNS port
|
||||
labelZh: 普通DNS端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20067
|
||||
edit: true
|
||||
envKey: DHCP_PORT1
|
||||
labelEn: DHCP service port 1
|
||||
labelZh: DHCP服务端口1
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20068
|
||||
edit: true
|
||||
envKey: DHCP_PORT2
|
||||
labelEn: DHCP service port 2
|
||||
labelZh: DHCP服务端口2
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 23000
|
||||
edit: true
|
||||
envKey: HTTP_PORT
|
||||
labelEn: HTTP web port
|
||||
labelZh: HTTP网页端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 23001
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Initial setup web page port
|
||||
labelZh: 初始设置网页端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20443
|
||||
edit: true
|
||||
envKey: DOH_PORT
|
||||
labelEn: DOH service port
|
||||
labelZh: DOH服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 853
|
||||
edit: true
|
||||
envKey: DOT_PORT
|
||||
labelEn: DOT service port
|
||||
labelZh: DOT服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20784
|
||||
edit: true
|
||||
envKey: QUIC_PORT1
|
||||
labelEn: QUIC service port 1
|
||||
labelZh: QUIC服务端口1
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 8853
|
||||
edit: true
|
||||
envKey: QUIC_PORT2
|
||||
labelEn: QUIC service port 2
|
||||
labelZh: QUIC服务端口2
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 5443
|
||||
edit: true
|
||||
envKey: DNS_CRYPT_PORT
|
||||
labelEn: DNS Crypt service port
|
||||
labelZh: DNS Crypt服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data/work
|
||||
edit: true
|
||||
envKey: WORK_PATH
|
||||
labelEn: Work data folder path
|
||||
labelZh: 工作数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: ./data/conf
|
||||
edit: true
|
||||
envKey: CONFIG_PATH
|
||||
labelEn: Configuration folder path
|
||||
labelZh: 配置文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
services:
|
||||
adguardhome:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- ${PLAIN_DNS_PORT}:53/tcp
|
||||
- ${PLAIN_DNS_PORT}:53/udp
|
||||
- ${DHCP_PORT1}:67/udp
|
||||
- ${DHCP_PORT2}:68/udp
|
||||
- ${HTTP_PORT}:80/tcp
|
||||
- ${DOH_PORT}:443/tcp
|
||||
- ${DOH_PORT}:443/udp
|
||||
- ${PANEL_APP_PORT_HTTP}:3000/tcp
|
||||
- ${DOT_PORT}:853/tcp
|
||||
- ${QUIC_PORT1}:784/udp
|
||||
- ${DOT_PORT}:853/udp
|
||||
- ${QUIC_PORT2}:8853/udp
|
||||
- ${DNS_CRYPT_PORT}:5443/tcp
|
||||
- ${DNS_CRYPT_PORT}:5443/udp
|
||||
volumes:
|
||||
- ${WORK_PATH}:/opt/adguardhome/work
|
||||
- ${CONFIG_PATH}:/opt/adguardhome/conf
|
||||
image: adguard/adguardhome:v0.107.60
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,529 +0,0 @@
|
|||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="doc/adguard_home_darkmode.svg">
|
||||
<img alt="AdGuard Home" src="https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/doc/adguard_home_lightmode.svg" width="300px">
|
||||
</picture>
|
||||
</p>
|
||||
<h3 align="center">Privacy protection center for you and your devices</h3>
|
||||
<p align="center">
|
||||
Free and open source, powerful network-wide ads & trackers blocking DNS
|
||||
server.
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://adguard.com/">AdGuard.com</a> |
|
||||
<a href="https://github.com/AdguardTeam/AdGuardHome/wiki">Wiki</a> |
|
||||
<a href="https://reddit.com/r/Adguard">Reddit</a> |
|
||||
<a href="https://twitter.com/AdGuard">Twitter</a> |
|
||||
<a href="https://t.me/adguard_en">Telegram</a>
|
||||
<br/><br/>
|
||||
<a href="https://codecov.io/github/AdguardTeam/AdGuardHome?branch=master">
|
||||
<img src="https://img.shields.io/codecov/c/github/AdguardTeam/AdGuardHome/master.svg" alt="Code Coverage"/>
|
||||
</a>
|
||||
<a href="https://goreportcard.com/report/AdguardTeam/AdGuardHome">
|
||||
<img src="https://goreportcard.com/badge/github.com/AdguardTeam/AdGuardHome" alt="Go Report Card"/>
|
||||
</a>
|
||||
<a href="https://hub.docker.com/r/adguard/adguardhome">
|
||||
<img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/adguard/adguardhome.svg?maxAge=604800"/>
|
||||
</a>
|
||||
<br/>
|
||||
<a href="https://github.com/AdguardTeam/AdGuardHome/releases">
|
||||
<img src="https://img.shields.io/github/release/AdguardTeam/AdGuardHome/all.svg" alt="Latest release"/>
|
||||
</a>
|
||||
<a href="https://snapcraft.io/adguard-home">
|
||||
<img alt="adguard-home" src="https://snapcraft.io/adguard-home/badge.svg"/>
|
||||
</a>
|
||||
</p>
|
||||
<br/>
|
||||
<p align="center">
|
||||
<img src="https://cdn.adtidy.org/public/Adguard/Common/adguard_home.gif" width="800"/>
|
||||
</p>
|
||||
<hr/>
|
||||
|
||||
AdGuard Home is a network-wide software for blocking ads and tracking. After you
|
||||
set it up, it'll cover ALL your home devices, and you don't need any client-side
|
||||
software for that.
|
||||
|
||||
It operates as a DNS server that re-routes tracking domains to a “black hole”,
|
||||
thus preventing your devices from connecting to those servers. It's based on
|
||||
software we use for our public [AdGuard DNS] servers, and both share a lot of
|
||||
code.
|
||||
|
||||
[AdGuard DNS]: https://adguard-dns.io/
|
||||
|
||||
|
||||
|
||||
* [Getting Started](#getting-started)
|
||||
* [Automated install (Unix)](#automated-install-linux-and-mac)
|
||||
* [Alternative methods](#alternative-methods)
|
||||
* [Guides](#guides)
|
||||
* [API](#api)
|
||||
* [Comparing AdGuard Home to other solutions](#comparison)
|
||||
* [How is this different from public AdGuard DNS servers?](#comparison-adguard-dns)
|
||||
* [How does AdGuard Home compare to Pi-Hole](#comparison-pi-hole)
|
||||
* [How does AdGuard Home compare to traditional ad blockers](#comparison-adblock)
|
||||
* [Known limitations](#comparison-limitations)
|
||||
* [How to build from source](#how-to-build)
|
||||
* [Prerequisites](#prerequisites)
|
||||
* [Building](#building)
|
||||
* [Contributing](#contributing)
|
||||
* [Test unstable versions](#test-unstable-versions)
|
||||
* [Reporting issues](#reporting-issues)
|
||||
* [Help with translations](#translate)
|
||||
* [Other](#help-other)
|
||||
* [Projects that use AdGuard Home](#uses)
|
||||
* [Acknowledgments](#acknowledgments)
|
||||
* [Privacy](#privacy)
|
||||
|
||||
|
||||
|
||||
## <a href="#getting-started" id="getting-started" name="getting-started">Getting Started</a>
|
||||
|
||||
### <a href="#automated-install-linux-and-mac" id="automated-install-linux-and-mac" name="automated-install-linux-and-mac">Automated install (Unix)</a>
|
||||
|
||||
To install with `curl` run the following command:
|
||||
|
||||
```sh
|
||||
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
|
||||
```
|
||||
|
||||
To install with `wget` run the following command:
|
||||
|
||||
```sh
|
||||
wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
|
||||
```
|
||||
|
||||
To install with `fetch` run the following command:
|
||||
|
||||
```sh
|
||||
fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
|
||||
```
|
||||
|
||||
The script also accepts some options:
|
||||
|
||||
* `-c <channel>` to use specified channel;
|
||||
* `-r` to reinstall AdGuard Home;
|
||||
* `-u` to uninstall AdGuard Home;
|
||||
* `-v` for verbose output.
|
||||
|
||||
Note that options `-r` and `-u` are mutually exclusive.
|
||||
|
||||
|
||||
|
||||
### <a href="#alternative-methods" id="alternative-methods" name="alternative-methods">Alternative methods</a>
|
||||
|
||||
#### <a href="#manual-installation" id="manual-installation" name="manual-installation">Manual installation</a>
|
||||
|
||||
Please read the **[Getting Started][wiki-start]** article on our Wiki to learn
|
||||
how to install AdGuard Home manually, and how to configure your devices to use
|
||||
it.
|
||||
|
||||
#### <a href="#docker" id="docker" name="docker">Docker</a>
|
||||
|
||||
You can use our official Docker image on [Docker Hub].
|
||||
|
||||
#### <a href="#snap-store" id="snap-store" name="snap-store">Snap Store</a>
|
||||
|
||||
If you're running **Linux,** there's a secure and easy way to install AdGuard
|
||||
Home: get it from the [Snap Store].
|
||||
|
||||
[Docker Hub]: https://hub.docker.com/r/adguard/adguardhome
|
||||
[Snap Store]: https://snapcraft.io/adguard-home
|
||||
[wiki-start]: https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started
|
||||
|
||||
|
||||
|
||||
### <a href="#guides" id="guides" name="guides">Guides</a>
|
||||
|
||||
See our [Wiki][wiki].
|
||||
|
||||
[wiki]: https://github.com/AdguardTeam/AdGuardHome/wiki
|
||||
|
||||
|
||||
|
||||
### <a href="#api" id="api" name="api">API</a>
|
||||
|
||||
If you want to integrate with AdGuard Home, you can use our [REST API][openapi].
|
||||
Alternatively, you can use this [python client][pyclient], which is used to
|
||||
build the [AdGuard Home Hass.io Add-on][hassio].
|
||||
|
||||
[hassio]: https://www.home-assistant.io/integrations/adguard/
|
||||
[openapi]: https://github.com/AdguardTeam/AdGuardHome/tree/master/openapi
|
||||
[pyclient]: https://pypi.org/project/adguardhome/
|
||||
|
||||
|
||||
|
||||
## <a href="#comparison" id="comparison" name="comparison">Comparing AdGuard Home to other solutions</a>
|
||||
|
||||
### <a href="#comparison-adguard-dns" id="comparison-adguard-dns" name="comparison-adguard-dns">How is this different from public AdGuard DNS servers?</a>
|
||||
|
||||
Running your own AdGuard Home server allows you to do much more than using a
|
||||
public DNS server. It's a completely different level. See for yourself:
|
||||
|
||||
* Choose what exactly the server blocks and permits.
|
||||
|
||||
* Monitor your network activity.
|
||||
|
||||
* Add your own custom filtering rules.
|
||||
|
||||
* **Most importantly, it's your own server, and you are the only one who's in
|
||||
control.**
|
||||
|
||||
|
||||
|
||||
### <a href="#comparison-pi-hole" id="comparison-pi-hole" name="comparison-pi-hole">How does AdGuard Home compare to Pi-Hole</a>
|
||||
|
||||
At this point, AdGuard Home has a lot in common with Pi-Hole. Both block ads
|
||||
and trackers using the so-called “DNS sinkholing” method and both allow
|
||||
customizing what's blocked.
|
||||
|
||||
<aside>
|
||||
We're not going to stop here. DNS sinkholing is not a bad starting point, but
|
||||
this is just the beginning.
|
||||
</aside>
|
||||
|
||||
AdGuard Home provides a lot of features out-of-the-box with no need to install
|
||||
and configure additional software. We want it to be simple to the point when
|
||||
even casual users can set it up with minimal effort.
|
||||
|
||||
**Disclaimer:** some of the listed features can be added to Pi-Hole by
|
||||
installing additional software or by manually using SSH terminal and
|
||||
reconfiguring one of the utilities Pi-Hole consists of. However, in our
|
||||
opinion, this cannot be legitimately counted as a Pi-Hole's feature.
|
||||
|
||||
| Feature | AdGuard Home | Pi-Hole |
|
||||
|-------------------------------------------------------------------------|-------------------|-----------------------------------------------------------|
|
||||
| Blocking ads and trackers | ✅ | ✅ |
|
||||
| Customizing blocklists | ✅ | ✅ |
|
||||
| Built-in DHCP server | ✅ | ✅ |
|
||||
| HTTPS for the Admin interface | ✅ | Kind of, but you'll need to manually configure lighttpd |
|
||||
| Encrypted DNS upstream servers (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) | ✅ | ❌ (requires additional software) |
|
||||
| Cross-platform | ✅ | ❌ (not natively, only via Docker) |
|
||||
| Running as a DNS-over-HTTPS or DNS-over-TLS server | ✅ | ❌ (requires additional software) |
|
||||
| Blocking phishing and malware domains | ✅ | ❌ (requires non-default blocklists) |
|
||||
| Parental control (blocking adult domains) | ✅ | ❌ |
|
||||
| Force Safe search on search engines | ✅ | ❌ |
|
||||
| Per-client (device) configuration | ✅ | ✅ |
|
||||
| Access settings (choose who can use AGH DNS) | ✅ | ❌ |
|
||||
| Running [without root privileges][wiki-noroot] | ✅ | ❌ |
|
||||
|
||||
[wiki-noroot]: https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#running-without-superuser
|
||||
|
||||
|
||||
|
||||
### <a href="#comparison-adblock" id="comparison-adblock" name="comparison-adblock">How does AdGuard Home compare to traditional ad blockers</a>
|
||||
|
||||
It depends.
|
||||
|
||||
DNS sinkholing is capable of blocking a big percentage of ads, but it lacks
|
||||
the flexibility and the power of traditional ad blockers. You can get a good
|
||||
impression about the difference between these methods by reading [this
|
||||
article][blog-adaway], which compares AdGuard for Android (a traditional ad
|
||||
blocker) to hosts-level ad blockers (which are almost identical to DNS-based
|
||||
blockers in their capabilities). This level of protection is enough for some
|
||||
users.
|
||||
|
||||
Additionally, using a DNS-based blocker can help to block ads, tracking and
|
||||
analytics requests on other types of devices, such as SmartTVs, smart speakers
|
||||
or other kinds of IoT devices (on which you can't install traditional ad
|
||||
blockers).
|
||||
|
||||
|
||||
|
||||
### <a href="#comparison-limitations" id="comparison-limitations" name="comparison-limitations">Known limitations</a>
|
||||
|
||||
Here are some examples of what cannot be blocked by a DNS-level blocker:
|
||||
|
||||
* YouTube, Twitch ads;
|
||||
|
||||
* Facebook, Twitter, Instagram sponsored posts.
|
||||
|
||||
Essentially, any advertising that shares a domain with content cannot be blocked
|
||||
by a DNS-level blocker.
|
||||
|
||||
Is there a chance to handle this in the future? DNS will never be enough to do
|
||||
this. Our only option is to use a content blocking proxy like what we do in the
|
||||
standalone AdGuard applications. We're [going to bring][issue-1228] this
|
||||
feature support to AdGuard Home in the future. Unfortunately, even in this
|
||||
case, there still will be cases when this won't be enough or would require quite
|
||||
a complicated configuration.
|
||||
|
||||
[blog-adaway]: https://adguard.com/blog/adguard-vs-adaway-dns66.html
|
||||
[issue-1228]: https://github.com/AdguardTeam/AdGuardHome/issues/1228
|
||||
|
||||
|
||||
|
||||
## <a href="#how-to-build" id="how-to-build" name="how-to-build">How to build from source</a>
|
||||
|
||||
### <a href="#prerequisites" id="prerequisites" name="prerequisites">Prerequisites</a>
|
||||
|
||||
Run `make init` to prepare the development environment.
|
||||
|
||||
You will need this to build AdGuard Home:
|
||||
|
||||
* [Go](https://golang.org/dl/) v1.19 or later;
|
||||
* [Node.js](https://nodejs.org/en/download/) v10.16.2 or later;
|
||||
* [npm](https://www.npmjs.com/) v6.14 or later;
|
||||
* [yarn](https://yarnpkg.com/) v1.22.5 or later.
|
||||
|
||||
|
||||
|
||||
### <a href="#building" id="building" name="building">Building</a>
|
||||
|
||||
Open your terminal and execute these commands:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/AdguardTeam/AdGuardHome
|
||||
cd AdGuardHome
|
||||
make
|
||||
```
|
||||
|
||||
**NOTE:** The non-standard `-j` flag is currently not supported, so building
|
||||
with `make -j 4` or setting your `MAKEFLAGS` to include, for example, `-j 4` is
|
||||
likely to break the build. If you do have your `MAKEFLAGS` set to that, and you
|
||||
don't want to change it, you can override it by running `make -j 1`.
|
||||
|
||||
Check the [`Makefile`][src-makefile] to learn about other commands.
|
||||
|
||||
#### <a href="#building-cross" id="building-cross" name="building-cross">Building for a different platform</a>
|
||||
|
||||
You can build AdGuard Home for any OS/ARCH that Go supports. In order to do
|
||||
this, specify `GOOS` and `GOARCH` environment variables as macros when running
|
||||
`make`.
|
||||
|
||||
For example:
|
||||
|
||||
```sh
|
||||
env GOOS='linux' GOARCH='arm64' make
|
||||
```
|
||||
|
||||
or:
|
||||
|
||||
```sh
|
||||
make GOOS='linux' GOARCH='arm64'
|
||||
```
|
||||
|
||||
#### <a href="#preparing-releases" id="preparing-releases" name="preparing-releases">Preparing releases</a>
|
||||
|
||||
You'll need [`snapcraft`] to prepare a release build. Once installed, run the
|
||||
following command:
|
||||
|
||||
```sh
|
||||
make build-release CHANNEL='...' VERSION='...'
|
||||
```
|
||||
|
||||
See the [`build-release` target documentation][targ-release].
|
||||
|
||||
#### <a href="#docker-image" id="docker-image" name="docker-image">Docker image</a>
|
||||
|
||||
Run `make build-docker` to build the Docker image locally (the one that we
|
||||
publish to DockerHub). Please note, that we're using [Docker Buildx][buildx] to
|
||||
build our official image.
|
||||
|
||||
You may need to prepare before using these builds:
|
||||
|
||||
* (Linux-only) Install Qemu:
|
||||
|
||||
```sh
|
||||
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes
|
||||
```
|
||||
|
||||
* Prepare the builder:
|
||||
|
||||
```sh
|
||||
docker buildx create --name buildx-builder --driver docker-container --use
|
||||
```
|
||||
|
||||
See the [`build-docker` target documentation][targ-docker].
|
||||
|
||||
#### <a href="#debugging-the-frontend" id="debugging-the-frontend" name="debugging-the-frontend">Debugging the frontend</a>
|
||||
|
||||
When you need to debug the frontend without recompiling the production version
|
||||
every time, for example to check how your labels would look on a form, you can
|
||||
run the frontend build a development environment.
|
||||
|
||||
1. In a separate terminal, run:
|
||||
|
||||
```sh
|
||||
( cd ./client/ && env NODE_ENV='development' npm run watch )
|
||||
```
|
||||
|
||||
2. Run your `AdGuardHome` binary with the `--local-frontend` flag, which
|
||||
instructs AdGuard Home to ignore the built-in frontend files and use those
|
||||
from the `./build/` directory.
|
||||
|
||||
3. Now any changes you make in the `./client/` directory should be recompiled
|
||||
and become available on the web UI. Make sure that you disable the browser
|
||||
cache to make sure that you actually get the recompiled version.
|
||||
|
||||
[`snapcraft`]: https://snapcraft.io/
|
||||
[buildx]: https://docs.docker.com/buildx/working-with-buildx/
|
||||
[src-makefile]: https://github.com/AdguardTeam/AdGuardHome/blob/master/Makefile
|
||||
[targ-docker]: https://github.com/AdguardTeam/AdGuardHome/tree/master/scripts#build-dockersh-build-a-multi-architecture-docker-image
|
||||
[targ-release]: https://github.com/AdguardTeam/AdGuardHome/tree/master/scripts#build-releasesh-build-a-release-for-all-platforms
|
||||
|
||||
|
||||
|
||||
## <a href="#contributing" id="contributing" name="contributing">Contributing</a>
|
||||
|
||||
You are welcome to fork this repository, make your changes and [submit a pull
|
||||
request][pr]. Please make sure you follow our [code guidelines][guide] though.
|
||||
|
||||
Please note that we don't expect people to contribute to both UI and backend
|
||||
parts of the program simultaneously. Ideally, the backend part is implemented
|
||||
first, i.e. configuration, API, and the functionality itself. The UI part can
|
||||
be implemented later in a different pull request by a different person.
|
||||
|
||||
[guide]: https://github.com/AdguardTeam/CodeGuidelines/
|
||||
[pr]: https://github.com/AdguardTeam/AdGuardHome/pulls
|
||||
|
||||
|
||||
|
||||
### <a href="#test-unstable-versions" id="test-unstable-versions" name="test-unstable-versions">Test unstable versions</a>
|
||||
|
||||
There are two update channels that you can use:
|
||||
|
||||
* `beta`: beta versions of AdGuard Home. More or less stable versions,
|
||||
usually released every two weeks or more often.
|
||||
|
||||
* `edge`: the newest version of AdGuard Home from the development branch. New
|
||||
updates are pushed to this channel daily.
|
||||
|
||||
There are three options how you can install an unstable version:
|
||||
|
||||
1. [Snap Store]: look for the `beta` and `edge` channels.
|
||||
|
||||
2. [Docker Hub]: look for the `beta` and `edge` tags.
|
||||
|
||||
3. Standalone builds. Use the automated installation script or look for the
|
||||
available builds [on the Wiki][wiki-platf].
|
||||
|
||||
Script to install a beta version:
|
||||
|
||||
```sh
|
||||
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c beta
|
||||
```
|
||||
|
||||
Script to install an edge version:
|
||||
|
||||
```sh
|
||||
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c edge
|
||||
```
|
||||
[wiki-platf]: https://github.com/AdguardTeam/AdGuardHome/wiki/Platforms
|
||||
|
||||
|
||||
|
||||
### <a href="#reporting-issues" id="reporting-issues" name="reporting-issues">Report issues</a>
|
||||
|
||||
If you run into any problem or have a suggestion, head to [this page][iss] and
|
||||
click on the “New issue” button.
|
||||
|
||||
[iss]: https://github.com/AdguardTeam/AdGuardHome/issues
|
||||
|
||||
|
||||
|
||||
### <a href="#translate" id="translate" name="translate">Help with translations</a>
|
||||
|
||||
If you want to help with AdGuard Home translations, please learn more about
|
||||
translating AdGuard products [in our Knowledge Base][kb-trans]. You can
|
||||
contribute to the [AdGuardHome project on CrowdIn][crowdin].
|
||||
|
||||
[crowdin]: https://crowdin.com/project/adguard-applications/en#/adguard-home
|
||||
[kb-trans]: https://kb.adguard.com/en/general/adguard-translations
|
||||
|
||||
|
||||
|
||||
### <a href="#help-other" id="help-other" name="help-other">Other</a>
|
||||
|
||||
Another way you can contribute is by [looking for issues][iss-help] marked as
|
||||
`help wanted`, asking if the issue is up for grabs, and sending a PR fixing the
|
||||
bug or implementing the feature.
|
||||
|
||||
[iss-help]: https://github.com/AdguardTeam/AdGuardHome/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
|
||||
|
||||
|
||||
|
||||
## <a href="#uses" id="uses" name="uses">Projects that use AdGuard Home</a>
|
||||
|
||||
<!--
|
||||
TODO(a.garipov): Use reference links.
|
||||
-->
|
||||
|
||||
* [AdGuard Home Remote](https://apps.apple.com/app/apple-store/id1543143740):
|
||||
iOS app by [Joost](https://rocketscience-it.nl/).
|
||||
|
||||
* [Python library](https://github.com/frenck/python-adguardhome) by
|
||||
[@frenck](https://github.com/frenck).
|
||||
|
||||
* [Home Assistant add-on](https://github.com/hassio-addons/addon-adguard-home)
|
||||
by [@frenck](https://github.com/frenck).
|
||||
|
||||
* [OpenWrt LUCI app](https://github.com/kongfl888/luci-app-adguardhome) by
|
||||
[@kongfl888](https://github.com/kongfl888) (originally by
|
||||
[@rufengsuixing](https://github.com/rufengsuixing)).
|
||||
|
||||
* [Prometheus exporter for AdGuard
|
||||
Home](https://github.com/ebrianne/adguard-exporter) by
|
||||
[@ebrianne](https://github.com/ebrianne).
|
||||
|
||||
* [Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home
|
||||
instance](https://github.com/Lissy93/AdGuardian-Term) by
|
||||
[@Lissy93](https://github.com/Lissy93)
|
||||
|
||||
* [AdGuard Home on GLInet
|
||||
routers](https://forum.gl-inet.com/t/adguardhome-on-gl-routers/10664) by
|
||||
[Gl-Inet](https://gl-inet.com/).
|
||||
|
||||
* [Cloudron app](https://git.cloudron.io/cloudron/adguard-home-app) by
|
||||
[@gramakri](https://github.com/gramakri).
|
||||
|
||||
* [Asuswrt-Merlin-AdGuardHome-Installer](https://github.com/jumpsmm7/Asuswrt-Merlin-AdGuardHome-Installer)
|
||||
by [@jumpsmm7](https://github.com/jumpsmm7) aka
|
||||
[@SomeWhereOverTheRainBow](https://www.snbforums.com/members/somewhereovertherainbow.64179/).
|
||||
|
||||
* [Node.js library](https://github.com/Andrea055/AdguardHomeAPI) by
|
||||
[@Andrea055](https://github.com/Andrea055/).
|
||||
|
||||
|
||||
|
||||
## <a href="#acknowledgments" id="acknowledgments" name="acknowledgments">Acknowledgments</a>
|
||||
|
||||
<!--
|
||||
TODO(a.garipov): Use reference links.
|
||||
-->
|
||||
|
||||
This software wouldn't have been possible without:
|
||||
|
||||
* [Go](https://golang.org/dl/) and its libraries:
|
||||
* [gcache](https://github.com/bluele/gcache)
|
||||
* [miekg's dns](https://github.com/miekg/dns)
|
||||
* [go-yaml](https://github.com/go-yaml/yaml)
|
||||
* [service](https://godoc.org/github.com/kardianos/service)
|
||||
* [dnsproxy](https://github.com/AdguardTeam/dnsproxy)
|
||||
* [urlfilter](https://github.com/AdguardTeam/urlfilter)
|
||||
* [Node.js](https://nodejs.org/) and its libraries:
|
||||
* And many more Node.js packages.
|
||||
* [React.js](https://reactjs.org)
|
||||
* [Tabler](https://github.com/tabler/tabler)
|
||||
* [whotracks.me data](https://github.com/cliqz-oss/whotracks.me)
|
||||
|
||||
You might have seen that [CoreDNS] was mentioned here before, but we've stopped
|
||||
using it in AdGuard Home.
|
||||
|
||||
For the full list of all Node.js packages in use, please take a look at
|
||||
[`client/package.json`][src-packagejson] file.
|
||||
|
||||
[CoreDNS]: https://coredns.io
|
||||
[src-packagejson]: https://github.com/AdguardTeam/AdGuardHome/blob/master/client/package.json
|
||||
|
||||
|
||||
|
||||
## <a href="#privacy" id="privacy" name="privacy">Privacy</a>
|
||||
|
||||
Our main idea is that you are the one, who should be in control of your data.
|
||||
So it is only natural, that AdGuard Home does not collect any usage statistics,
|
||||
and does not use any web services unless you configure it to do so. See also
|
||||
the [full privacy policy][privacy] with every bit that *could in theory be sent*
|
||||
by AdGuard Home is available.
|
||||
|
||||
[privacy]: https://adguard.com/en/privacy/home.html
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: AdGuardHome
|
||||
tags:
|
||||
- 安全
|
||||
title: 自由且开源的,功能强大的网络广告和跟踪器屏蔽DNS服务器
|
||||
description: 自由且开源的,功能强大的网络广告和跟踪器屏蔽DNS服务器
|
||||
additionalProperties:
|
||||
key: adguardhome
|
||||
name: AdGuardHome
|
||||
tags:
|
||||
- Security
|
||||
shortDescZh: 自由且开源的,功能强大的网络广告和跟踪器屏蔽DNS服务器
|
||||
shortDescEn: Free and open source, powerful network-wide ads & trackers blocking DNS server
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://hub.docker.com/r/adguard/adguardhome
|
||||
github: https://github.com/AdguardTeam/AdGuardHome
|
||||
document: https://github.com/AdguardTeam/AdGuardHome/wiki
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
CONTAINER_NAME="adguardhome"
|
||||
PLAIN_DNS_PORT="20053"
|
||||
DHCP_PORT1="20067"
|
||||
DHCP_PORT2="20068"
|
||||
HTTP_PORT="23000"
|
||||
PANEL_APP_PORT_HTTP="23001"
|
||||
DOH_PORT="20443"
|
||||
DOT_PORT="853"
|
||||
QUIC_PORT1="20784"
|
||||
QUIC_PORT2="8853"
|
||||
DNS_CRYPT_PORT="5443"
|
||||
WORK_PATH="./data/work"
|
||||
CONFIG_PATH="./data/conf"
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 20053
|
||||
edit: true
|
||||
envKey: PLAIN_DNS_PORT
|
||||
labelEn: Plain DNS port
|
||||
labelZh: 普通DNS端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20067
|
||||
edit: true
|
||||
envKey: DHCP_PORT1
|
||||
labelEn: DHCP service port 1
|
||||
labelZh: DHCP服务端口1
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20068
|
||||
edit: true
|
||||
envKey: DHCP_PORT2
|
||||
labelEn: DHCP service port 2
|
||||
labelZh: DHCP服务端口2
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 23000
|
||||
edit: true
|
||||
envKey: HTTP_PORT
|
||||
labelEn: HTTP web port
|
||||
labelZh: HTTP网页端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 23001
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Initial setup web page port
|
||||
labelZh: 初始设置网页端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20443
|
||||
edit: true
|
||||
envKey: DOH_PORT
|
||||
labelEn: DOH service port
|
||||
labelZh: DOH服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 853
|
||||
edit: true
|
||||
envKey: DOT_PORT
|
||||
labelEn: DOT service port
|
||||
labelZh: DOT服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 20784
|
||||
edit: true
|
||||
envKey: QUIC_PORT1
|
||||
labelEn: QUIC service port 1
|
||||
labelZh: QUIC服务端口1
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 8853
|
||||
edit: true
|
||||
envKey: QUIC_PORT2
|
||||
labelEn: QUIC service port 2
|
||||
labelZh: QUIC服务端口2
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 5443
|
||||
edit: true
|
||||
envKey: DNS_CRYPT_PORT
|
||||
labelEn: DNS Crypt service port
|
||||
labelZh: DNS Crypt服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data/work
|
||||
edit: true
|
||||
envKey: WORK_PATH
|
||||
labelEn: Work data folder path
|
||||
labelZh: 工作数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: ./data/conf
|
||||
edit: true
|
||||
envKey: CONFIG_PATH
|
||||
labelEn: Configuration folder path
|
||||
labelZh: 配置文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
services:
|
||||
adguardhome:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- ${PLAIN_DNS_PORT}:53/tcp
|
||||
- ${PLAIN_DNS_PORT}:53/udp
|
||||
- ${DHCP_PORT1}:67/udp
|
||||
- ${DHCP_PORT2}:68/udp
|
||||
- ${HTTP_PORT}:80/tcp
|
||||
- ${DOH_PORT}:443/tcp
|
||||
- ${DOH_PORT}:443/udp
|
||||
- ${PANEL_APP_PORT_HTTP}:3000/tcp
|
||||
- ${DOT_PORT}:853/tcp
|
||||
- ${QUIC_PORT1}:784/udp
|
||||
- ${DOT_PORT}:853/udp
|
||||
- ${QUIC_PORT2}:8853/udp
|
||||
- ${DNS_CRYPT_PORT}:5443/tcp
|
||||
- ${DNS_CRYPT_PORT}:5443/udp
|
||||
volumes:
|
||||
- ${WORK_PATH}:/opt/adguardhome/work
|
||||
- ${CONFIG_PATH}:/opt/adguardhome/conf
|
||||
image: adguard/adguardhome:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
Before Width: | Height: | Size: 6.2 KiB |
|
|
@ -1,22 +0,0 @@
|
|||
AIS_DB_PORT="3306"
|
||||
AIS_PLATFORM="mysql"
|
||||
ALI_ACCESS_ID=""
|
||||
ALI_ACCESS_SECRET=""
|
||||
ALI_SMS_PERMIT=""
|
||||
ALI_SMS_SIGN=""
|
||||
ALI_SMS_TEMPLATE=""
|
||||
CONTAINER_NAME="ais-ninja"
|
||||
EMAIL_SENDER=""
|
||||
GOOGLE_CLIENT_ID=""
|
||||
PANEL_APP_PORT_HTTP="40043"
|
||||
PANEL_DB_HOST="mysql"
|
||||
PANEL_DB_NAME="ais-ninja_Nk3BFS"
|
||||
PANEL_DB_USER="ais-ninja_XpfeJ6"
|
||||
PANEL_DB_USER_PASSWORD="ais-ninja_ZECQzW"
|
||||
REDIS_HOST="redis"
|
||||
REDIS_PASS="REDIS_PASSWORD"
|
||||
REDIS_PORT=6379
|
||||
SMTP_HOST=""
|
||||
SMTP_PASSWORD=""
|
||||
SMTP_PORT="587"
|
||||
SMTP_USER=""
|
||||
|
|
@ -1,163 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- child:
|
||||
default: ""
|
||||
envKey: PANEL_DB_HOST
|
||||
labelEn: Database Service
|
||||
labelZh: 数据库服务
|
||||
required: true
|
||||
type: service
|
||||
default: mysql
|
||||
envKey: AIS_PLATFORM
|
||||
labelEn: Database Service
|
||||
labelZh: 数据库服务
|
||||
params:
|
||||
- envKey: AIS_DB_PORT
|
||||
key: mysql
|
||||
type: param
|
||||
value: "3306"
|
||||
- envKey: AIS_DB_PORT
|
||||
key: postgresql
|
||||
type: param
|
||||
value: "5432"
|
||||
required: true
|
||||
type: apps
|
||||
values:
|
||||
- label: MySQL
|
||||
value: mysql
|
||||
- default: ais-ninja
|
||||
envKey: PANEL_DB_NAME
|
||||
labelEn: Database
|
||||
labelZh: 数据库名
|
||||
random: true
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: ais-ninja
|
||||
envKey: PANEL_DB_USER
|
||||
labelEn: User
|
||||
labelZh: 数据库用户
|
||||
random: true
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: ais-ninja
|
||||
envKey: PANEL_DB_USER_PASSWORD
|
||||
labelEn: Password
|
||||
labelZh: 数据库用户密码
|
||||
random: true
|
||||
required: true
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_HOST
|
||||
key: redis
|
||||
labelEn: Redis Service
|
||||
labelZh: Redis服务
|
||||
required: true
|
||||
type: service
|
||||
- default: "6379"
|
||||
edit: true
|
||||
envKey: REDIS_PORT
|
||||
labelEn: Redis Service Port
|
||||
labelZh: Redis服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_PASS
|
||||
labelEn: Redis Service Password
|
||||
labelZh: Redis服务密码
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: password
|
||||
- default: 40043
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SMTP_HOST
|
||||
labelEn: SMTP HOST
|
||||
labelZh: SMTP 主机
|
||||
required: false
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: "587"
|
||||
edit: true
|
||||
envKey: SMTP_PORT
|
||||
labelEn: SMTP Port
|
||||
labelZh: SMTP 端口
|
||||
required: false
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: EMAIL_SENDER
|
||||
labelEn: Email service sender email address
|
||||
labelZh: 邮箱服务发送方邮箱地址
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SMTP_USER
|
||||
labelEn: Email service user name
|
||||
labelZh: 邮箱服务用户名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SMTP_PASSWORD
|
||||
labelEn: Email service password
|
||||
labelZh: 邮箱服务密码
|
||||
required: false
|
||||
rule: paramCommon
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: GOOGLE_CLIENT_ID
|
||||
labelEn: Google login client_id
|
||||
labelZh: 谷歌登录的client_id
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_ACCESS_ID
|
||||
labelEn: Alibaba Cloud accessKey ID
|
||||
labelZh: 阿里云accessKey ID
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_ACCESS_SECRET
|
||||
labelEn: Alibaba Cloud accessKeySecret
|
||||
labelZh: 阿里云 accessKeySecret
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_SMS_PERMIT
|
||||
labelEn: Enable mobile sign-in registration (true or false)
|
||||
labelZh: 启用手机登录注册(true or false)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_SMS_SIGN
|
||||
labelEn: Alibaba Cloud SMS verification code service signature
|
||||
labelZh: 阿里云短信验证码服务签名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_SMS_TEMPLATE
|
||||
labelEn: Alibaba Cloud verification code SMS template, which must include {code}
|
||||
labelZh: 阿里云验证码短信模板,需要包含 {code}
|
||||
required: false
|
||||
type: text
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
services:
|
||||
ais-ninja:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:80"
|
||||
environment:
|
||||
DATABASE_NAME: ${PANEL_DB_NAME}
|
||||
DATABASE_PORT: ${AIS_DB_PORT}
|
||||
DATABASE_HOST: ${PANEL_DB_HOST}
|
||||
DATABASE_USER: ${PANEL_DB_USER}
|
||||
DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}
|
||||
DATABASE_SYNC: 'true'
|
||||
REDIS_URL: redis://:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}/0
|
||||
EMAIL_HOST: ${SMTP_HOST}
|
||||
EMAIL_PORT: ${SMTP_PORT}
|
||||
EMAIL_FROM: ${EMAIL_SENDER}
|
||||
EMAIL_AUTH_USER: ${SMTP_USER}
|
||||
EMAIL_AUTH_PASS: ${SMTP_PASSWORD}
|
||||
SOCIAL_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
|
||||
ALI_ACCESS_KEY_ID: ${ALI_ACCESS_ID}
|
||||
ALI_ACCESS_KEY_SECRET: ${ALI_ACCESS_SECRET}
|
||||
ALI_SMS_ENABLE: ${ALI_SMS_PERMIT}
|
||||
ALI_SMS_SIGN_NAME: ${ALI_SMS_SIGN}
|
||||
ALI_SMS_TEMPLATE_CODE: ${ALI_SMS_TEMPLATE}
|
||||
image: jarvis2f/ais-ninja:v1.0.8
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,200 +0,0 @@
|
|||
# 使用说明
|
||||
- 管理员账户密码请通过查看容器日志获取;
|
||||
- 访问地址加`/admin`即是管理员面板。
|
||||
|
||||
# 原始相关
|
||||
|
||||
# ais-ninja
|
||||
|
||||
[English README]([README_en.md](https://github.com/jarvis2f/ais-ninja/blob/main/README_en.md))
|
||||
|
||||
## 介绍
|
||||
|
||||

|
||||
|
||||
ais-ninja 是一个基于 chatgpt 的 Web 应用程序。它基于 [ChatGpt-Web](https://github.com/79E/ChatGpt-Web).
|
||||
|
||||
* 重构了后端代码。
|
||||
* 多语言支持。
|
||||
* 支持插件系统。
|
||||
|
||||
## 插件列表
|
||||
|
||||
> 欢迎贡献你开发的插件,如何开发可以查看 [插件开发文档](#插件开发)。
|
||||
|
||||
| 插件名称 | 插件介绍 |
|
||||
|----------------------------------------|-------------------|
|
||||
| [Baidu Search](plugins%2Fbaidu-search) | 百度搜索 |
|
||||
| [DuckDuckGo](plugins%2FDuckDuckGo) | DuckDuckGo 搜索 |
|
||||
| [Google Search](plugins%2Fgoogle) | 谷歌搜索 |
|
||||
| [imdb](plugins%2Fimdb) | IMDB电影搜索(API需要付费) |
|
||||
| [internet](plugins%2Finternet) | 联网插件 |
|
||||
| [ipinfo.io](plugins%2Fipinfo.io) | ip 信息查询 |
|
||||
| [newsdata.io](plugins%2Fnewsdata.io) | 新闻查询 |
|
||||
| [seniverse](plugins%2Fseniverse) | 天气查询 |
|
||||
| [themoviedb](plugins%2Fthemoviedb) | 电影信息查询 |
|
||||
|
||||
## 部署
|
||||
|
||||
### docker
|
||||
|
||||
```shell
|
||||
docker run -d \
|
||||
--name ais-ninja \
|
||||
--hostname ais-ninja \
|
||||
-p 6789:80 \
|
||||
-e PUID=0 \
|
||||
-e DATABASE_NAME=ais_ninja \
|
||||
-e DATABASE_PORT=3306 \
|
||||
-e DATABASE_HOST=host \
|
||||
-e DATABASE_USER=root \
|
||||
-e DATABASE_PASSWORD=123456 \
|
||||
-e DATABASE_SYNC='true' \
|
||||
-e REDIS_URL=redis://${url}:6379/0 \
|
||||
jarvis2f/ais-ninja:v1.0.2
|
||||
```
|
||||
|
||||
### docker-compose
|
||||
|
||||
1. 创建文件夹 `ais_ninja` 创建 `docker-compose.yml` 文件.
|
||||
|
||||
```shell
|
||||
mkdir ais.ninja && cd ais.ninja
|
||||
touch docker-compose.yml
|
||||
```
|
||||
|
||||
2. 复制 [docker-compose.yml](https://github.com/jarvis2f/ais-ninja/blob/main/deploy/docker-compose.yml) 到 `docker-compose.yml` 文件中
|
||||
3. 修改 `docker-compose.yml` 中的环境变量
|
||||
4. 运行 `docker-compose up -d` 启动服务
|
||||
|
||||
运行 `docker logs ais-ninja-app` 查看日志。如果看到如下日志,则说明服务启动成功。首次启动会生成默认管理员帐户和密码。
|
||||
|
||||
```shell
|
||||
[12:47:52.887] INFO (43): Logger initialized: info
|
||||
[12:47:57.798] INFO (config/43): Config file path: /app/server/config.json
|
||||
[12:47:58.308] INFO (db/43): Database connected
|
||||
[12:47:58.822] INFO (db/43): Database synced
|
||||
[12:47:58.832] INFO (redis/43): Redis connected
|
||||
[12:47:58.851] WARN (openai/43): No OpenAI tokens provided
|
||||
[12:47:58.851] INFO (app/43): OpenAI clients initialized
|
||||
[12:47:58.860] INFO (app/43): Server running on port 5174
|
||||
[12:47:58.861] INFO (db/43): Administrator initialized: ${administrator account} ${administrator password}
|
||||
```
|
||||
|
||||
后台地址:`http://localhost:6789/admin`
|
||||
|
||||
### 环境变量
|
||||
|
||||
> 本项目中的大部分配置项都是通过环境变量来设置的。
|
||||
>
|
||||
> 你也可以修改 `config.json` 文件去设置环境变量。
|
||||
> 然后运行 `docker run -d --name ais-ninja -v /path/to/config.json:/app/server/config.json jarvis2f/ais-ninja:1.0.0`
|
||||
> 启动服务.
|
||||
|
||||
| Environment Variable | Description |
|
||||
|---------------------------|---------------------------------------------------------------------------|
|
||||
| `DATABASE_NAME` | 数据库名称 |
|
||||
| `DATABASE_PORT` | 数据库端口 |
|
||||
| `DATABASE_HOST` | 数据库地址 |
|
||||
| `DATABASE_USER` | 数据库用户名 |
|
||||
| `DATABASE_PASSWORD` | 数据库密码 |
|
||||
| `DATABASE_SYNC` | 项目启动是否自动同步数据库表结构。 true or false |
|
||||
| `REDIS_URL` | Redis 地址,格式: redis[s]://[[username][:password]@][host][:port][/db-number] |
|
||||
| `EMAIL_ENABLE` | 启用邮箱登录注册 true or false |
|
||||
| `EMAIL_HOST` | 邮箱服务地址 |
|
||||
| `EMAIL_PORT` | 邮箱服务端口 |
|
||||
| `EMAIL_FROM` | 邮箱服务发送方邮箱地址 |
|
||||
| `EMAIL_AUTH_USER` | 邮箱服务用户名 |
|
||||
| `EMAIL_AUTH_PASS` | 邮箱服务密码 |
|
||||
| `SOCIAL_GOOGLE_CLIENT_ID` | 谷歌登录的client_id |
|
||||
| `ALI_ACCESS_KEY_ID` | 阿里云 accessKeyId |
|
||||
| `ALI_ACCESS_KEY_SECRET` | 阿里云 accessKeySecret |
|
||||
| `ALI_SMS_ENABLE` | 启用手机登录注册 true or false |
|
||||
| `ALI_SMS_SIGN_NAME` | 阿里云短信验证码服务签名 |
|
||||
| `ALI_SMS_TEMPLATE_CODE` | 阿里云验证码短信模板,需要包含 {code} |
|
||||
|
||||
## 插件开发
|
||||
|
||||
项目启动之后可以到后台 -> 系统配置中填写仓库地址:`https://github.com/jarvis2f/ais-ninja.git`
|
||||
导入本仓库 [plugins](https://github.com/jarvis2f/ais-ninja/blob/main/plugins) 下的插件。
|
||||
|
||||
### 创建对话插件
|
||||
|
||||
可以先看下[ OpenAI 的文档](https://platform.openai.com/docs/guides/gpt/function-calling)。
|
||||
对话中会将插件中的方法以下方这种格式传递给 ChatGPT 的接口,ChatGPT 会返回需要调用的插件方法名称和参数。
|
||||
|
||||
```json
|
||||
{
|
||||
"functions": [
|
||||
{
|
||||
"name": "search_weather",
|
||||
"description": "Query china real time weather information from seniverse.com",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"location": {
|
||||
"type": "string",
|
||||
"description": "China Pinyin Location name, e.g. beijing"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
系统中一个插件可以有多个 function, 用户安装一个插件之后会把插件中的所有 function 传递给 ChatGPT。
|
||||
插件使用 JavaScript 编写,可以参考 [plugins](https://github.com/jarvis2f/ais-ninja/blob/main/plugins)中的代码。
|
||||
可以使用的库:
|
||||
|
||||
* [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) 发起网络请求
|
||||
* [dayjs](https://day.js.org/) 时间处理
|
||||
* [lodash](https://lodash.com/) 工具库
|
||||
* [jsdom](https://github.com/jsdom/jsdom) 操作 DOM
|
||||
* [puppeteer-core](https://www.npmjs.com/package/puppeteer-core) 模拟浏览器
|
||||
* ais ais_ninja 提供的一些函数
|
||||
* ais.createCompletion 调用 OpenAI 的 Completion API
|
||||
* ais.createChatCompletion 调用 OpenAI 的 Chat Completion API
|
||||
* ais_progress(content:string) 不需要 require,返回给用户当前方法的调用进度
|
||||
|
||||
[plugins](./plugins) 目录格式:
|
||||
|
||||
* `plugins/${plugin_name}/index.js` 插件代码
|
||||
* `plugins/${plugin_name}/desc.md` 插件介绍
|
||||
* `plugins/${plugin_name}/plugin.json` 插件信息
|
||||
|
||||
### 插件变量
|
||||
|
||||
可以将一些私有的 key 设为插件变量,这样就不会暴露在代码中。在 plugin.json 中的 variables 字段中定义变量。
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "weather",
|
||||
"description": "Query china real time weather information from seniverse.com",
|
||||
"variables": {
|
||||
"SENIVERSE_KEY": "Your API Key"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
在前台插件编辑中编写变量保存,然后就可以在代码中使用 `process.env.SENIVERSE_KEY` 获取变量。
|
||||
|
||||
### 查看插件日志
|
||||
|
||||
可以使用 `console.log` 打印日志。在插件页面中打开调试按钮,会将日志输出到浏览器的 console 中。
|
||||
|
||||
```
|
||||
📣📣📣function_call - [心知天气](search_weather)(ae9bc196-4bfe-43a9-8060-2d2e2ec601c5)
|
||||
{
|
||||
"name": "10000__search_weather",
|
||||
"arguments": "{\n\"location\": \"shanghai\"\n}"
|
||||
}
|
||||
📣📣📣function_response - []()(ae9bc196-4bfe-43a9-8060-2d2e2ec601c5)
|
||||
{
|
||||
"status": "The API key is invalid.",
|
||||
"status_code": "AP010003"
|
||||
}
|
||||
```
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: ais-ninja
|
||||
tags:
|
||||
- AI / 大模型
|
||||
title: 基于 ChatGPT 的 Web 应用程序
|
||||
description: 基于 ChatGPT 的 Web 应用程序
|
||||
additionalProperties:
|
||||
key: ais-ninja
|
||||
name: ais-ninja
|
||||
tags:
|
||||
- AI
|
||||
shortDescZh: 基于 ChatGPT 的 Web 应用程序
|
||||
shortDescEn: ChatGPT-based web applications
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/jarvis2f/ais-ninja
|
||||
github: https://github.com/jarvis2f/ais-ninja
|
||||
document: https://github.com/jarvis2f/ais-ninja
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
AIS_DB_PORT="3306"
|
||||
AIS_PLATFORM="mysql"
|
||||
ALI_ACCESS_ID=""
|
||||
ALI_ACCESS_SECRET=""
|
||||
ALI_SMS_PERMIT=""
|
||||
ALI_SMS_SIGN=""
|
||||
ALI_SMS_TEMPLATE=""
|
||||
CONTAINER_NAME="ais-ninja"
|
||||
EMAIL_SENDER=""
|
||||
GOOGLE_CLIENT_ID=""
|
||||
PANEL_APP_PORT_HTTP="40043"
|
||||
PANEL_DB_HOST="mysql"
|
||||
PANEL_DB_NAME="ais-ninja_Nk3BFS"
|
||||
PANEL_DB_USER="ais-ninja_XpfeJ6"
|
||||
PANEL_DB_USER_PASSWORD="ais-ninja_ZECQzW"
|
||||
REDIS_HOST="redis"
|
||||
REDIS_PASS="REDIS_PASSWORD"
|
||||
REDIS_PORT=6379
|
||||
SMTP_HOST=""
|
||||
SMTP_PASSWORD=""
|
||||
SMTP_PORT="587"
|
||||
SMTP_USER=""
|
||||
|
|
@ -1,163 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- child:
|
||||
default: ""
|
||||
envKey: PANEL_DB_HOST
|
||||
labelEn: Database Service
|
||||
labelZh: 数据库服务
|
||||
required: true
|
||||
type: service
|
||||
default: mysql
|
||||
envKey: AIS_PLATFORM
|
||||
labelEn: Database Service
|
||||
labelZh: 数据库服务
|
||||
params:
|
||||
- envKey: AIS_DB_PORT
|
||||
key: mysql
|
||||
type: param
|
||||
value: "3306"
|
||||
- envKey: AIS_DB_PORT
|
||||
key: postgresql
|
||||
type: param
|
||||
value: "5432"
|
||||
required: true
|
||||
type: apps
|
||||
values:
|
||||
- label: MySQL
|
||||
value: mysql
|
||||
- default: ais-ninja
|
||||
envKey: PANEL_DB_NAME
|
||||
labelEn: Database
|
||||
labelZh: 数据库名
|
||||
random: true
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: ais-ninja
|
||||
envKey: PANEL_DB_USER
|
||||
labelEn: User
|
||||
labelZh: 数据库用户
|
||||
random: true
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: text
|
||||
- default: ais-ninja
|
||||
envKey: PANEL_DB_USER_PASSWORD
|
||||
labelEn: Password
|
||||
labelZh: 数据库用户密码
|
||||
random: true
|
||||
required: true
|
||||
rule: paramComplexity
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_HOST
|
||||
key: redis
|
||||
labelEn: Redis Service
|
||||
labelZh: Redis服务
|
||||
required: true
|
||||
type: service
|
||||
- default: "6379"
|
||||
edit: true
|
||||
envKey: REDIS_PORT
|
||||
labelEn: Redis Service Port
|
||||
labelZh: Redis服务端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: REDIS_PASS
|
||||
labelEn: Redis Service Password
|
||||
labelZh: Redis服务密码
|
||||
required: true
|
||||
rule: paramCommon
|
||||
type: password
|
||||
- default: 40043
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SMTP_HOST
|
||||
labelEn: SMTP HOST
|
||||
labelZh: SMTP 主机
|
||||
required: false
|
||||
rule: paramExtUrl
|
||||
type: text
|
||||
- default: "587"
|
||||
edit: true
|
||||
envKey: SMTP_PORT
|
||||
labelEn: SMTP Port
|
||||
labelZh: SMTP 端口
|
||||
required: false
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: EMAIL_SENDER
|
||||
labelEn: Email service sender email address
|
||||
labelZh: 邮箱服务发送方邮箱地址
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SMTP_USER
|
||||
labelEn: Email service user name
|
||||
labelZh: 邮箱服务用户名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SMTP_PASSWORD
|
||||
labelEn: Email service password
|
||||
labelZh: 邮箱服务密码
|
||||
required: false
|
||||
rule: paramCommon
|
||||
type: password
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: GOOGLE_CLIENT_ID
|
||||
labelEn: Google login client_id
|
||||
labelZh: 谷歌登录的client_id
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_ACCESS_ID
|
||||
labelEn: Alibaba Cloud accessKey ID
|
||||
labelZh: 阿里云accessKey ID
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_ACCESS_SECRET
|
||||
labelEn: Alibaba Cloud accessKeySecret
|
||||
labelZh: 阿里云 accessKeySecret
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_SMS_PERMIT
|
||||
labelEn: Enable mobile sign-in registration (true or false)
|
||||
labelZh: 启用手机登录注册(true or false)
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_SMS_SIGN
|
||||
labelEn: Alibaba Cloud SMS verification code service signature
|
||||
labelZh: 阿里云短信验证码服务签名
|
||||
required: false
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: ALI_SMS_TEMPLATE
|
||||
labelEn: Alibaba Cloud verification code SMS template, which must include {code}
|
||||
labelZh: 阿里云验证码短信模板,需要包含 {code}
|
||||
required: false
|
||||
type: text
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
services:
|
||||
ais-ninja:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:80"
|
||||
environment:
|
||||
DATABASE_NAME: ${PANEL_DB_NAME}
|
||||
DATABASE_PORT: ${AIS_DB_PORT}
|
||||
DATABASE_HOST: ${PANEL_DB_HOST}
|
||||
DATABASE_USER: ${PANEL_DB_USER}
|
||||
DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD}
|
||||
DATABASE_SYNC: 'true'
|
||||
REDIS_URL: redis://:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}/0
|
||||
EMAIL_HOST: ${SMTP_HOST}
|
||||
EMAIL_PORT: ${SMTP_PORT}
|
||||
EMAIL_FROM: ${EMAIL_SENDER}
|
||||
EMAIL_AUTH_USER: ${SMTP_USER}
|
||||
EMAIL_AUTH_PASS: ${SMTP_PASSWORD}
|
||||
SOCIAL_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
|
||||
ALI_ACCESS_KEY_ID: ${ALI_ACCESS_ID}
|
||||
ALI_ACCESS_KEY_SECRET: ${ALI_ACCESS_SECRET}
|
||||
ALI_SMS_ENABLE: ${ALI_SMS_PERMIT}
|
||||
ALI_SMS_SIGN_NAME: ${ALI_SMS_SIGN}
|
||||
ALI_SMS_TEMPLATE_CODE: ${ALI_SMS_TEMPLATE}
|
||||
image: jarvis2f/ais-ninja:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
Before Width: | Height: | Size: 4.7 KiB |
|
|
@ -1,23 +0,0 @@
|
|||
# Alist-encrypt
|
||||
|
||||
这个项目主要是对 alist 的服务进行代理,提供 webdav 的加解密功能。支持 alist 网页在线播放加密的视频,查看加密的图片等功能,同时在 webdav 下的操作透明,自动实现文件资源的加解密。
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
启动后就打开代理服务器地址 `http://ip:端口/public/index.html` 即可进入配置页面,`账号 admin,密码默认 123456`。
|
||||
|
||||
配置后之后,打开`http://ip:端口` 即可访问到 alist 的服务了。
|
||||
|
||||
对于路径的设置,目前是支持正则表达式的,推荐表达式例如: movie_encrypt/\* ,这样的话所有的 movie_encrypt 目录的文件都会被加密传输。
|
||||
|
||||
|
||||
## 需求背景
|
||||
|
||||
AList 是一个支持多种存储、云网盘,支持网页浏览和提供 WebDAV 服务的应用程序。最近的阿里云盘很火,因为不限速,所以不少人使用阿里云盘配合 alist 当做个人的影院,随时在线观看视频。
|
||||
|
||||
国内的云盘有很多,除了阿里云盘还有天翼云盘也是不限速的,但是几乎都存在一个问题,敏感资源会被删除,相信很多人经历文件被删除掉的噩梦。那么有没有什么办法可以避免这样的问题呢,最简单的方案就是加密后上传。那么就有大局限性,不能实时在线播放视频,当然也有一些方案可以做到。加密后的文件分享也存在一定的不方便(密码不方便对外提供,本项目会有密码替身可以提供外部使用)。
|
||||
|
||||
Alist-encrypt 就是为了解决这个问题,它可以在网页中上传文件,也可以结合 webdav 服务器进行使用。在文件上传的时候进行加密,文件下载的时候进行解密,由于使用的是流加密方案,所以可以很轻松实现在线播放已加密的视频,浏览图片、文件等。目前主流的方案都是使用 alist 来实现网盘 webdav 的服务,所以 Alist-encrypt 支持 alist 服务,并且优先支持它的适配,支持网页版在线播放视频等功能。
|
||||
|
||||
关于这个项目的使用场景,对文件安全隐私有一定的需求,防止云盘扫描删除,有实时播放视频和下载的需求。
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
CONTAINER_NAME="alist-encrypt"
|
||||
PANEL_APP_PORT_HTTP="40218"
|
||||
DATA_PATH="./data"
|
||||
ALIST_HOST="192.168.31.254:5254"
|
||||
TIME_ZONE="Asia/Shanghai"
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40218
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path
|
||||
labelZh: 数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: '192.168.31.254:5254'
|
||||
edit: true
|
||||
envKey: ALIST_HOST
|
||||
labelEn: Alist Service Address
|
||||
labelZh: Alist 服务地址
|
||||
required: true
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TIME_ZONE
|
||||
labelEn: Time zone
|
||||
labelZh: 时区
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
services:
|
||||
alist-encrypt:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:5344"
|
||||
volumes:
|
||||
- "${DATA_PATH}:/node-proxy/conf"
|
||||
environment:
|
||||
- TZ=${TIME_ZONE}
|
||||
- ALIST_HOST=${ALIST_HOST}
|
||||
image: prophet310/alist-encrypt:beta
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: Alist-encrypt
|
||||
tags:
|
||||
- 工具
|
||||
title: 对 Alist 的服务提供 webdav 的加解密功能
|
||||
description: 对 Alist 的服务提供 webdav 的加解密功能
|
||||
additionalProperties:
|
||||
key: alist-encrypt
|
||||
name: Alist-encrypt
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: 对 Alist 的服务提供 webdav 的加解密功能
|
||||
shortDescEn: Provides webdav encryption and decryption for Alist's services
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/traceless/alist-encrypt
|
||||
github: https://github.com/traceless/alist-encrypt
|
||||
document: https://github.com/traceless/alist-encrypt
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
|
@ -1,289 +0,0 @@
|
|||
# 使用说明
|
||||
|
||||
**默认用户名:`admin` 密码:`admin`**
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
# AList-TvBox
|
||||
AList代理,支持xiaoya版AList界面管理。
|
||||
|
||||
## 简明教程
|
||||
1. 准备工作:安装Docker
|
||||
2. 安装AList-TvBox:
|
||||
```bash
|
||||
sudo bash -c "$(curl -fsSL https://d.har01d.cn/update_xiaoya.sh)"
|
||||
```
|
||||
3. 打开管理界面:http://your-ip:4567/#/accounts
|
||||
默认用户名:admin 密码:admin
|
||||
4. 获取并填写阿里token、开放token
|
||||
5. 将订阅地址[http://your-ip:4567/sub/0](http://your-ip:4567/sub/0) 输入到TvBox配置
|
||||
|
||||
## 功能
|
||||
- 管理界面
|
||||
- 海报墙
|
||||
- 多个AList站点
|
||||
- 多个阿里云盘账号
|
||||
- 挂载我的云盘
|
||||
- 自动签到
|
||||
- 自动刷新阿里Token
|
||||
- 自定义TvBox配置
|
||||
- 安全订阅配置
|
||||
- TvBox配置聚合
|
||||
- 添加阿里云盘分享
|
||||
- 添加PikPak分享
|
||||
- 支持BiliBili
|
||||
- 管理AList服务
|
||||
- 小雅配置文件管理
|
||||
- 构建索引
|
||||
- 在线日志
|
||||
|
||||
## 安装
|
||||
### 一键安装
|
||||
#### 小雅集成版
|
||||
不需要再安装小雅版Docker。
|
||||
|
||||
如果找不到bash就替换为sh。
|
||||
|
||||
如果找不到sudo,就用root账号登录,去掉sudo后运行。
|
||||
|
||||
```bash
|
||||
sudo bash -c "$(curl -fsSL https://d.har01d.cn/update_xiaoya.sh)"
|
||||
```
|
||||
使用其它配置目录:
|
||||
```bash
|
||||
sudo bash -c "$(curl -fsSL https://d.har01d.cn/update_xiaoya.sh)" -s /home/user/atv
|
||||
```
|
||||
使用其它端口:
|
||||
|
||||
- 第一个参数是挂载的数据目录,默认是/etc/xiaoya。
|
||||
- 第二个参数是管理界面端口,默认是4567。
|
||||
- 第三个参数是小雅AList端口,默认是5344。
|
||||
```bash
|
||||
sudo bash -c "$(curl -fsSL https://d.har01d.cn/update_xiaoya.sh)" -s /home/alist 8080
|
||||
sudo bash -c "$(curl -fsSL https://d.har01d.cn/update_xiaoya.sh)" -s /home/alist 8080 5544
|
||||
```
|
||||
OpenWrt去掉sudo,或者已经是root账号:
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://d.har01d.cn/update_xiaoya.sh)"
|
||||
```
|
||||
|
||||
如果没有安装curl:
|
||||
```bash
|
||||
wget https://d.har01d.cn/update_xiaoya.sh; sh ./update_xiaoya.sh
|
||||
```
|
||||
|
||||
#### 内存优化版
|
||||
目前仅支持Linux x86_64平台。
|
||||
```bash
|
||||
wget https://d.har01d.cn/update_xiaoya.sh -O update_xiaoya.sh && sh ./update_xiaoya.sh -t native
|
||||
```
|
||||
|
||||
#### host网络模式
|
||||
使用host网络模式运行:
|
||||
```bash
|
||||
sudo bash -c "$(curl -fsSL https://d.har01d.cn/update_hostmode.sh)"
|
||||
```
|
||||
使用的端口:
|
||||
|
||||
6789 - nginx
|
||||
|
||||
5233 - httpd
|
||||
|
||||
5234 - AList
|
||||
|
||||
4567 - 管理应用
|
||||
|
||||
#### NAS
|
||||
对于群辉等NAS系统,请挂载Docker的/data目录到群辉文件系统,否则数据不会保留。
|
||||
|
||||
### 海报展示
|
||||
#### 浏览目录
|
||||

|
||||
#### 搜索界面
|
||||

|
||||
#### 播放界面
|
||||

|
||||
|
||||
## 管理
|
||||
打开管理网页:http://your-ip:4567/
|
||||
|
||||
默认用户名:admin 密码:admin
|
||||
|
||||
点击右上角菜单,进入用户界面修改用户名和密码。
|
||||
|
||||
### 站点
|
||||

|
||||
|
||||
小雅版默认添加了站点:`http://localhost`,如果配置有域名,自行修改地址。
|
||||
|
||||
为什么是`http://localhost`? 因为小雅用80端口代理了容器内的AList 5244端口。
|
||||
管理程序运行在同一个容器内,能够直接访问80端口。
|
||||
|
||||
访问AList,请加端口,http://your-ip:5344/ 。使用Docker映射的端口,默认是5344.
|
||||
|
||||
自己可以添加三方站点,取代了xiaoya的套娃。会自动识别版本,如果不能正确识别,请手动配置版本。
|
||||
|
||||

|
||||
|
||||
如果AList开启了强制登录,会自动填写认证token。
|
||||
|
||||

|
||||
|
||||
### 账号
|
||||

|
||||
|
||||
第一次启动会自动读取/data/mytoken.txt,/data/myopentoken.txt,/data/temp_transfer_folder_id.txt里面的内容,以后这些文件不再生效。
|
||||
|
||||

|
||||
|
||||
#### 转存文件夹ID
|
||||
在阿里网盘网页版上创建一个转存目录,比如“temp”.
|
||||
|
||||
然后点击目录,浏览器显示的 URL
|
||||
https://www.aliyundrive.com/drive/folder/640xxxxxxxxxxxxxxxxxxxca8a 最后一串就是。
|
||||
|
||||
### 订阅
|
||||
tvbox/my.json和juhe.json不能在TvBox直接使用,请使用订阅地址!
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
添加订阅支持多个URL,用逗号隔开。定制部分基本和TvBox的配置json一致,添加了站点白名单`sites-whitelist`和黑名单`sites-blacklist`。
|
||||
|
||||
定制属于高级功能,不懂TvBox配置格式不要轻易改动。
|
||||
|
||||
站点`key`是必须的,其它字段可选。对于lives,rules,parses,doh类型,`name`字段是必须的。
|
||||
|
||||
站点名称可以加前缀,通过订阅URL前面加前缀,使用`@`分割。比如:`饭@http://饭太硬.top/tv,菜@https://tvbox.cainisi.cf`
|
||||
|
||||
替换功能:
|
||||
|
||||
在配置页面->高级设置里面找到阿里Token地址,然后在订阅-定制里面自替换token。
|
||||
|
||||
```json
|
||||
{
|
||||
"sites-blacklist": ["说明1","说明2", "说明3","说明4","公告", "ext_live_protocol", "cc"],
|
||||
"sites": [
|
||||
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 资源
|
||||
第一次启动会自动读取/data/alishare_list.txt文件里面的分享内容,并保存到数据库,以后这个文件就不再生效。
|
||||
|
||||
可以在界面批量导入文件里面的分享内容,批量删除分享。
|
||||
|
||||
添加资源如果路径以/开头就会创建在根目录下。否则在/🈴我的阿里分享/下面。
|
||||
|
||||

|
||||
|
||||
### 海报墙模式
|
||||

|
||||

|
||||
|
||||
添加一个小雅站点并打开搜索功能。
|
||||
|
||||

|
||||
|
||||
可以自定义类别。在文件管理界面,添加一个文件/data/category.txt,内容是要显示的小雅目录。
|
||||
|
||||
可以自定义名称,冒号后面是自定义的名字。 在分类下面可以加子目录作为筛选条件,用两个空格开始。
|
||||
|
||||
<pre>
|
||||
每日更新
|
||||
电视剧/国产剧
|
||||
电视剧/美剧
|
||||
美剧(已刮削):美剧ℹ
|
||||
</pre>
|
||||
|
||||
[示例文件](https://raw.githubusercontent.com/power721/alist-tvbox/master/doc/category.txt)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### BiliBili
|
||||
目前只有影视TV支持高清高速的DASH格式视频。
|
||||
|
||||
拖动行可以改变顺序,需要点击保存按钮才能生效。
|
||||
|
||||
打开、关闭显示开关后,需要点击保存按钮才能生效。
|
||||
|
||||

|
||||
|
||||
登录后才能使用,TvBox第三个站源。
|
||||
|
||||

|
||||
|
||||
或者使用已有的cookie登录。
|
||||
|
||||
打开上报播放记录,B站才能看到播放记录。
|
||||
|
||||

|
||||
|
||||
添加搜索关键词作为一级分类:
|
||||
|
||||

|
||||
|
||||
添加频道作为一级分类:
|
||||
|
||||

|
||||
|
||||
### 配置
|
||||

|
||||
|
||||
开启安全订阅,在订阅URL、点播API、播放API加上Token,防止被别人扫描。
|
||||
|
||||
强制登录AList后,连接webdav需要使用下面的用户名和密码。
|
||||
|
||||
如果打开了挂载我的云盘功能,每次启动会消耗两次开放token请求。60分钟内只能请求10次,超过后需要等待60分钟后才能操作。
|
||||
|
||||
可以换IP绕开限制。或者更换开放token的认证URL。配置页面->高级设置 选择一个认证URL。
|
||||
|
||||
- https://api-cf.nn.ci/alist/ali_open/token
|
||||
- https://api.xhofe.top/alist/ali_open/token
|
||||
- https://api.nn.ci/alist/ali_open/token
|
||||
|
||||
### 索引
|
||||
对于阿里云盘资源,建议使用文件数量少的路径,并限速,防止被封号。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 别名
|
||||
把一些路径合并成一个路径。
|
||||
|
||||

|
||||
|
||||
### 日志
|
||||
Nginx代理/logs:
|
||||
```text
|
||||
location /logs {
|
||||
proxy_pass http://127.0.0.1:4567;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
chunked_transfer_encoding off;
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
proxy_redirect off;
|
||||
proxy_hide_header Cache-Control;
|
||||
}
|
||||
```
|
||||
|
||||
### 其它
|
||||
不再生效的文件可以保留,以后删除数据库后可以恢复。
|
||||
|
||||
guestpass.txt和guestlogin.txt第一次启动时加载,以后不再生效,请在界面配置。
|
||||
|
||||
show_my_ali.txt第一次启动时加载,以后不再生效,请在界面配置是否加载阿里云盘。
|
||||
|
||||
docker_address.txt不再生效,使用订阅链接会自动识别。
|
||||
|
||||
alist_list.txt第一次启动时加载,以后不再生效,请在界面添加站点。
|
||||
|
||||
proxy.txt、tv.txt、my.json、iptv.m3u还是生效的,可以在文件页面编辑。
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: Alist-TVBox
|
||||
tags:
|
||||
- 工具
|
||||
title: AList 代理,支持 xiaoya 版 AList 界面管理
|
||||
description: AList 代理,支持 xiaoya 版 AList 界面管理
|
||||
additionalProperties:
|
||||
key: alist-tvbox
|
||||
name: Alist-TVBox
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: AList 代理,支持 xiaoya 版 AList 界面管理
|
||||
shortDescEn: AList proxy server for TvBox, support playlist and search
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/power721/alist-tvbox
|
||||
github: https://github.com/power721/alist-tvbox
|
||||
document: https://github.com/power721/alist-tvbox
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
CONTAINER_NAME="alist-tvbox"
|
||||
PANEL_APP_PORT_HTTP="40161"
|
||||
PANEL_APP_PORT_XIAOYA="40162"
|
||||
DATA_PATH="./data"
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40161
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 40162
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_XIAOYA
|
||||
labelEn: xiaoya Alist Port
|
||||
labelZh: 小雅 Alist 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path
|
||||
labelZh: 数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
services:
|
||||
alist-tvbox:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:4567"
|
||||
- "${PANEL_APP_PORT_XIAOYA}:80"
|
||||
volumes:
|
||||
- "${DATA_PATH}:/data"
|
||||
environment:
|
||||
- ALIST_PORT=${PANEL_APP_PORT_XIAOYA}
|
||||
image: haroldli/xiaoya-tvbox:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
Before Width: | Height: | Size: 6.9 KiB |
|
|
@ -1,4 +0,0 @@
|
|||
CONTAINER_NAME="alist"
|
||||
PANEL_APP_PORT_HTTP="40034"
|
||||
DATA_PATH="./data/data"
|
||||
MOUNT_PATH="./data/mnt"
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40034
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data/data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path
|
||||
labelZh: 数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: ./data/mnt
|
||||
edit: true
|
||||
envKey: MOUNT_PATH
|
||||
labelEn: Mount folder path
|
||||
labelZh: 挂载文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
services:
|
||||
alist:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:5244"
|
||||
volumes:
|
||||
- "${DATA_PATH}:/opt/alist/data"
|
||||
- "${MOUNT_PATH}:/mnt/data"
|
||||
environment:
|
||||
- PUID=0
|
||||
- PGID=0
|
||||
- UMASK=022
|
||||
image: xhofe/alist:v3.44.0
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
# 使用说明
|
||||
|
||||
- 账户与密码
|
||||
|
||||
查看容器日志,或者容器功能界面找到`alist`的容器,点击终端连接到容器内部, 运行
|
||||
```
|
||||
./alist admin
|
||||
```
|
||||
# 原始相关
|
||||
|
||||
<div align="center">
|
||||
<a href="https://alist.nn.ci"><img height="100px" alt="logo" src="https://cdn.jsdelivr.net/gh/alist-org/logo@main/logo.svg"/></a>
|
||||
<p><em>🗂一个支持多存储的文件列表程序,使用 Gin 和 Solidjs。</em></p>
|
||||
<div>
|
||||
<a href="https://goreportcard.com/report/github.com/alist-org/alist/v3">
|
||||
<img src="https://goreportcard.com/badge/github.com/alist-org/alist/v3" alt="latest version" />
|
||||
</a>
|
||||
<a href="https://github.com/Xhofe/alist/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/github/license/Xhofe/alist" alt="License" />
|
||||
</a>
|
||||
<a href="https://github.com/Xhofe/alist/actions?query=workflow%3ABuild">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/Xhofe/alist/build.yml?branch=main" alt="Build status" />
|
||||
</a>
|
||||
<a href="https://github.com/Xhofe/alist/releases">
|
||||
<img src="https://img.shields.io/github/release/Xhofe/alist" alt="latest version" />
|
||||
</a>
|
||||
<a title="Crowdin" target="_blank" href="https://crwd.in/alist">
|
||||
<img src="https://badges.crowdin.net/alist/localized.svg">
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://github.com/Xhofe/alist/discussions">
|
||||
<img src="https://img.shields.io/github/discussions/Xhofe/alist?color=%23ED8936" alt="discussions" />
|
||||
</a>
|
||||
<a href="https://discord.gg/F4ymsH4xv2">
|
||||
<img src="https://img.shields.io/discord/1018870125102895134?logo=discord" alt="discussions" />
|
||||
</a>
|
||||
<a href="https://github.com/Xhofe/alist/releases">
|
||||
<img src="https://img.shields.io/github/downloads/Xhofe/alist/total?color=%239F7AEA&logo=github" alt="Downloads" />
|
||||
</a>
|
||||
<a href="https://hub.docker.com/r/xhofe/alist">
|
||||
<img src="https://img.shields.io/docker/pulls/xhofe/alist?color=%2348BB78&logo=docker&label=pulls" alt="Downloads" />
|
||||
</a>
|
||||
<a href="https://alist.nn.ci/zh/guide/sponsor.html">
|
||||
<img src="https://img.shields.io/badge/%24-sponsor-F87171.svg" alt="sponsor" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
[English](./README.md) | 中文 | [Contributing](./CONTRIBUTING.md) | [CODE_OF_CONDUCT](./CODE_OF_CONDUCT.md)
|
||||
|
||||
## 功能
|
||||
|
||||
- [x] 多种存储
|
||||
- [x] 本地存储
|
||||
- [x] [阿里云盘](https://www.aliyundrive.com/)
|
||||
- [x] OneDrive / Sharepoint([国际版](https://www.office.com/), [世纪互联](https://portal.partner.microsoftonline.cn),de,us)
|
||||
- [x] [天翼云盘](https://cloud.189.cn) (个人云, 家庭云)
|
||||
- [x] [GoogleDrive](https://drive.google.com/)
|
||||
- [x] [123云盘](https://www.123pan.com/)
|
||||
- [x] FTP / SFTP
|
||||
- [x] [PikPak](https://www.mypikpak.com/)
|
||||
- [x] [S3](https://aws.amazon.com/cn/s3/)
|
||||
- [x] [Seafile](https://seafile.com/)
|
||||
- [x] [又拍云对象存储](https://www.upyun.com/products/file-storage)
|
||||
- [x] WebDav(支持无API的OneDrive/SharePoint)
|
||||
- [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ ))
|
||||
- [x] [分秒帧](https://www.mediatrack.cn/)
|
||||
- [x] [和彩云](https://yun.139.com/) (个人云, 家庭云)
|
||||
- [x] [Yandex.Disk](https://disk.yandex.com/)
|
||||
- [x] [百度网盘](http://pan.baidu.com/)
|
||||
- [x] [夸克网盘](https://pan.quark.cn)
|
||||
- [x] [迅雷网盘](https://pan.xunlei.com)
|
||||
- [x] [蓝奏云](https://www.lanzou.com/)
|
||||
- [x] [阿里云盘分享](https://www.aliyundrive.com/)
|
||||
- [x] [谷歌相册](https://photos.google.com/)
|
||||
- [x] [Mega.nz](https://mega.nz)
|
||||
- [x] [一刻相册](https://photo.baidu.com/)
|
||||
- [x] SMB
|
||||
- [x] [115](https://115.com/)
|
||||
- [X] Cloudreve
|
||||
- [x] 部署方便,开箱即用
|
||||
- [x] 文件预览(PDF、markdown、代码、纯文本……)
|
||||
- [x] 画廊模式下的图像预览
|
||||
- [x] 视频和音频预览,支持歌词和字幕
|
||||
- [x] Office 文档预览(docx、pptx、xlsx、...)
|
||||
- [x] `README.md` 预览渲染
|
||||
- [x] 文件永久链接复制和直接文件下载
|
||||
- [x] 黑暗模式
|
||||
- [x] 国际化
|
||||
- [x] 受保护的路由(密码保护和身份验证)
|
||||
- [x] WebDav (具体见 https://alist.nn.ci/zh/guide/webdav.html)
|
||||
- [x] [Docker 部署](https://hub.docker.com/r/xhofe/alist)
|
||||
- [x] Cloudflare workers 中转
|
||||
- [x] 文件/文件夹打包下载
|
||||
- [x] 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制
|
||||
- [x] 离线下载
|
||||
- [x] 跨存储复制文件
|
||||
|
||||
## 文档
|
||||
|
||||
<https://alist.nn.ci/zh/>
|
||||
|
||||
## Demo
|
||||
|
||||
<https://al.nn.ci>
|
||||
|
||||
## 讨论
|
||||
|
||||
一般问题请到[讨论论坛](https://github.com/Xhofe/alist/discussions) ,**issue仅针对错误报告和功能请求。**
|
||||
|
||||
## 赞助
|
||||
|
||||
AList 是一个开源软件,如果你碰巧喜欢这个项目,并希望我继续下去,请考虑赞助我或提供一个单一的捐款!感谢所有的爱和支持:https://alist.nn.ci/zh/guide/sponsor.html
|
||||
|
||||
### 特别赞助
|
||||
|
||||
- [找资源 - 阿里云盘资源搜索引擎](https://zhaoziyuan.la/)
|
||||
- [KinhDown 百度云盘不限速下载!永久免费!已稳定运行3年!非常可靠!Q群 -> 786799372](https://kinhdown.com)
|
||||
- [JetBrains: Essential tools for software developers and teams](https://www.jetbrains.com/)
|
||||
|
||||
## 贡献者
|
||||
|
||||
Thanks goes to these wonderful people:
|
||||
|
||||
[](https://github.com/alist-org/alist/graphs/contributors)
|
||||
|
||||
## 许可
|
||||
|
||||
`AList` 是在 AGPL-3.0 许可下许可的开源软件。
|
||||
|
||||
## 免责声明
|
||||
- 本程序为免费开源项目,旨在分享网盘文件,方便下载以及学习golang,使用时请遵守相关法律法规,请勿滥用;
|
||||
- 本程序通过调用官方sdk/接口实现,无破坏官方接口行为;
|
||||
- 本程序仅做302重定向/流量转发,不拦截、存储、篡改任何用户数据;
|
||||
- 在使用本程序之前,你应了解并承担相应的风险,包括但不限于账号被ban,下载限速等,与本程序无关;
|
||||
- 如有侵权,请通过[邮件](mailto:i@nn.ci)与我联系,会及时处理。
|
||||
|
||||
---
|
||||
|
||||
> [@博客](https://nn.ci/) · [@GitHub](https://github.com/Xhofe) · [@Telegram群](https://t.me/alist_chat) · [@Discord](https://discord.gg/F4ymsH4xv2)
|
||||
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40034
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ./data/data
|
||||
edit: true
|
||||
envKey: DATA_PATH
|
||||
labelEn: Data folder path
|
||||
labelZh: 数据文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
- default: ./data/mnt
|
||||
edit: true
|
||||
envKey: MOUNT_PATH
|
||||
labelEn: Mount folder path
|
||||
labelZh: 挂载文件夹路径
|
||||
required: true
|
||||
type: text
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
services:
|
||||
alist:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTP}:5244"
|
||||
volumes:
|
||||
- "${DATA_PATH}:/opt/alist/data"
|
||||
- "${MOUNT_PATH}:/mnt/data"
|
||||
environment:
|
||||
- PUID=0
|
||||
- PGID=0
|
||||
- UMASK=022
|
||||
image: xhofe/alist-aria2:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
CONTAINER_NAME="alist"
|
||||
PANEL_APP_PORT_HTTP="40034"
|
||||
DATA_PATH="./data/data"
|
||||
MOUNT_PATH="./data/mnt"
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: Alist
|
||||
tags:
|
||||
- 工具
|
||||
title: 一个支持多存储的文件列表程序
|
||||
description: 一个支持多存储的文件列表程序
|
||||
additionalProperties:
|
||||
key: alist
|
||||
name: Alist
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: 一个支持多存储的文件列表程序
|
||||
shortDescEn: A file list program that supports multiple storage
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/alist-org/alist
|
||||
github: https://github.com/alist-org/alist
|
||||
document: https://alist.nn.ci/zh/
|
||||