Skip to content

Instantly share code, notes, and snippets.

@NathanGiesbrecht
Last active February 24, 2024 01:32
Show Gist options
  • Save NathanGiesbrecht/da6560f21e55178bcea7fdd9ca2e39b5 to your computer and use it in GitHub Desktop.
Save NathanGiesbrecht/da6560f21e55178bcea7fdd9ca2e39b5 to your computer and use it in GitHub Desktop.
Systemd Service file for no-ip.com dynamic ip updater
# Simple No-ip.com Dynamic DNS Updater
#
# By Nathan Giesbrecht (http://nathangiesbrecht.com)
#
# 1) Install binary as described in no-ip.com's source file (assuming results in /usr/local/bin)
# 2) Run sudo /usr/local/bin/noip2 -C to generate configuration file
# 3) Copy this file noip2.service to /etc/systemd/system/
# 4) Execute `sudo systemctl daemon-reload`
# 5) Execute `sudo systemctl enable noip2`
# 6) Execute `sudo systemctl start noip2`
#
# systemd supports lots of fancy features, look here (and linked docs) for a full list:
# http://www.freedesktop.org/software/systemd/man/systemd.exec.html
[Unit]
Description=No-ip.com dynamic IP address updater
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
Alias=noip.service
[Service]
# Start main service
ExecStart=/usr/local/bin/noip2
Restart=always
Type=forking
@davidrjonas
Copy link

Author of noip-duc v3 here. Great to see the interest!

I like the restart changes, I'll get them incorporated into the package. In 3.0.0-beta.7 (2023-08-08) it will no longer exit if it cannot resolve hostnames for checking the current IP during start up.

As for the configuration, a better way to handle it so that you don't need to put your password in the unit file it to use environment variables and the systemd Service setting EnvironmentFile. Nearly every command line option has an equivalent env var. You can find them all in the help as well as the README.md.

/etc/noip-duc.env

NOIP_USERNAME=example-username
NOIP_PASSWORD=eXamPle-Pas5w0r&
NOIP_HOSTNAMES=h1.example.com,h2.example.com

Addition to unit file

[Service]
EnvironmentFile=/etc/noip-duc.env

By using EnvironmentFile= instead of EnvironmentFile=- the service will not start unless the file exists, in that way the service will not take any resources unless configured.

Please send in other suggestions or recommendations! I'm so happy to see the interest here!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment