2023-07-23 13:14:47 -07:00
|
|
|
# Dynamic DNS Updater
|
|
|
|
|
|
|
|
This script is meant to be added to cron if you are using afraid.org as your
|
|
|
|
dynamic DNS provider. Similar may be possible with sites such as dyn.org or
|
|
|
|
noip.com but are currently not supported in this project. Links to some of these
|
|
|
|
product's self-built solutions can be found below.
|
|
|
|
|
|
|
|
## Afraid.org Version 2 Instructions
|
|
|
|
|
|
|
|
1. Install this project.
|
|
|
|
|
|
|
|
```
|
2025-01-03 07:59:46 -07:00
|
|
|
git clone https://git.hyperling.com/me/env-docker $PROJECT_DIR
|
2023-07-23 13:14:47 -07:00
|
|
|
```
|
|
|
|
|
2023-07-23 14:51:48 -07:00
|
|
|
1. Add your user key to `$PROJECT_DIR/Config/DynamicDNS/private.key`. The key can
|
|
|
|
be found on [this page](https://freedns.afraid.org/dynamic/v2/) after signing in.
|
2023-07-23 13:14:47 -07:00
|
|
|
|
|
|
|
1. Add this line to the system's cron scheduling using a command like `crontab -e`.
|
2023-07-23 14:51:48 -07:00
|
|
|
The sleep waits anywhere from 0 to 55 minutes due to the
|
|
|
|
[Random/10](https://tldp.org/LDP/abs/html/randomvar.html).
|
2023-07-23 13:14:47 -07:00
|
|
|
|
|
|
|
```
|
Add DNS Server, Many Other Fixes/Enhancements (#12)
* Add 443 just in case since docker ps is showing it as active.
* Add two new projects.
* Add pre-testing content for DNS.
* Initial untested stab at the GitLab config.
* This project uses build, image name is not needed.
* Cleanup, untested guess at how to handle the variables in the pipe section.
* Filled out all files for DNS. Ready for testing.
* This seems to work, Ubuntu is hoarding port 53 though even though local services are shut off.
* `dnsmasq` container is testing successfully now.
* Don't allow a run unless the config files exist.
* Correct the crontab entry so that $RANDOM works correctly.
* Certs were not being saved by LetsEncrypt for Nginx correctly. Should be working now.
* Do not allow disabled folders into Git.
* Do not allow disabled folders into Git, 2.
* Do not allow disabled folders into Git, 3.
* Do not allow disabled folders into Git, 4.
* Do not allow disabled folders into Git, 5.
* Do not allow disabled folders into Git, 6.
* Don't add logs from anywhere.
* Add ping and dig to Nextcloud container for troubleshooting.
* Fix tabs.
* Make unfinished suffix consistent.
* Clean whitespace.
* Multiple names for a single IP address.
* Add 2nd example domain from hosts file.
* Add caching program Redis for Nextcloud.
* Add REDIS_HOST variable for automatic setup through config/redis.config.php.
* Upgrade to compose version 3.
* Move OnlyOffice to Nextcloud area.
* Change container name.
* Add container_name to all compose services.
* Shorten names for Nextcloud services.
* Comment possible OO fixes while trying to get container to use DNS.
* Remove OnlyOffice setting tests.
* Do not commit .env files, only their examples.
* Move OnlyOffice to be its own configuration again. Add sourcing of DNS settings so that local traffic routes correctly.
* Fix source file, BASH_SROUCE did not work without the shebang. Also fix bug for when it sees `..` and assumes current directory.
* dns.env file did not work out, env_file: element not being read before dns: element. Using folder-specific .env files instead, seems to be loaded before dns: element. Also move other values to the env files for better password privacy.
* Keep commands for cleaning up environment in one file.
* Update examples.
* Fix cd moving the user to the file's directory.
* Add note for user to set up the env file.
* Replace README files by unhiding the example files.
* Still need to specify the variables in the environment: element.
* Add header variable.
* Place host above database.
* Fix "JWS" typo.
* Do not use the HEADER parameter.
* Add vim to fix packages.
* Forget about the manual DNS servers for a minute, ensure host is set up properly first. Ubuntu is happy but Debian is not.
* Try using the host network explicitly.
* Temporarily give up on having Nextcloud server see local OnlyOffice server. Works when they are different machines but need them together.
2023-08-21 22:07:46 +00:00
|
|
|
@hourly bash -c 'sleep $(( $RANDOM / 10 )); $PROJECT_DIR/Config/DynamicDNS/update_dns.sh'
|
2023-07-23 13:14:47 -07:00
|
|
|
```
|
|
|
|
|
|
|
|
### TESTING
|
|
|
|
|
|
|
|
Please ensure all testing is done with the test or dry run flags. If you run
|
|
|
|
this for your private key outside of your network then your Dynamic DNS may
|
|
|
|
become inaccurate. This program is only intended to be run in a production
|
|
|
|
manner on the network which needs the Dynamic DNS pointing towards it.
|
|
|
|
|
|
|
|
### Example
|
|
|
|
|
|
|
|
```
|
|
|
|
$ ./update_dns.sh -4
|
|
|
|
Updated DOMAIN from 1:2:3:4:5:6:7:8 to 1.2.3.4
|
|
|
|
HTTP200
|
|
|
|
Status 0 is acceptable.
|
|
|
|
```
|
|
|
|
```
|
|
|
|
$ ./update_dns.sh -6
|
|
|
|
Updated DOMAIN from 1.2.3.4 to 1:2:3:4:5:6:7:8
|
|
|
|
HTTP200
|
|
|
|
Status 0 is acceptable.
|
|
|
|
```
|
|
|
|
|
|
|
|
## Afraid.org Version 1 Instructions
|
|
|
|
|
|
|
|
Add one of these to your crontab. Basically what the script does without fancy
|
|
|
|
options and checks. Please be concious of how often you knock on the servers,
|
|
|
|
and preferably add a 30-45 second sleep so that you do not hit near :00 seconds.
|
|
|
|
|
|
|
|
```
|
|
|
|
*/4 * * * * sleep 28; curl http://freedns.afraid.org/dynamic/update.php?YOUR_V1_KEY_GOES_HERE
|
|
|
|
```
|
|
|
|
```
|
|
|
|
*/7 * * * * sleep 42; wget -O http://freedns.afraid.org/dynamic/update.php?YOUR_V1_KEY_GOES_HERE
|
|
|
|
```
|
|
|
|
|
|
|
|
## Other Dynamic DNS Hosts
|
|
|
|
|
|
|
|
### No-IP.org Instructions
|
|
|
|
|
2023-07-23 14:51:48 -07:00
|
|
|
Please see the official guide on installing the Dynamic Update Client (DUC).
|
2023-07-23 13:14:47 -07:00
|
|
|
|
|
|
|
https://my.noip.com/dynamic-dns/duc
|