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