[PATCH] doc: cookbook: Document a dynamic DNS update mcron job.

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 27 Jul 2023 04:04
f7009dd274fa1ea405bca1540ec673c1f9f5c12b.1690423479.git.maxim.cournoyer@gmail.com
* doc/guix-cookbook.texi (System Configuration)
<Dynamic DNS mcron job>: New subsection.
---
doc/guix-cookbook.texi | 56 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)

Toggle diff (80 lines)
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
index 2e58c6c795..8e069f921e 100644
--- a/doc/guix-cookbook.texi
+++ b/doc/guix-cookbook.texi
@@ -1460,9 +1460,10 @@ System Configuration
* Customizing the Kernel:: Creating and using a custom Linux kernel on Guix System.
* Guix System Image API:: Customizing images to target specific platforms.
* Using security keys:: How to use security keys with Guix System.
+* Dynamic DNS mcron job:: Job to update the IP address behind a DuckDNS host name.
* Connecting to Wireguard VPN:: Connecting to a Wireguard VPN.
* Customizing a Window Manager:: Handle customization of a Window manager on Guix System.
-* Running Guix on a Linode Server:: Running Guix on a Linode Server
+* Running Guix on a Linode Server:: Running Guix on a Linode Server.
* Setting up a bind mount:: Setting up a bind mount in the file-systems definition.
* Getting substitutes from Tor:: Configuring Guix daemon to get substitutes through Tor.
* Setting up NGINX with Lua:: Configuring NGINX web-server to load Lua modules.
@@ -2022,6 +2023,59 @@ Using security keys
ready to be used with applications supporting two-factor authentication
(2FA).
+@node Dynamic DNS mcron job
+@section Dynamic DNS mcron job
+
+@cindex dynamic DNS, DDNS
+If your @acronym{ISP, Internet Service Provider} only provides dynamic
+IP addresses, it can be useful to setup a dynamic @acronym{DNS, Domain
+Name System} (also known as @acronym{DDNS, Dynamic DNS}) service to
+associate a static host name to a public but dynamic (often changing) IP
+address. There are multiple existing services that can be used for
+this; in the following mcron job, @url{https://duckdns.org, DuckDNS} is
+used. It should also work with other dynamic DNS services that offer a
+similar interface to update the IP address, such as
+@url{https://freedns.afraid.org/}, with minor adjustments.
+
+The mcron job is provided below, where @var{DOMAIN} should be
+substituted for your own domain prefix, and the DuckDNS provided token
+associated to @var{DOMAIN} added to the
+@file{/etc/duckdns/@var{DOMAIN}.token} file.
+
+@lisp
+(define duckdns-job
+ ;; Update personal domain IP every 5 minutes.
+ #~(job '(next-minute (range 0 60 5))
+ #$(program-file
+ "duckdns-update"
+ (with-extensions (list guile-gnutls) ;required by (web client)
+ #~(begin
+ (use-modules (ice-9 textual-ports)
+ (web client))
+ (let ((token (string-trim-both
+ (call-with-input-file "/etc/duckdns/@var{DOMAIN}.token"
+ get-string-all)))
+ (query-template (string-append "https://www.duckdns.org/"
+ "update?domains=@var{DOMAIN}"
+ "&token=~a&ip=")))
+ (http-get (format #f query-template token))))))
+ "duckdns-update"
+ #:user "nobody"))
+@end lisp
+
+The job then needs to be added to the list of mcron jobs for your
+system, using something like:
+
+@lisp
+(operating-system
+ (services
+ (cons* (service mcron-service-type
+ (mcron-configuration
+ (jobs (list duckdns-job ...))))
+ ...
+ %base-services)))
+@end lisp
+
@node Connecting to Wireguard VPN
@section Connecting to Wireguard VPN

base-commit: c7e45139faa27b60f2c7d0a4bc140f9793d97d47
--
2.41.0
L
L
Ludovic Courtès wrote on 16 Aug 2023 22:15
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 64883@debbugs.gnu.org)
87ttsy4uc4.fsf@gnu.org
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (3 lines)
> * doc/guix-cookbook.texi (System Configuration)
> <Dynamic DNS mcron job>: New subsection.

Neat! Looks great to me; there’s a lot of demand for task-oriented
tutorials like this one.

Ludo’.
M
M
Maxim Cournoyer wrote on 17 Aug 2023 05:57
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 64883-done@debbugs.gnu.org)
87il9egw2z.fsf@gmail.com
Hello,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (10 lines)
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> * doc/guix-cookbook.texi (System Configuration)
>> <Dynamic DNS mcron job>: New subsection.
>
> Neat! Looks great to me; there’s a lot of demand for task-oriented
> tutorials like this one.

Great, thanks for reviewing! The change is now installed.

--
Thanks,
Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 64883@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 64883
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch