Headscale Admin App
Go to file
Andrea Mistrali c780b12b74
Gunicorn access log format
2024-08-07 08:17:12 +02:00
app Cleanup unused files and minor change to routes 2024-07-29 16:43:04 +02:00
docker Reorganize repos 2024-07-23 09:22:19 +02:00
.dockerbuild.env Reorganize repos 2024-07-23 09:22:19 +02:00
.dockerignore Reorganize repos 2024-07-23 09:22:19 +02:00
.gitignore Fix for exit node 2024-07-24 17:10:30 +02:00
.python-version First working version 2024-06-27 16:31:55 +02:00
README.md Fix admin groups parsing 2024-07-26 16:40:36 +02:00
TODO.md Fix for exit node 2024-07-24 17:10:30 +02:00
config.py Fixed permissions and referrers 2024-07-29 13:39:25 +02:00
gunicorn.conf.py Gunicorn access log format 2024-08-07 08:17:12 +02:00
poetry.lock Cleanup unused files and minor change to routes 2024-07-29 16:43:04 +02:00
pyproject.toml Gunicorn access log format 2024-08-07 08:17:12 +02:00
wsgi.py Cleanup unused files and minor change to routes 2024-07-29 16:43:04 +02:00

README.md

HSMAN

Headscale admin application

Intro

HSMAN is a Flask application (with some nice javascript) to administer an headscale installation.

Currently it can manage users, nodes, routes, but I plan to add support for managing API keys too.

Deployment

You can run the Flask application as any other Flask app, using flask run inside the root directory, or using gunicorn and the provided gunicorn.conf.py file, or you can build a docker image, using the files inside docker directory and then use the resulting docker image

Settings

There are some settings that must/can be provided to the application:

Variable Usage Default
APPLICATION_ROOT Base URI path for the app /
HSMAN_SECRET_KEY Flask app secret key
HSMAN_ADMIN_GROUPS Comma separated list of user groups that are considered admins
HSMAN_OIDC_CLIENT_ID OIDC client ID
HSMAN_OIDC_CLIENT_SECRET OIDC clietn secret
HSMAN_OIDC_URL OIDC server URL
HSMAN_OIDC_REDIRECT_URI OIDC redirect URI
HSAPI_SERVER Headscale server URL
HSAPI_API_TOKEN API token/key to access headscale server

The last two variables are then fed to hsapi-client, the module that we use to interact with Headscale APIs.

Requirements

So far HSMAN requires to authenticate via OIDC, that is a secure setup, that you should implement on headscale too. You can use your own iDP, like keycloak or dex or use external iDP, like Google or Github, but the setup of this part is left to you, so far, we will document it later.

In the future we could add support to run HSMAN without and iDP/OIDC server, but don't hold your breath ;)