Processed apps directory via GitHub Actions

This commit is contained in:
QYG2297248353
2025-07-18 12:50:36 +00:00
parent 0280455001
commit 2dc4260a7e
23 changed files with 426 additions and 23 deletions

View File

@@ -0,0 +1,18 @@
# 数据持久化路径 [必填]
GARAGE_ROOT_PATH=/home/garage
# WebUI 端口 [必填]
PANEL_APP_PORT_HTTP=3909
# S3 API 接口 [必填]
PANEL_APP_PORT_S3_API=3900
# RPC 通信 [必填]
PANEL_APP_PORT_RPC=3901
# S3 通讯端口 [必填]
PANEL_APP_PORT_S3_WEB=3902
# 管理 API [必填]
PANEL_APP_PORT_API=3903

View File

@@ -0,0 +1,49 @@
additionalProperties:
formFields:
- default: "/home/garage"
edit: true
envKey: GARAGE_ROOT_PATH
labelZh: 数据持久化路径
labelEn: Data persistence path
required: true
type: text
- default: 3909
edit: true
envKey: PANEL_APP_PORT_HTTP
labelZh: WebUI 端口
labelEn: WebUI port
required: true
rule: paramPort
type: number
- default: 3900
edit: true
envKey: PANEL_APP_PORT_S3_API
labelZh: S3 API 接口
labelEn: S3 API
required: true
rule: paramPort
type: number
- default: 3901
edit: true
envKey: PANEL_APP_PORT_RPC
labelZh: RPC 通信
labelEn: RPC Communication
required: true
rule: paramPort
type: number
- default: 3902
edit: true
envKey: PANEL_APP_PORT_S3_WEB
labelZh: S3 通讯端口
labelEn: S3 Communication
required: true
rule: paramPort
type: number
- default: 3903
edit: true
envKey: PANEL_APP_PORT_API
labelZh: 管理 API
labelEn: Manage API
required: true
rule: paramPort
type: number

View File

@@ -0,0 +1,39 @@
networks:
1panel-network:
external: true
services:
garage:
container_name: garage-hq-web
env_file:
- ./envs/global.env
- .env
environment:
- TZ=Asia/Shanghai
image: dxflrs/garage:v2.0.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_S3_API}:3900
- ${PANEL_APP_PORT_RPC}:3901
- ${PANEL_APP_PORT_S3_WEB}:3902
- ${PANEL_APP_PORT_API}:3903
restart: always
volumes:
- ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml
- ${GARAGE_ROOT_PATH}/meta:/var/lib/garage/meta
- ${GARAGE_ROOT_PATH}/data:/var/lib/garage/data
garage-webui:
container_name: garage-hq-web-web
environment:
API_BASE_URL: http://garage:3903
S3_ENDPOINT_URL: http://garage:3900
image: khairul169/garage-webui:1.0.9
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:3909
restart: always
volumes:
- ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml

View File

@@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
ENV_FILE=.env

View File

@@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
TZ=Asia/Shanghai

View File

@@ -0,0 +1,76 @@
#!/bin/bash
if [ -f .env ]; then
source .env
# setup-1 add default values
CURRENT_DIR=$(pwd)
sed -i '/^ENV_FILE=/d' .env
sed -i '/^GLOBAL_ENV_FILE=/d' .env
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
# 检查 GARAGE_ROOT_PATH 是否存在
if [ -z "${GARAGE_ROOT_PATH}" ]; then
echo "Error: GARAGE_ROOT_PATH is not set in .env."
exit 1
fi
# 创建 config 目录
CONFIG_DIR="${GARAGE_ROOT_PATH}/config"
mkdir -p "${CONFIG_DIR}"
CONFIG_FILE="${CONFIG_DIR}/garage.toml"
# 检查文件是否存在并包含 admin_token
if [ -f "${CONFIG_FILE}" ] && grep -q '^admin_token' "${CONFIG_FILE}"; then
echo "garage.toml already exists and contains admin_token. Skipping creation."
else
echo "Creating or updating garage.toml..."
cat > "${CONFIG_FILE}" <<EOF
metadata_dir = "/tmp/meta"
data_dir = "/tmp/data"
db_engine = "sqlite"
replication_factor = 1
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "$(openssl rand -hex 32)"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage.localhost"
[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage.localhost"
index = "index.html"
[k2v_api]
api_bind_addr = "[::]:3904"
[admin]
api_bind_addr = "[::]:3903"
admin_token = "$(openssl rand -base64 32)"
metrics_token = "$(openssl rand -base64 32)"
EOF
echo "garage.toml written to ${CONFIG_FILE}"
fi
META_DIR="${GARAGE_ROOT_PATH}/meta"
mkdir -p "${META_DIR}"
DATA_DIR="${GARAGE_ROOT_PATH}/data"
mkdir -p "${DATA_DIR}"
chmod -R 777 "$CONFIG_DIR"
chmod -R 777 "META_DIR"
chmod -R 777 "DATA_DIR"
echo "Check Finish."
else
echo "Error: .env file not found."
exit 1
fi

View File

@@ -0,0 +1,10 @@
#!/bin/bash
if [ -f .env ]; then
source .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@@ -0,0 +1,17 @@
#!/bin/bash
if [ -f .env ]; then
source .env
# setup-1 add default values
CURRENT_DIR=$(pwd)
sed -i '/^ENV_FILE=/d' .env
sed -i '/^GLOBAL_ENV_FILE=/d' .env
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@@ -0,0 +1,62 @@
# Garage HQ
Garage 是一种与 S3 兼容的分布式对象存储服务,专为中小规模的自托管而设计。
![Garage HQ](https://file.lifebus.top/imgs/garage-hq_cover.png)
![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue)
## 简介
Garage 专为由运行在不同物理位置的节点组成的存储集群而设计旨在轻松提供存储服务该服务可在这些不同位置复制数据即使某些服务器无法访问也能保持可用。Garage
还注重轻量级、易于操作以及对机器故障的高弹性。
## 安装说明
通过宿主机初始化:
1. 通过 `docker ps` 命令查看正在运行的容器, 获取当前部署的容器名称 `CONTAINER ID`
2. 注册 `garage` 命令
```sh
alias garage="docker exec -ti <container name> /garage"
```
3. 查看集群状态
```sh
garage status
```
输出结果,获得集群 `ID`:3df3882525930828
```shell
[root@mechrevmini ~]# garage status
2025-07-18T09:10:09.202519Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
2025-07-18T09:10:09.243660Z INFO garage_net::netapp: Connection established to 3df3882525930828
==== HEALTHY NODES ====
ID Hostname Address Tags Zone Capacity DataAvail Version
3df3882525930828 a2bc48d5c8ab 127.0.0.1:3901 NO ROLE ASSIGNED v2.0.0
```
4. 创建节点
```sh
garage layout assign -z dc1 -c 1G <node_id>
## demo
garage layout assign -z dc1 -c 1G 3df3882525930828
```
5. 将节点添加到集群
```sh
garage layout apply --version 1
```
无论是集群部署,还是单节点部署,都需要初始化节点。
---
![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png)

View File

@@ -0,0 +1,15 @@
additionalProperties:
key: garage-hq-web
name: Garage HQ (WebUI版)
tags:
- WebSite
- Storage
- Local
shortDescZh: 专为自托管而定制的开源分布式对象存储服务
shortDescEn: An open-source distributed object storage service tailored for self-hosting
type: website
crossVersionUpdate: true
limit: 0
website: https://garagehq.deuxfleurs.fr/
github: https://git.deuxfleurs.fr/Deuxfleurs/garage/
document: https://garagehq.deuxfleurs.fr/

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@@ -11,6 +11,52 @@ Garage 是一种与 S3 兼容的分布式对象存储服务,专为中小规模
Garage 专为由运行在不同物理位置的节点组成的存储集群而设计旨在轻松提供存储服务该服务可在这些不同位置复制数据即使某些服务器无法访问也能保持可用。Garage
还注重轻量级、易于操作以及对机器故障的高弹性。
## 安装说明
通过宿主机初始化:
1. 通过 `docker ps` 命令查看正在运行的容器, 获取当前部署的容器名称 `CONTAINER ID`
2. 注册 `garage` 命令
```sh
alias garage="docker exec -ti <container name> /garage"
```
3. 查看集群状态
```sh
garage status
```
输出结果,获得集群 `ID`:3df3882525930828
```shell
[root@mechrevmini ~]# garage status
2025-07-18T09:10:09.202519Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
2025-07-18T09:10:09.243660Z INFO garage_net::netapp: Connection established to 3df3882525930828
==== HEALTHY NODES ====
ID Hostname Address Tags Zone Capacity DataAvail Version
3df3882525930828 a2bc48d5c8ab 127.0.0.1:3901 NO ROLE ASSIGNED v2.0.0
```
4. 创建节点
```sh
garage layout assign -z dc1 -c 1G <node_id>
## demo
garage layout assign -z dc1 -c 1G 3df3882525930828
```
5. 将节点添加到集群
```sh
garage layout apply --version 1
```
无论是集群部署,还是单节点部署,都需要初始化节点。
---
![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png)

View File

@@ -2,7 +2,7 @@ additionalProperties:
key: garage-hq
name: Garage HQ
tags:
- WebSite
- Storage
- Local
shortDescZh: 专为自托管而定制的开源分布式对象存储服务
shortDescEn: An open-source distributed object storage service tailored for self-hosting

View File

@@ -7,8 +7,8 @@ scrape_configs:
metrics_path: /metrics
static_configs:
- targets:
- 'prometheus:9090'
- 'master:9324'
- 'volume:9325'
- 'filer:9326'
- 's3:9327'
- 'seaweedfs-prometheus:9090'
- 'seaweedfs-master:9324'
- 'seaweedfs-volume:9325'
- 'seaweedfs-filer:9326'
- 'seaweedfs-s3:9327'

View File

@@ -1,11 +1,10 @@
networks:
1panel-network:
external: true
seaweedfs-network:
external: true
seaweedfs-network: null
services:
seaweedfs-filer:
command: filer -master="master:9333" -ip.bind=0.0.0.0 -metricsPort=9326
command: filer -master="seaweedfs-master:9333" -ip.bind=0.0.0.0 -metricsPort=9326
container_name: seaweedfs-filer
depends_on:
- seaweedfs-master
@@ -68,7 +67,7 @@ services:
volumes:
- ${SEAWEEDFS_ROOT_PATH}/prometheus:/etc/prometheus
seaweedfs-s3:
command: s3 -filer="filer:8888" -ip.bind=0.0.0.0 -metricsPort=9327
command: s3 -filer="seaweedfs-filer:8888" -ip.bind=0.0.0.0 -metricsPort=9327
container_name: seaweedfs
depends_on:
- seaweedfs-master
@@ -93,7 +92,7 @@ services:
- ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
- ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
seaweedfs-volume:
command: volume -mserver="master:9333" -ip.bind=0.0.0.0 -port=8080 -metricsPort=9325
command: volume -mserver="seaweedfs-master:9333" -ip.bind=0.0.0.0 -port=8080 -metricsPort=9325
container_name: seaweedfs-volume
depends_on:
- seaweedfs-master
@@ -115,7 +114,7 @@ services:
- ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
- ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
seaweedfs-webdav:
command: webdav -filer="filer:8888"
command: webdav -filer="seaweedfs-filer:8888"
container_name: seaweedfs-webdav
depends_on:
- seaweedfs-master

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 77 KiB

18
dockge/garage-hq-web/.env Normal file
View File

@@ -0,0 +1,18 @@
# 数据持久化路径 [必填]
GARAGE_ROOT_PATH=/home/garage
# WebUI 端口 [必填]
PANEL_APP_PORT_HTTP=3909
# S3 API 接口 [必填]
PANEL_APP_PORT_S3_API=3900
# RPC 通信 [必填]
PANEL_APP_PORT_RPC=3901
# S3 通讯端口 [必填]
PANEL_APP_PORT_S3_WEB=3902
# 管理 API [必填]
PANEL_APP_PORT_API=3903

View File

@@ -0,0 +1,39 @@
networks:
1panel-network:
external: true
services:
garage:
container_name: garage-hq-web
env_file:
- ./envs/global.env
- .env
environment:
- TZ=Asia/Shanghai
image: dxflrs/garage:v2.0.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_S3_API}:3900
- ${PANEL_APP_PORT_RPC}:3901
- ${PANEL_APP_PORT_S3_WEB}:3902
- ${PANEL_APP_PORT_API}:3903
restart: always
volumes:
- ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml
- ${GARAGE_ROOT_PATH}/meta:/var/lib/garage/meta
- ${GARAGE_ROOT_PATH}/data:/var/lib/garage/data
garage-webui:
container_name: garage-hq-web-web
environment:
API_BASE_URL: http://garage:3903
S3_ENDPOINT_URL: http://garage:3900
image: khairul169/garage-webui:1.0.9
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:3909
restart: always
volumes:
- ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml

View File

@@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
ENV_FILE=.env

View File

@@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
TZ=Asia/Shanghai

View File

@@ -7,8 +7,8 @@ scrape_configs:
metrics_path: /metrics
static_configs:
- targets:
- 'prometheus:9090'
- 'master:9324'
- 'volume:9325'
- 'filer:9326'
- 's3:9327'
- 'seaweedfs-prometheus:9090'
- 'seaweedfs-master:9324'
- 'seaweedfs-volume:9325'
- 'seaweedfs-filer:9326'
- 'seaweedfs-s3:9327'

View File

@@ -1,11 +1,10 @@
networks:
1panel-network:
external: true
seaweedfs-network:
external: true
seaweedfs-network: null
services:
seaweedfs-filer:
command: filer -master="master:9333" -ip.bind=0.0.0.0 -metricsPort=9326
command: filer -master="seaweedfs-master:9333" -ip.bind=0.0.0.0 -metricsPort=9326
container_name: seaweedfs-filer
depends_on:
- seaweedfs-master
@@ -68,7 +67,7 @@ services:
volumes:
- ${SEAWEEDFS_ROOT_PATH}/prometheus:/etc/prometheus
seaweedfs-s3:
command: s3 -filer="filer:8888" -ip.bind=0.0.0.0 -metricsPort=9327
command: s3 -filer="seaweedfs-filer:8888" -ip.bind=0.0.0.0 -metricsPort=9327
container_name: seaweedfs
depends_on:
- seaweedfs-master
@@ -93,7 +92,7 @@ services:
- ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
- ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
seaweedfs-volume:
command: volume -mserver="master:9333" -ip.bind=0.0.0.0 -port=8080 -metricsPort=9325
command: volume -mserver="seaweedfs-master:9333" -ip.bind=0.0.0.0 -port=8080 -metricsPort=9325
container_name: seaweedfs-volume
depends_on:
- seaweedfs-master
@@ -115,7 +114,7 @@ services:
- ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
- ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
seaweedfs-webdav:
command: webdav -filer="filer:8888"
command: webdav -filer="seaweedfs-filer:8888"
container_name: seaweedfs-webdav
depends_on:
- seaweedfs-master