mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-13 12:50:32 +01:00
API for adding Extra Domain Records #479
Closed
opened 2025-12-29 02:18:41 +01:00 by adam
·
15 comments
No Branch/Tag Specified
main
update_flake_lock_action
gh-pages
kradalby/release-v0.27.2
dependabot/go_modules/golang.org/x/crypto-0.45.0
dependabot/go_modules/github.com/opencontainers/runc-1.3.3
copilot/investigate-headscale-issue-2788
copilot/investigate-visibility-issue-2788
copilot/investigate-issue-2833
copilot/debug-issue-2846
copilot/fix-issue-2847
dependabot/go_modules/github.com/go-viper/mapstructure/v2-2.4.0
dependabot/go_modules/github.com/docker/docker-28.3.3incompatible
kradalby/cli-experiement3
doc/0.26.1
doc/0.25.1
doc/0.25.0
doc/0.24.3
doc/0.24.2
doc/0.24.1
doc/0.24.0
kradalby/build-docker-on-pr
topic/docu-versioning
topic/docker-kos
juanfont/fix-crash-node-id
juanfont/better-disclaimer
update-contributors
topic/prettier
revert-1893-add-test-stage-to-docs
add-test-stage-to-docs
remove-node-check-interval
fix-empty-prefix
fix-ephemeral-reusable
bug_report-debuginfo
autogroups
logs-to-stderr
revert-1414-topic/fix_unix_socket
rename-machine-node
port-embedded-derp-tests-v2
port-derp-tests
duplicate-word-linter
update-tailscale-1.36
warn-against-apache
ko-fi-link
more-acl-tests
fix-typo-standalone
parallel-nolint
tparallel-fix
rerouting
ssh-changelog-docs
oidc-cleanup
web-auth-flow-tests
kradalby-gh-runner
fix-proto-lint
remove-funding-links
go-1.19
enable-1.30-in-tests
0.16.x
cosmetic-changes-integration
tmp-fix-integration-docker
fix-integration-docker
configurable-update-interval
show-nodes-online
hs2021
acl-syntax-fixes
ts2021-implementation
fix-spurious-updates
unstable-integration-tests
mandatory-stun
embedded-derp
prtemplate-fix
v0.28.0-beta.1
v0.27.2-rc.1
v0.27.1
v0.27.0
v0.27.0-beta.2
v0.27.0-beta.1
v0.26.1
v0.26.0
v0.26.0-beta.2
v0.26.0-beta.1
v0.25.1
v0.25.0
v0.25.0-beta.2
v0.24.3
v0.25.0-beta.1
v0.24.2
v0.24.1
v0.24.0
v0.24.0-beta.2
v0.24.0-beta.1
v0.23.0
v0.23.0-rc.1
v0.23.0-beta.5
v0.23.0-beta.4
v0.23.0-beta3
v0.23.0-beta2
v0.23.0-beta1
v0.23.0-alpha12
v0.23.0-alpha11
v0.23.0-alpha10
v0.23.0-alpha9
v0.23.0-alpha8
v0.23.0-alpha7
v0.23.0-alpha6
v0.23.0-alpha5
v0.23.0-alpha4
v0.23.0-alpha4-docker-ko-test9
v0.23.0-alpha4-docker-ko-test8
v0.23.0-alpha4-docker-ko-test7
v0.23.0-alpha4-docker-ko-test6
v0.23.0-alpha4-docker-ko-test5
v0.23.0-alpha-docker-release-test-debug2
v0.23.0-alpha-docker-release-test-debug
v0.23.0-alpha4-docker-ko-test4
v0.23.0-alpha4-docker-ko-test3
v0.23.0-alpha4-docker-ko-test2
v0.23.0-alpha4-docker-ko-test
v0.23.0-alpha3
v0.23.0-alpha2
v0.23.0-alpha1
v0.22.3
v0.22.2
v0.23.0-alpha-docker-release-test
v0.22.1
v0.22.0
v0.22.0-alpha3
v0.22.0-alpha2
v0.22.0-alpha1
v0.22.0-nfpmtest
v0.21.0
v0.20.0
v0.19.0
v0.19.0-beta2
v0.19.0-beta1
v0.18.0
v0.18.0-beta4
v0.18.0-beta3
v0.18.0-beta2
v0.18.0-beta1
v0.17.1
v0.17.0
v0.17.0-beta5
v0.17.0-beta4
v0.17.0-beta3
v0.17.0-beta2
v0.17.0-beta1
v0.17.0-alpha4
v0.17.0-alpha3
v0.17.0-alpha2
v0.17.0-alpha1
v0.16.4
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.16.0-beta7
v0.16.0-beta6
v0.16.0-beta5
v0.16.0-beta4
v0.16.0-beta3
v0.16.0-beta2
v0.16.0-beta1
v0.15.0
v0.15.0-beta6
v0.15.0-beta5
v0.15.0-beta4
v0.15.0-beta3
v0.15.0-beta2
v0.15.0-beta1
v0.14.0
v0.14.0-beta2
v0.14.0-beta1
v0.13.0
v0.13.0-beta3
v0.13.0-beta2
v0.13.0-beta1
upstream/v0.12.4
v0.12.4
v0.12.3
v0.12.2
v0.12.2-beta1
v0.12.1
v0.12.0-beta2
v0.12.0-beta1
v0.11.0
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.1
v0.6.0
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
CLI
DERP
DNS
Nix
OIDC
SSH
bug
database
documentation
duplicate
enhancement
faq
good first issue
grants
help wanted
might-come
needs design doc
needs investigation
no-stale-bot
out of scope
performance
policy 📝
pull-request
question
regression
routes
stale
tags
tailscale-feature-gap
well described ❤️
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#479
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @athul on GitHub (Apr 20, 2023).
Feature request
Thank you for Headscale. I was trying it out to host a few servers under a single network so that inter server communication don't go unsecure. Some of the servers have their own domain name and magic dns routing always ends up with a SSL error when trying to use
curl. I tried adding the same server as an A record in the config and it works perfectly.The thing is we automate all these stuff and we could use Ansible to write to the config file once a server is added to the tailnet with the domain name and IP but would be great if this was doable via API. We already use the API to fetch details about the machines and the IPs and all those stuff.
Maybe it could be something like
POST:
/api/v1/domains/extraPayload
@loprima-l commented on GitHub (Apr 28, 2023):
Hi, thanks for your FR, won't it be better to try to fix your ssl issue ? And also, if you're using Headscale only between the server, it's not mandatory to use ssl as the communication is already encrypted between your servers.
Can you open an issue to describe your ssl problem a bit more ?
@athul commented on GitHub (May 1, 2023):
Hi,
The SSL issue happens due to the SSL cert present in the end server. It's a name invalid SSL error and this pops up because the ssl cert and the name of the domain(magicdns) I was trying to curl was different.
Elaborating to get a better idea.
SSL cert on server: abc.example.com
MagicDNS domain name: abc
If I just
curl -L abcit will ping the right place but won't return the data from theabc.example.comsince the SSL cert is pointed to abc.exaple.com@loprima-l commented on GitHub (May 1, 2023):
Oh i got it
@loprima-l commented on GitHub (May 1, 2023):
And why don't you redirect all your traffic to abc.example.com ?
@6ixfalls commented on GitHub (May 6, 2023):
Even with the SSL issue resolved, this would still be a great feature to add. It would allow, for example, https://github.com/iFargle/headscale-webui to have a DNS records page, which would make it easy to update the configuration (without having to ssh into the control plane, and changing the configuration file). Of course, it would need to also have listing APIs as well as delete, and since they're already defined in the configuration file they'd have to be migrated or something.
@6ixfalls commented on GitHub (May 6, 2023):
If not (maybe design decisions), it would also be great to separate the DNS configuration from the main configuration, and automatically reload any new DNS configurations, so a control plane restart isn't required to change DNS records.
@loprima-l commented on GitHub (May 6, 2023):
That's a good point I think the DNS API is as important than the ACL API, I will maybe do a PR for this when I got the time, I need to get a little bit more familiar with the code to start it and feel secure and confident.
@juanfont commented on GitHub (May 10, 2023):
This is not a bad idea. We will probably look into it.
@tbjers commented on GitHub (Jul 2, 2023):
For reference, this does not work with Tailscale, either. Even if you use a wildcard cert on Headscale, Let's Encrypt will not generate SANs for
abc, the host IP address, or the Tailnet IP address, for that matter.You would be required to run your own CA server, which then leads to having to distribute the CAs to all clients. That's a pretty massive undertaking and probably out of scope for Headscale/Tailscale.
Maybe there are ways to accomplish this with Smallstep's
step-ca. I am unsure if you can set up policies that will create certs that combineiprules withdnsrules.@github-actions[bot] commented on GitHub (Dec 17, 2023):
This issue is stale because it has been open for 90 days with no activity.
@github-actions[bot] commented on GitHub (Dec 25, 2023):
This issue was closed because it has been inactive for 14 days since being marked as stale.
@stuartm commented on GitHub (Feb 3, 2025):
Is anyone still working on this? Allowing DNS records to be managed via API? This really is a must-have for me so if no-one has made any progress on it I might have to take a look.
Friction point for me, aside from lack of spare time, is zero experience with Go but needs must.
If I were to take this on, would it be better for extra records to be persisted in the database instead of the extra_records json file? I'd be wary of corruption if using the json file directly without any locking (concurrent manual edits).
@kradalby commented on GitHub (Feb 3, 2025):
You can write them to a file and it will automatically be picked up. It isn't in the database, and it will not be added there so it won't make it into an api.
See the latest config or change log for 0.23
See docs for
dns.extra_records_path: https://headscale.net/0.24.2/ref/dns/#setting-extra-dns-records@stuartm commented on GitHub (Feb 3, 2025):
So, Is that an official flat NO to allowing records to be managed through the API?
If it's not too bold a question, why? What's different about this than managing everything else through the API?
@kradalby commented on GitHub (Mar 30, 2025):
@stuartm probably not going to add it to the API, it comes down to where the data is stored, extra records is not in the database, they are a file, and the API doesnt cover that.