mirror of
https://github.com/okxlin/appstore.git
synced 2025-07-13 21:02:18 +08:00
feat:添加headscale-ui到列表
This commit is contained in:
parent
5f1a9d0d6b
commit
be2c4b2d4d
128
apps/headscale-ui/README.md
Normal file
128
apps/headscale-ui/README.md
Normal file
@ -0,0 +1,128 @@
|
||||
# 使用说明
|
||||
|
||||
**Headscale 服务器地址,只能用经过域名反向代理的地址。**
|
||||
|
||||
# 原始相关
|
||||
***
|
||||
# Headscale-UI
|
||||
A web frontend for the [headscale](https://github.com/juanfont/headscale) Tailscale-compatible coordination server.
|
||||
|
||||
## Installation
|
||||
Headscale-UI is currently released as a static site: just take the release and host with your favorite web server. Headscale-UI expects to be served from the `/web` path to avoid overlap with headscale on the same domain. Note that due to CORS (see https://github.com/juanfont/headscale/issues/623), headscale UI *must* be served on the same subdomain, or CORS headers injected via reverse proxy.
|
||||
|
||||
### Docker Installation
|
||||
If you are using docker, you can install `headscale` alongside `headscale-ui`, like so:
|
||||
|
||||
```yaml
|
||||
version: '3.5'
|
||||
services:
|
||||
headscale:
|
||||
image: headscale/headscale:latest
|
||||
container_name: headscale
|
||||
volumes:
|
||||
- ./container-config:/etc/headscale
|
||||
- ./container-data/data:/var/lib/headscale
|
||||
# ports:
|
||||
# - 27896:8080
|
||||
command: headscale serve
|
||||
restart: unless-stopped
|
||||
headscale-ui:
|
||||
image: ghcr.io/gurucomputing/headscale-ui:latest
|
||||
restart: unless-stopped
|
||||
container_name: headscale-ui
|
||||
# ports:
|
||||
# - 9443:443
|
||||
```
|
||||
|
||||
Headscale UI serves on port 443 and uses a self signed cert by default. You will need to add a `config.yaml` file under your `container-config` folder so that `headscale` has all of the required settings declared. An example from the official `headscale` repo is [here](https://github.com/juanfont/headscale/blob/main/config-example.yaml).
|
||||
|
||||
### Additional Docker Settings
|
||||
The docker container lets you set the following settings:
|
||||
| Variable | Description | Example |
|
||||
|----|----|----|
|
||||
| HTTP_PORT | Sets the HTTP port to an alternate value | `80` |
|
||||
| HTTPS_PORT | Sets the HTTPS port to an alternate value | `443` |
|
||||
|
||||
### Proxy Settings
|
||||
You will need a reverse proxy to install `headscale-ui` on your domain. Here is an example [Caddy Config](https://caddyserver.com/) to achieve this:
|
||||
```
|
||||
https://hs.yourdomain.com.au {
|
||||
reverse_proxy /web* https://headscale-ui {
|
||||
transport http {
|
||||
tls_insecure_skip_verify
|
||||
}
|
||||
}
|
||||
|
||||
reverse_proxy * http://headscale:8080
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### Cross Domain Installation
|
||||
If you do not want to configure headscale-ui on the same subdomain as headscale, you must intercept headscale traffic via your reverse proxy to fix CORS (see https://github.com/juanfont/headscale/issues/623). Here is an example fix with Caddy, replacing your headscale UI domain with `hs-ui.yourdomain.com.au`:
|
||||
```
|
||||
https://hs.yourdomain.com.au {
|
||||
@hs-options {
|
||||
host hs.yourdomain.com.au
|
||||
method OPTIONS
|
||||
}
|
||||
@hs-other {
|
||||
host hs.yourdomain.com.au
|
||||
}
|
||||
handle @hs-options {
|
||||
header {
|
||||
Access-Control-Allow-Origin https://hs-ui.yourdomain.au
|
||||
Access-Control-Allow-Headers *
|
||||
Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE"
|
||||
}
|
||||
respond 204
|
||||
}
|
||||
handle @hs-other {
|
||||
reverse_proxy http://headscale:8080 {
|
||||
header_down Access-Control-Allow-Origin https://hs-ui.yourdomain.com.au
|
||||
header_down Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE"
|
||||
header_down Access-Control-Allow-Headers *
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Other Configurations
|
||||
See [Other Configurations](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/configuration.md) for further proxy examples, such as Traefik
|
||||
|
||||
## Versioning
|
||||
The following versions correspond to the appropriate headscale version
|
||||
| Headscale Version | HS-UI Version |
|
||||
|-------------------|---------------|
|
||||
| 19+ | 2023-01-30+ |
|
||||
| <19 | <2023-01-30 |
|
||||
|
||||
## Troubleshooting
|
||||
Make sure you are using the latest version of headscale. Headscale-UI is only tested against:
|
||||
|
||||
* The current stable version of headscale
|
||||
* Chrome/Chrome Mobile
|
||||
* Firefox/Firefox Mobile
|
||||
|
||||
Note that while mobile is checked for functionality, the web experience is not mobile optimised.
|
||||
|
||||
If you are getting errors about preflight checks, it's probably CORS related. Make sure your UI sits on the same subdomain as headscale or inject CORS headers.
|
||||
|
||||
### Errors related to "Missing Bearer Prefix"
|
||||
Your API key is either not saved or you haven't configured your reverse proxy. Create an API key in `headscale` (via command line) with `headscale apikeys create` or `docker exec <headscale container> headscale apikeys create` and save it in `settings`.
|
||||
|
||||
HS-UI *has* to be ran on the same subdomain as headscale or you need to configure CORS. Yes you need to use a reverse proxy to do this. Use a reverse proxy. If you are trying to use raw IPs and ports, it *will* not work.
|
||||
|
||||
## Security
|
||||
see [security](https://github.com/gurucomputing/headscale-ui/blob/master/SECURITY.md) for details
|
||||
|
||||
## Development
|
||||
see [development](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/development.md) for details
|
||||
|
||||
## Style Guide
|
||||
see [style](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/style.md) for details
|
||||
|
||||
## Architecture
|
||||
See [architecture](https://github.com/gurucomputing/headscale-ui/blob/master/documentation/architecture.md) for details
|
20
apps/headscale-ui/data.yml
Normal file
20
apps/headscale-ui/data.yml
Normal file
@ -0,0 +1,20 @@
|
||||
name: Headscale-UI
|
||||
tags:
|
||||
- 工具
|
||||
title: Headscale 与 Tailscale 兼容的协调服务器的 Web 前端
|
||||
type: 工具
|
||||
description: Headscale 与 Tailscale 兼容的协调服务器的 Web 前端
|
||||
additionalProperties:
|
||||
key: headscale-ui
|
||||
name: Headscale-UI
|
||||
tags:
|
||||
- Tool
|
||||
shortDescZh: Headscale 与 Tailscale 兼容的协调服务器的 Web 前端
|
||||
shortDescEn: A web frontend for the headscale Tailscale-compatible coordination server
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
recommend: 0
|
||||
website: https://github.com/gurucomputing/headscale-ui
|
||||
github: https://github.com/gurucomputing/headscale-ui
|
||||
document: https://github.com/gurucomputing/headscale-ui
|
2
apps/headscale-ui/latest/.env.sample
Normal file
2
apps/headscale-ui/latest/.env.sample
Normal file
@ -0,0 +1,2 @@
|
||||
CONTAINER_NAME="headscale-ui"
|
||||
PANEL_APP_PORT_HTTPS="40182"
|
10
apps/headscale-ui/latest/data.yml
Normal file
10
apps/headscale-ui/latest/data.yml
Normal file
@ -0,0 +1,10 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: 40182
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTPS
|
||||
labelEn: Port
|
||||
labelZh: 端口
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
16
apps/headscale-ui/latest/docker-compose.yml
Normal file
16
apps/headscale-ui/latest/docker-compose.yml
Normal file
@ -0,0 +1,16 @@
|
||||
version: '3'
|
||||
services:
|
||||
headscale-ui:
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_HTTPS}:443"
|
||||
image: ghcr.io/gurucomputing/headscale-ui:latest
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
BIN
apps/headscale-ui/logo.png
Normal file
BIN
apps/headscale-ui/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Loading…
Reference in New Issue
Block a user