GithubHelp home page GithubHelp logo

docker-duckdns's Introduction

linuxserver.io

Blog Discord Discourse Fleet GitHub Open Collective

The LinuxServer.io team brings you another container release featuring:

  • regular and timely application updates
  • easy user mappings (PGID, PUID)
  • custom base image with s6 overlay
  • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
  • regular security updates

Find us at:

  • Blog - all the things you can do with our containers including How-To guides, opinions and much more!
  • Discord - realtime support / chat with the community and the team.
  • Discourse - post on our community forum.
  • Fleet - an online web interface which displays all of our maintained images.
  • GitHub - view the source for all of our repositories.
  • Open Collective - please consider helping us by either donating or contributing to our budget

Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.

duckdns

Supported Architectures

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag
x86-64 amd64-<version tag>
arm64 arm64v8-<version tag>
armhf

Application Setup

  • Go to the duckdns website, register your subdomain(s) and retrieve your token.
  • Create a container with your subdomain(s) and token. If you own user.duckdns.org, you set SUBDOMAINS=user. You would NOT set a sub subdomain like overseerr from overseerr.user.ducksdns.org.
  • It will update your IP with the DuckDNS service every 5 minutes (with a random jitter).

Notice regarding automatic detection

Using the UPDATE_IP variable whatever its value (ipv4, ipv6 or both) uses external Cloudflare whoami service to detect public IP addresses. Be aware that using this variable will query a third-party service other than DuckDNS.

Omitting the UPDATE_IP variable uses DuckDNS for detection and only supports IPv4.

Read-Only Operation

This image can be run with a read-only container filesystem. For details please read the docs.

Usage

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

docker-compose (recommended, click here for more info)

---
services:
  duckdns:
    image: lscr.io/linuxserver/duckdns:latest
    container_name: duckdns
    network_mode: host #optional
    environment:
      - PUID=1000 #optional
      - PGID=1000 #optional
      - TZ=Etc/UTC #optional
      - SUBDOMAINS=subdomain1,subdomain2
      - TOKEN=token
      - UPDATE_IP=ipv4 #optional
      - LOG_FILE=false #optional
    volumes:
      - /path/to/duckdns/config:/config #optional
    restart: unless-stopped
docker run -d \
  --name=duckdns \
  --net=host `#optional` \
  -e PUID=1000 `#optional` \
  -e PGID=1000 `#optional` \
  -e TZ=Etc/UTC `#optional` \
  -e SUBDOMAINS=subdomain1,subdomain2 \
  -e TOKEN=token \
  -e UPDATE_IP=ipv4 `#optional` \
  -e LOG_FILE=false `#optional` \
  -v /path/to/duckdns/config:/config `#optional` \
  --restart unless-stopped \
  lscr.io/linuxserver/duckdns:latest

Parameters

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function
--net=host Use host networking for IPv6 detection
-e PUID=1000 for UserID - see below for explanation
-e PGID=1000 for GroupID - see below for explanation
-e TZ=Etc/UTC specify a timezone to use, see this list.
-e SUBDOMAINS=subdomain1,subdomain2 multiple subdomains allowed, comma separated, no spaces, if your domain is user.duckdns.org you put user, not a sub-subdomain
-e TOKEN=token DuckDNS token
-e UPDATE_IP=ipv4 Set to ipv6 or ipv4 to update only your public IPv4/6 address. Set to both to update IPv6 and IPv4 address. This variable makes use of a third-party service. Omitting this variable uses DuckDNS for detection and only supports IPv4. both and ipv6 modes needs host networking.
-e LOG_FILE=false Set to true to log to file (also need to map /config).
-v /config Persistent config files. Also set LOG_FILE=true to keep address history.
--read-only=true Run container with a read-only filesystem. Please read the docs.

Environment variables from files (Docker secrets)

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

Umask for running applications

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

User / Group Identifiers

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)

You only need to set the PUID and PGID variables if you are mounting the /config folder

Docker Mods

Docker Mods Docker Universal Mods

We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

Support Info

  • Shell access whilst the container is running:

    docker exec -it duckdns /bin/bash
  • To monitor the logs of the container in realtime:

    docker logs -f duckdns
  • Container version number:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' duckdns
  • Image version number:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/duckdns:latest

Updating Info

Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.

Below are the instructions for updating containers:

Via Docker Compose

  • Update images:

    • All images:

      docker-compose pull
    • Single image:

      docker-compose pull duckdns
  • Update containers:

    • All containers:

      docker-compose up -d
    • Single container:

      docker-compose up -d duckdns
  • You can also remove the old dangling images:

    docker image prune

Via Docker Run

  • Update the image:

    docker pull lscr.io/linuxserver/duckdns:latest
  • Stop the running container:

    docker stop duckdns
  • Delete the container:

    docker rm duckdns
  • Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved)

  • You can also remove the old dangling images:

    docker image prune

Image Update Notifications - Diun (Docker Image Update Notifier)

tip: We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

Building locally

If you want to make local modifications to these images for development purposes or just to customize the logic:

git clone https://github.com/linuxserver/docker-duckdns.git
cd docker-duckdns
docker build \
  --no-cache \
  --pull \
  -t lscr.io/linuxserver/duckdns:latest .

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

  • 24.06.24: - Rebase to Alpine 3.20.
  • 17.06.24: - Bump CI_DELAY to 120 seconds as ARM builds were failing.
  • 30.03.24: - Added IP address to logging output when IP changes.
  • 23.12.23: - Rebase to Alpine 3.19.
  • 14.10.23: - Rework shell script for case insensitivity and update readme to be more clear.
  • 13.10.23: - Add support for public IPv6 address update using Cloudflare.
  • 25.05.23: - Rebase to Alpine 3.18, deprecate armhf.
  • 02.03.23: - Rework shell scripts and cron logic.
  • 13.02.23: - Rebase to alpine 3.17.
  • 23.09.22: - Rebase to alpine 3.16 and s6v3.
  • 19.09.22: - Rebase to alpine 3.15.
  • 17.05.22: - Don't allow insecure connections and add timeout.
  • 17.05.22: - Add random jitter to update time.
  • 23.02.22: - Append to log file instead of overwriting every time.
  • 03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting.
  • 23.01.21: - Rebasing to alpine 3.13.
  • 01.06.20: - Rebasing to alpine 3.12.
  • 13.04.20: - Add donation links for DuckDNS.
  • 19.12.19: - Rebasing to alpine 3.11.
  • 24.09.19: - Fix perms on github and remove chmod that can stall the container.
  • 28.06.19: - Rebasing to alpine 3.10.
  • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
  • 22.02.19: - Rebasing to alpine 3.9.
  • 08.02.19: - Update readme with optional parameters.
  • 10.12.18: - Fix docker compose example.
  • 15.10.18: - Multi-arch image.
  • 22.08.18: - Rebase to alpine 3.8.
  • 08.12.17: - Rebase to alpine 3.7.
  • 28.05.17: - Rebase to alpine 3.6.
  • 09.02.17: - Rebase to alpine 3.5.
  • 17.11.16: - Initial release.

docker-duckdns's People

Contributors

aptalca avatar chbmb avatar drizuid avatar gilbn avatar homerr avatar j0nnymoe avatar janniklasrose avatar linuxserver-ci avatar nemchik avatar p0lycarpio avatar roxedus avatar sparklyballs avatar thelamer avatar thespad avatar tobbenb avatar ukkopahis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-duckdns's Issues

[Feature Request]: Ability to use a single DuckDNS updater with multiple User Accounts

linuxserver.io


Desired Behavior

I recently had a new user come into my home. They use DuckDNS as well.
I have had to import their settings into my NGINX Proxy Manager to get their stuff to work alongside my own.
I was wondering if there could be a way to combine the DuckDNS Updater to work with more than 1 account.
I don't want to merge our DuckDNSes as they will only be here for 6 months.
I know this is an unusual use-case, but I'm sure other people will have other reasons to need it as well.

Current Behavior

DuckDNS updater only works with a single user account

Alternatives Considered

We are currently using 2 separate machines running 2 separate instances of DuckDNS Updater.
This is working fine, but has a few negatives.

  1. Their system is not on all the time, so any redirects from NGINX, handled by my NGINX, will be set to display an "Offline" page when not available. If the DNS updates while they are offline their pages will be going somewhere else that we have no control of which can be a security concern.
  2. There may be an issue if our systems are connecting at the same time to update
  3. Though small the resource usage of running 2 separate instances is more than running a single instance

[FEAT] (Not Completed) healthcheck to be added to docker-compose

Is this a new feature request?

  • I have searched the existing issues

Wanted change

I addition to the docs on how to add a heathcheck to the docker-compose that would check the current IP of one of the IPs in the SUBDOMAINS variable & check if it is the same as the current WAN IP

        current_ip=$(curl -s https://icanhazip.com)
        duckdns_ip=$(nslookup $SUBDOMAINS.duckdns.org 8.8.8.8 | awk '/^Address: /{print $2}')

& determine if the IP is the same.

A Simple healthcheck If the IPs are the same the container is healthy, if not the container is not working.

Reason for change

The container has no healthcheck,

Proposed code change

No response

request / ipv64.net

Is this a new feature request?

  • I have searched the existing issues

Wanted change

can you implement also ipv64.net?

Reason for change

its nice to have an backup :)

Proposed code change

No response

Cannot get a working instance on Raspberry Pi 3b

First thanks for all your work. This is a great way for me to run my DDNS instance once I get it working :)

Hardware - Raspberry Pi 3b
Software - Rapsbian Buster latest

Steps to replicate:
Prerequisites : Docker & Raspbian Buster Lite

  1. Execute the command laid out in the readme
docker create \
  --name=duckdns \
  -e PUID=1000  \
  -e PGID=1000  \
  -e TZ=Europe/London \
  -e SUBDOMAINS=mysubdomain \
  -e TOKEN=mytoken \
  --restart unless-stopped \
  linuxserver/duckdns:arm32v7-latest

2, Execute the command to start the container

docker start duckdns

Expected results:
A working container that updates my duckdns with my current ip

Actual results:
A container that does not appear to do anything

Docker logs:

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 10-adduser: executing...

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
We gratefully accept donations at:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    1000
User gid:    1000
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 40-config: executing...
Retrieving subdomain and token from the environment variables
log will be output to docker log
Something went wrong, please check your settings  Wed Aug 7 00:35:07 BST 2019
[cont-init.d] 40-config: exited 0.
[cont-init.d] 99-custom-files: executing...
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.

linuxserver.io

Automatically determine if app.conf exists in 40-config

DuckDNS: Automatically determine if app.conf exists in 40-config. This would allow the user to specify there config through command line args or by extending the base image and copying the file over. This would mean the user would not need to pass token or domains through command line interface. I could submit PR if thought to be a good idea!

Error loading shared library libreadline.so.8: Operation not permitted (needed by /docker-mods)

linuxserver.io


Expected Behavior

Duckdns starts well.

Current Behavior

The docker reboots itself after failing to start

Steps to Reproduce

  1. docker pull linuxserver/duckdns:latest or docker pull linuxserver/duckdns:version-f4bef86c
    2./usr/bin/docker run --name=duckdns -e PUID=1000 -e PGID=1000 -e SUBDOMAINS=subdomain_to_renew -e TOKEN=token -v /etc/localtime:/etc/localtime:ro linuxserver/duckdns:latest

Environment

OS: Debian
CPU architecture: armv7l
How docker service was installed: from the official docker repo

Command used to create docker container (run/create/compose/screenshot)

/usr/bin/docker run --name=duckdns -e PUID=1000 -e PGID=1000 -e SUBDOMAINS=subdomain_to_renew -e TOKEN=token -v /etc/localtime:/etc/localtime:ro linuxserver/duckdns:latest

I've tried without the PUID and PGID with the same result.

Docker logs

Error loading shared library libreadline.so.8: Operation not permitted (needed by /docker-mods)
Error relocating /docker-mods: unstifle_history: symbol not found
Error relocating /docker-mods: rl_make_bare_keymap: symbol not found
Error relocating /docker-mods: rl_bind_key_if_unbound_in_map: symbol not found
Error relocating /docker-mods: rl_macro_dumper: symbol not found
Error relocating /docker-mods: previous_history: symbol not found
Error relocating /docker-mods: rl_vi_end_word: symbol not found
Error relocating /docker-mods: rl_parse_and_bind: symbol not found
Error relocating /docker-mods: rl_redisplay: symbol not found
Error relocating /docker-mods: rl_push_macro_input: symbol not found
Error relocating /docker-mods: rl_bind_key_in_map: symbol not found
Error relocating /docker-mods: clear_history: symbol not found
Error relocating /docker-mods: add_history: symbol not found
Error relocating /docker-mods: rl_redraw_prompt_last_line: symbol not found
Error relocating /docker-mods: rl_filename_completion_function: symbol not found
Error relocating /docker-mods: rl_function_of_keyseq_len: symbol not found
Error relocating /docker-mods: history_get: symbol not found
Error relocating /docker-mods: rl_get_keymap: symbol not found
Error relocating /docker-mods: rl_kill_text: symbol not found
Error relocating /docker-mods: remove_history: symbol not found
Error relocating /docker-mods: history_truncate_file: symbol not found
Error relocating /docker-mods: rl_generic_bind: symbol not found
Error relocating /docker-mods: rl_read_key: symbol not found
Error relocating /docker-mods: read_history: symbol not found
Error relocating /docker-mods: rl_add_defun: symbol not found
Error relocating /docker-mods: history_expand: symbol not found
Error relocating /docker-mods: rl_newline: symbol not found
Error relocating /docker-mods: rl_translate_keyseq: symbol not found
Error relocating /docker-mods: rl_forced_update_display: symbol not found
Error relocating /docker-mods: rl_read_init_file: symbol not found
Error relocating /docker-mods: rl_insert: symbol not found
Error relocating /docker-mods: rl_invoking_keyseqs: symbol not found
Error relocating /docker-mods: append_history: symbol not found
Error relocating /docker-mods: free_history_entry: symbol not found
Error relocating /docker-mods: rl_unbind_key_in_map: symbol not found
Error relocating /docker-mods: rl_set_signals: symbol not found
Error relocating /docker-mods: readline: symbol not found
Error relocating /docker-mods: rl_variable_value: symbol not found
Error relocating /docker-mods: history_set_pos: symbol not found
Error relocating /docker-mods: rl_unbind_function_in_map: symbol not found
Error relocating /docker-mods: read_history_range: symbol not found
Error relocating /docker-mods: history_is_stifled: symbol not found
Error relocating /docker-mods: rl_menu_complete: symbol not found
Error relocating /docker-mods: stifle_history: symbol not found
Error relocating /docker-mods: replace_history_entry: symbol not found
Error relocating /docker-mods: rl_insert_text: symbol not found
Error relocating /docker-mods: rl_get_keymap_by_name: symbol not found
Error relocating /docker-mods: rl_set_screen_size: symbol not found
Error relocating /docker-mods: rl_clear_signals: symbol not found
Error relocating /docker-mods: rl_vi_bWord: symbol not found
Error relocating /docker-mods: rl_get_termcap: symbol not found
Error relocating /docker-mods: rl_begin_undo_group: symbol not found
Error relocating /docker-mods: rl_ding: symbol not found
Error relocating /docker-mods: where_history: symbol not found
Error relocating /docker-mods: rl_delete_text: symbol not found
Error relocating /docker-mods: rl_function_of_keyseq: symbol not found
Error relocating /docker-mods: rl_bind_keyseq: symbol not found
Error relocating /docker-mods: rl_reset_terminal: symbol not found
Error relocating /docker-mods: history_tokenize: symbol not found
Error relocating /docker-mods: rl_forward_word: symbol not found
Error relocating /docker-mods: rl_copy_text: symbol not found
Error relocating /docker-mods: rl_function_dumper: symbol not found
Error relocating /docker-mods: _rl_find_next_mbchar: symbol not found
Error relocating /docker-mods: rl_vi_insertion_mode: symbol not found
Error relocating /docker-mods: rl_end_undo_group: symbol not found
Error relocating /docker-mods: rl_variable_bind: symbol not found
Error relocating /docker-mods: rl_named_function: symbol not found
Error relocating /docker-mods: rl_initialize: symbol not found
Error relocating /docker-mods: rl_vi_start_inserting: symbol not found
Error relocating /docker-mods: rl_complete: symbol not found
Error relocating /docker-mods: rl_complete_internal: symbol not found
Error relocating /docker-mods: history_list: symbol not found
Error relocating /docker-mods: tilde_expand: symbol not found
Error relocating /docker-mods: rl_funmap_names: symbol not found
Error relocating /docker-mods: rl_set_keymap: symbol not found
Error relocating /docker-mods: rl_variable_dumper: symbol not found
Error relocating /docker-mods: rl_bind_keyseq_in_map: symbol not found
Error relocating /docker-mods: write_history: symbol not found
Error relocating /docker-mods: rl_on_new_line: symbol not found
Error relocating /docker-mods: rl_clear_visible_line: symbol not found
Error relocating /docker-mods: rl_completion_matches: symbol not found
Error relocating /docker-mods: rl_completion_mode: symbol not found
Error relocating /docker-mods: rl_add_undo: symbol not found
Error relocating /docker-mods: rl_cleanup_after_signal: symbol not found
Error relocating /docker-mods: rl_list_funmap_names: symbol not found
Error relocating /docker-mods: using_history: symbol not found
Error relocating /docker-mods: history_get_time: symbol not found
Error relocating /docker-mods: remove_history_range: symbol not found
Error relocating /docker-mods: rl_crlf: symbol not found
Error relocating /docker-mods: history_length: symbol not found
Error relocating /docker-mods: rl_completion_found_quote: symbol not found
Error relocating /docker-mods: rl_completion_type: symbol not found
Error relocating /docker-mods: rl_point: symbol not found
Error relocating /docker-mods: history_lines_written_to_file: symbol not found
Error relocating /docker-mods: history_max_entries: symbol not found
Error relocating /docker-mods: history_write_timestamps: symbol not found
Error relocating /docker-mods: rl_completion_suppress_quote: symbol not found
Error relocating /docker-mods: rl_basic_word_break_characters: symbol not found
Error relocating /docker-mods: rl_mark: symbol not found
Error relocating /docker-mods: rl_directory_rewrite_hook: symbol not found
Error relocating /docker-mods: rl_emacs_editing_mode: symbol not found
Error relocating /docker-mods: rl_end: symbol not found
Error relocating /docker-mods: rl_directory_completion_hook: symbol not found
Error relocating /docker-mods: rl_completer_word_break_characters: symbol not found
Error relocating /docker-mods: rl_dispatching: symbol not found
Error relocating /docker-mods: rl_filename_completion_function: symbol not found
Error relocating /docker-mods: rl_filename_quoting_desired: symbol not found
Error relocating /docker-mods: history_search_delimiter_chars: symbol not found
Error relocating /docker-mods: rl_executing_keyseq: symbol not found
Error relocating /docker-mods: rl_key_sequence_length: symbol not found
Error relocating /docker-mods: rl_filename_dequoting_function: symbol not found
Error relocating /docker-mods: rl_filename_rewrite_hook: symbol not found
Error relocating /docker-mods: rl_filename_stat_hook: symbol not found
Error relocating /docker-mods: rl_tilde_expand: symbol not found
Error relocating /docker-mods: vi_insertion_keymap: symbol not found
Error relocating /docker-mods: rl_newline: symbol not found
Error relocating /docker-mods: rl_vi_editing_mode: symbol not found
Error relocating /docker-mods: rl_prep_term_function: symbol not found
Error relocating /docker-mods: rl_menu_completion_entry_function: symbol not found
Error relocating /docker-mods: rl_attempted_completion_function: symbol not found
Error relocating /docker-mods: history_comment_char: symbol not found
Error relocating /docker-mods: rl_username_completion_function: symbol not found
Error relocating /docker-mods: rl_insert: symbol not found
Error relocating /docker-mods: rl_filename_completion_desired: symbol not found
Error relocating /docker-mods: rl_done: symbol not found
Error relocating /docker-mods: rl_tab_insert: symbol not found
Error relocating /docker-mods: rl_completion_append_character: symbol not found
Error relocating /docker-mods: rl_sort_completion_matches: symbol not found
Error relocating /docker-mods: history_lines_read_from_file: symbol not found
Error relocating /docker-mods: emacs_ctlx_keymap: symbol not found
Error relocating /docker-mods: rl_deprep_term_function: symbol not found
Error relocating /docker-mods: rl_editing_mode: symbol not found
Error relocating /docker-mods: tilde_additional_prefixes: symbol not found
Error relocating /docker-mods: rl_menu_complete: symbol not found
Error relocating /docker-mods: history_subst_char: symbol not found
Error relocating /docker-mods: rl_readline_state: symbol not found
Error relocating /docker-mods: rl_attempted_completion_over: symbol not found
Error relocating /docker-mods: vi_movement_keymap: symbol not found
Error relocating /docker-mods: rl_filename_quote_characters: symbol not found
Error relocating /docker-mods: rl_filename_quoting_function: symbol not found
Error relocating /docker-mods: history_quotes_inhibit_expansion: symbol not found
Error relocating /docker-mods: rl_readline_name: symbol not found
Error relocating /docker-mods: rl_line_buffer: symbol not found
Error relocating /docker-mods: emacs_meta_keymap: symbol not found
Error relocating /docker-mods: rl_char_is_quoted_p: symbol not found
Error relocating /docker-mods: rl_completion_entry_function: symbol not found
Error relocating /docker-mods: rl_last_func: symbol not found
Error relocating /docker-mods: rl_ignore_some_completions_function: symbol not found
Error relocating /docker-mods: rl_completion_invoking_key: symbol not found
Error relocating /docker-mods: rl_instream: symbol not found
Error relocating /docker-mods: tilde_expansion_preexpansion_hook: symbol not found
Error relocating /docker-mods: rl_yank_last_arg: symbol not found
Error relocating /docker-mods: tilde_additional_suffixes: symbol not found
Error relocating /docker-mods: rl_completion_suppress_append: symbol not found
Error relocating /docker-mods: history_inhibit_expansion_function: symbol not found
Error relocating /docker-mods: rl_completer_quote_characters: symbol not found
Error relocating /docker-mods: rl_completion_quote_character: symbol not found
Error relocating /docker-mods: history_base: symbol not found
Error relocating /docker-mods: rl_terminal_name: symbol not found
Error relocating /docker-mods: history_expansion_char: symbol not found
Error relocating /docker-mods: rl_outstream: symbol not found
Error relocating /docker-mods: emacs_standard_keymap: symbol not found
Error relocating /docker-mods: rl_startup_hook: symbol not found
Error relocating /docker-mods: history_quoting_state: symbol not found
Error relocating /docker-mods: rl_signal_event_hook: symbol not found
Error relocating /docker-mods: rl_special_prefixes: symbol not found
Error relocating /docker-mods: rl_explicit_arg: symbol not found
Error relocating /docker-mods: rl_num_chars_to_read: symbol not found
Error relocating /docker-mods: rl_completion_mark_symlink_dirs: symbol not found
Error relocating /docker-mods: rl_complete: symbol not found
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-envfile: executing... 
Error loading shared library libreadline.so.8: Operation not permitted (needed by /var/run/s6/etc/cont-init.d/01-envfile)
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: unstifle_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_make_bare_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_bind_key_if_unbound_in_map: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_macro_dumper: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: previous_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_vi_end_word: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_parse_and_bind: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_redisplay: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_push_macro_input: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_bind_key_in_map: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: clear_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: add_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_redraw_prompt_last_line: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_completion_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_function_of_keyseq_len: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_get: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_get_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_kill_text: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: remove_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_truncate_file: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_generic_bind: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_read_key: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: read_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_add_defun: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_expand: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_newline: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_translate_keyseq: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_forced_update_display: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_read_init_file: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_insert: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_invoking_keyseqs: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: append_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: free_history_entry: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_unbind_key_in_map: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_set_signals: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: readline: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_variable_value: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_set_pos: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_unbind_function_in_map: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: read_history_range: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_is_stifled: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_menu_complete: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: stifle_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: replace_history_entry: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_insert_text: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_get_keymap_by_name: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_set_screen_size: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_clear_signals: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_vi_bWord: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_get_termcap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_begin_undo_group: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_ding: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: where_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_delete_text: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_function_of_keyseq: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_bind_keyseq: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_reset_terminal: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_tokenize: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_forward_word: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_copy_text: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_function_dumper: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: _rl_find_next_mbchar: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_vi_insertion_mode: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_end_undo_group: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_variable_bind: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_named_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_initialize: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_vi_start_inserting: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_complete: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_complete_internal: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_list: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: tilde_expand: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_funmap_names: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_set_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_variable_dumper: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_bind_keyseq_in_map: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: write_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_on_new_line: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_clear_visible_line: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_matches: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_mode: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_add_undo: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_cleanup_after_signal: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_list_funmap_names: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: using_history: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_get_time: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: remove_history_range: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_crlf: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_length: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_found_quote: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_type: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_point: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_lines_written_to_file: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_max_entries: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_write_timestamps: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_suppress_quote: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_basic_word_break_characters: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_mark: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_directory_rewrite_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_emacs_editing_mode: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_end: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_directory_completion_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completer_word_break_characters: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_dispatching: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_completion_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_quoting_desired: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_search_delimiter_chars: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_executing_keyseq: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_key_sequence_length: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_dequoting_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_rewrite_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_stat_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_tilde_expand: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: vi_insertion_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_newline: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_vi_editing_mode: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_prep_term_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_menu_completion_entry_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_attempted_completion_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_comment_char: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_username_completion_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_insert: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_completion_desired: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_done: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_tab_insert: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_append_character: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_sort_completion_matches: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_lines_read_from_file: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: emacs_ctlx_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_deprep_term_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_editing_mode: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: tilde_additional_prefixes: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_menu_complete: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_subst_char: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_readline_state: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_attempted_completion_over: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: vi_movement_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_quote_characters: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_filename_quoting_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_quotes_inhibit_expansion: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_readline_name: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_line_buffer: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: emacs_meta_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_char_is_quoted_p: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_entry_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_last_func: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_ignore_some_completions_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_invoking_key: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_instream: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: tilde_expansion_preexpansion_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_yank_last_arg: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: tilde_additional_suffixes: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_suppress_append: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_inhibit_expansion_function: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completer_quote_characters: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_quote_character: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_base: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_terminal_name: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_expansion_char: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_outstream: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: emacs_standard_keymap: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_startup_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: history_quoting_state: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_signal_event_hook: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_special_prefixes: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_explicit_arg: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_num_chars_to_read: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_completion_mark_symlink_dirs: symbol not found
Error relocating /var/run/s6/etc/cont-init.d/01-envfile: rl_complete: symbol not found
[cont-init.d] 01-envfile: exited 127.
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

error: error opening state file /var/lib/logrotate.status: Permission denied

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Logs for container duckdns show the following error:

[custom-init] No custom services found, skipping...
[migrations] started
[migrations] no migrations found

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
-------------------------------------

To support the app dev(s) visit:
DuckDNS: https://www.patreon.com/user?u=3209735

To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    1000
User gid:    1000
-------------------------------------

Retrieving subdomain and token from the environment variables
log will be output to file
Your IP was updated at Sat Jan 14 01:06:40 MST 2023
[custom-init] No custom files found, skipping...
[ls.io-init] done.
error: error opening state file /var/lib/logrotate.status: Permission denied

Container is still updating DNS:

$ tail config/duck.log
Your IP was updated at Sun Jan 15 09:17:01 MST 2023
Your IP was updated at Sun Jan 15 09:22:00 MST 2023
Your IP was updated at Sun Jan 15 09:27:01 MST 2023
Your IP was updated at Sun Jan 15 09:32:00 MST 2023
Your IP was updated at Sun Jan 15 09:37:01 MST 2023
Your IP was updated at Sun Jan 15 09:42:00 MST 2023
Your IP was updated at Sun Jan 15 09:47:03 MST 2023
Your IP was updated at Sun Jan 15 09:52:00 MST 2023
Your IP was updated at Sun Jan 15 09:57:01 MST 2023
Your IP was updated at Sun Jan 15 10:02:00 MST 2023

Expected Behavior

No errors with calling logrotate function.

Steps To Reproduce

  1. Run container with docker compose
  2. Wait until file duck.log is full
  3. Observe message

Environment

- OS: Debian GNU/Linux 11 (bullseye)
- How docker service was installed: linuxserver/duckdns:latest

Process used to create container:

cd /srv/duckdns
nano .env # Update environment variables
docker compose --file /srv/duckdns/docker-compose.yml up --detach
docker exec duckdns-[hostname] env
docker container inspect duckdns-[hostname] -f '{{range .Mounts}}{{.Type}}:{{.Source}}:{{.Destination}}{{println}}{{ end }}'
docker logs duckdns-[hostname]


### CPU architecture

arm64

### Docker creation

```bash
### docker-compose.yml file:

$ cat docker-compose.yml
version: '2.1'
services:
  duckdns:
    image: linuxserver/duckdns:latest
    container_name: duckdns-${HOSTNAME}
    hostname: ${HOSTNAME}
    domainname: ${DOMAINNAME}
    dns: ${DNS}
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - SUBDOMAINS=${SUBDOMAINS}
      - TOKEN=${TOKEN}
      - LOG_FILE=true
    volumes:
      - ${APPDATA}:/config
    networks:
      id-overlay:
        ipv4_address: ${IPV4_ADDRESS}
    restart: unless-stopped
networks:
  id-overlay:
    name: id-overlay
    external: true

.env file:

$ cat .env
# Host specifics
HOSTNAME=[hostname]
DOMAINNAME=[domain]
DNS=[dns]
IPV4_ADDRESS=[ipv4_address]
# User ID and Group ID
PUID=1000
PGID=1000
# Timezone from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=America/Edmonton
# Directory locations
APPDATA=/srv/duckdns/config
# Container specifics
SUBDOMAINS=[subdomain]
TOKEN=[token]


### Container logs

```bash
logrotate.status location:

$ docker exec duckdns-[hostname] ls -lha /var/lib
total 28K
drwxr-xr-x 1 root root 4.0K Jan 15 02:00 .
drwxr-xr-x 1 root root 4.0K Dec 26 23:29 ..
drwxr-xr-x 2 root root 4.0K Dec 26 23:29 apk
-rw-r----- 1 root root   66 Jan 15 02:00 logrotate.status
drwxr-xr-x 2 root root 4.0K Dec 26 23:29 misc
drwxr-xr-x 2 root root 4.0K Dec 26 23:29 udhcpd

logrotate.status content:

$ docker exec duckdns-[hostname] cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/acpid.log" 2023-1-14-2:0:0

[FEAT] Log IP address that was sent to duckdns.org

Is this a new feature request?

  • I have searched the existing issues

Wanted change

I would like to be able to see IP address that was sent to duckdns.org in the log of the container. It would be fine to only add this extended logging upon setting of ENV variable (i.e. EXTENDED_LOGING_ENABLED) for extending logging.

Reason for change

This would allow me to detect when the change of IP has happened and could relate it to small hiccups that are happening to instance of a service that I run in my network.

Proposed code change

change in https://github.com/linuxserver/docker-duckdns/blob/master/root/app/duck.sh

echo "Your IP was updated at $(date). IPV4 is ${IPV4} and IPV6 is ${IPV6}"

I would provide PR to only log IPV4 or IPV6 or both based on configured option of UPDATE_IP variable.

TZ variable not working on arm32v7-latest

  • I noticed this issue on the arm32v7-latest image (arm32v7-3a3f0388-ls70).
  • Logs showed "something went wrong.."
  • While looking more into it I noticed the time inside the container was incorrect even though I had the correct TZ environment variable
  • TZ=America/Los_Angeles
  • Fixed it by reverting to an older version (arm32v7-ce996582-ls65) of the image which worked great

Expected Behavior

Date inside container on version arm32v7-ce996582-ls65: Sat Mar 27 07:06:43 2021

Current Behavior

Date inside the container: Wed Dec 31 16:00:00 PST 1969

Environment

**OS: Raspberry Pi OS Lite
CPU architecture: arm32
**How docker service was installed: from the official docker repo

Command used to create docker container (run/create/compose/screenshot)

docker run -d
--name=duckdns
-e PUID=1000
-e PGID=1000
-e TZ=America/Los_Angeles
-e SUBDOMAINS=******
-e TOKEN=*************
-e LOG_FILE=true
-v /home/pi/docker/duckdns:/config
--restart unless-stopped
ghcr.io/linuxserver/duckdns:arm32v7-latest

Docker logs

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 40-config: executing...
Retrieving subdomain and token from the environment variables
g will be output to file
Something went wrong, please check your settings Thu Feb 4 07:06:40 PST 138072
[cont-init.d] 40-config: exited 0.
[cont-init.d] 99-custom-files: executing...
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.

[BUG] linuxserver/duckdns:arm32v7-latest image has OS/ARCH linux/amd64

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

The latest duckdns image cannot be pulled on 32-bit arm architectures such as an older raspberry pi as the linuxserver/duckdns:arm32v7-latest image at hub.docker.com has OS/ARCH linux/amd64 (digest: sha256:45b4de29ef06ed62c2165e72b8e4badb80d0d77524ed7af01e7fa44b5e8c2578, see https://hub.docker.com/layers/linuxserver/duckdns/arm32v7-latest/images/sha256-45b4de29ef06ed62c2165e72b8e4badb80d0d77524ed7af01e7fa44b5e8c2578?context=explore).

Expected Behavior

Any arm32v7 image should have OS/ARCH linux/arm/v7.

Steps To Reproduce

See https://hub.docker.com/layers/linuxserver/duckdns/arm32v7-latest/images/sha256-45b4de29ef06ed62c2165e72b8e4badb80d0d77524ed7af01e7fa44b5e8c2578?context=explore

Environment

- OS:
- How docker service was installed:
N/A

CPU architecture

arm64

Docker creation

N/A

Container logs

N/A

Consider Chomping Whitespace when using FILE__ Environment Variables

I am using podman, and sharing my DuckDNS token with a simple bind mount. I erase all newlines at the end of the file, but my text editor has (silently) still added one on save. It thus comes into the configs as such:

root@6e2b4f16f191:/app# cat duck.conf 
SUBDOMAINS="..." TOKEN="12345678-abcd-abcd-12ab-132435465768
"
root@6e2b4f16f191:/app# 

The closing quote has come after the newline.

Whilst technically my token is of improper format, and whilst I'm sidestepping the secrets process at this point in time:

  • It seems not unreasonable that new users may leave a dangling newline and not be aware of the potential problems of this
  • Given that the FILE__ variables are to replace environment variables anyway, in most if not all cases, I am presuming that a newline in the variable would not be acceptable, and thus, chomping whitespace automatically shouldn't result in undefined behaviour
  • If the above is a reasonable assumption, it seems sensible to sanitise the input earlier rather than allow crashes down the line, even if the error is on my part in this case
  • The error message could be cryptic for some:
...
curl: (3) URL using bad/illegal format or missing URL
Something went wrong, please check your settings Fri Jun 18 19:52:10 UTC 2021
The response returned was:
⏎
...

The configuration is sourced in /app/duck.sh and Bash will presumably complain of a syntax error upon sourcing, and abort there, which has propagated through.

Expected Behavior

  1. One of the entrypoint scripts should check for valid format and complain that the subdomain and/or token are invalid
  • Possibly outputting these to console
  1. The app script could source the configuration with more error checking
  2. My main point is that it's not great that the configuration file contains invalid syntax, we ought to stop before reaching that point, and so I would recommend that if it would be deemed reasonable and well-defined to assume that no environment variables should contain trailing whitespace like that and to chomp newlines and/or any leading/trailing whitespace for most environment values passed into the containers, then it would also be reasonable to do so on the files, and am proposing consideration of a policy like across ls.io images.

Steps to Reproduce

  1. I am using podman over docker on this project. Am warning in case it effects reproducability, but I doubt it.
  2. echo "12345678-abcd-abcd-12ab-132435465768" >/tmp/token
  3. podman run --rm -it -v '/tmp/token:/DuckDNS.token' -e "SUBDOMAINS=mysubdomain" -e "FILE__TOKEN=/DuckDNS.token" ghcr.io/linuxserver/duckdns cat /app/duck.conf
  4. Note the file output in the terminal.
  5. Note also that this is hard to detect in the terminal - many utilities add a trailing newline and cat /tmp/token doesn't display a blank newline in my fish terminal:
~> echo "12345678-abcd-abcd-12ab-132435465768" > /tmp/token
~> cat /tmp/token 
12345678-abcd-abcd-12ab-132435465768
~> echo  -n "12345678-abcd-abcd-12ab-132435465768" > /tmp/token
~> cat /tmp/token
12345678-abcd-abcd-12ab-132435465768⏎                                                                   
~>

Fish has been helpful and displayed the carriage return symbol to inidcate that the shell has added the newline, but when the trailing newline is present, it is more subtle.

Environment

OS: Ubuntu-based (focal)
CPU architecture: amd64
How docker service was installed: Using podman-compose and podman originally. Image pulled from ghcr.io as in examples using compose file.

Error: Something went wrong, please check your settings

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Hi,
I install docker swag and docker duckdns because I use duckdns.org. But in log of container duckdns:

Something went wrong, please check your settings Sun Mar 19 14:27:48 CET 2023
The response returned was:
KO

version: "2.1" services: duckdns: image: lscr.io/linuxserver/duckdns:latest container_name: duckdns environment: - PUID=998 - PGID=100 - TZ=Europe/Paris - SUBDOMAINS=wildcard - TOKEN=xxxxxxxx #- LOG_FILE=false #optional volumes: - /srv/dev-disk-by-uuid-17502927-065b066-8f35344387d4/Storage/appdata/duckdns/config:/config #optional restart: unless-stopped

Expected Behavior

No response

Steps To Reproduce

immedialtly after update the stack

Environment

- OS:linux x86_64 Debian GNU/Linux 11 (bullseye)
- How docker service was installed:stack in portainer

CPU architecture

x86-64

Docker creation

stack in portainer

Container logs

Something went wrong, please check your settings Sun Mar 19 14:33:59 CET 2023
The response returned was:
KO
Something went wrong, please check your settings Sun Mar 19 14:39:37 CET 2023
The response returned was:
KO
Something went wrong, please check your settings Sun Mar 19 14:41:15 CET 2023
The response returned was:
KO

Broken images on rpi 1 b+

the last two docker images 958c387b-ls17 and a9bb5547-ls16 are now working (at least on the rpi)

duckdns    | [s6-init] ensuring user provided files have correct perms...exited 0.
duckdns    | [fix-attrs.d] applying ownership & permissions fixes...
duckdns    | [fix-attrs.d] done.
duckdns    | [cont-init.d] executing container initialization scripts...
duckdns    | [cont-init.d] 10-adduser: executing...
duckdns    | [cont-init.d] 10-adduser: exited 267.
duckdns    | [cont-finish.d] executing container finish scripts...
duckdns    | [cont-finish.d] done.
duckdns    | [s6-finish] waiting for services.
duckdns    | [s6-finish] sending all processes the TERM signal.
duckdns    | [s6-finish] sending all processes the KILL signal and exiting.

[FEAT] Local IP option

Is this a new feature request?

  • I have searched the existing issues

Wanted change

Have the ability to set the internal ip instead of the external one.

Reason for change

For some home-lab cases using dns certificates it would be nice to be able to set the local ip instead of the external ip.

Proposed code change

Something like UPDATE_IP=local-ipv4 could do the trick.
Maybe just adding the following extra elif-branch in https://github.com/linuxserver/docker-duckdns/blob/master/root/app/duck.sh

elif [ "${UPDATE_IP}" = "local-ipv4" ]; then
        echo "Detecting local IPv4 via hostname command"
        IPV4=$(hostname -I)
        RESPONSE=$(curl -sS --max-time 60 "https://www.duckdns.org/update?domains=${SUBDOMAINS}&token=${TOKEN}&ip=${IPV4}")

Multiple subdomains issue

I have an error with my two subdomains :
Output : Something went wrong, please check your settings Thu Apr 29 19:10:01 CEST 2021

When I put just one domain it's ok but two it does'nt work.

My configuration :

version: "2.1"
services:
  duckdns:
    image: ghcr.io/linuxserver/duckdns
    container_name: duckdns
    environment:
      - PUID=998
      - PGID=100
      - TZ=Europe/Paris
      - SUBDOMAINS=test1,test2
      - TOKEN=***********
      - LOG_FILE=true
    volumes:
      - /srv/dev-disk-by-label-DATA/config/duckdns:/config 
    restart: unless-stopped

[BUG] Container Docker Duckdns, curl failed to verify the legitimacy of the server

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Hi guys,
Since few month I have this message in the log of docker/duckdns :
2023-08-01T07:36:52.628042911Z curl: (60) SSL: no alternative certificate subject name matches target host name 'www.duckdns.org' 2023-08-01T07:36:52.628131488Z More details here: https://curl.se/docs/sslcerts.html 2023-08-01T07:36:52.628156343Z 2023-08-01T07:36:52.628168652Z curl failed to verify the legitimacy of the server and therefore could not 2023-08-01T07:36:52.628180344Z establish a secure connection to it. To learn more about this situation and 2023-08-01T07:36:52.628191873Z how to fix it, please visit the web page mentioned above. 2023-08-01T07:36:52.639332682Z Something went wrong, please check your settings Tue Aug 1 07:36:52 UTC 2023 2023-08-01T07:36:52.639374999Z The response returned was: 2023-08-01T07:36:52.639400250Z

I found this issue about amazon in https://github.com/k3s-io, issue #7680.
In the dialog, I found the command : curl -vks and I tried with curl -vks www.duckdns.org

The result is :
`root@duckdns:/# curl -vk https://www.duckdns.org

  • processing: https://www.duckdns.org
  • Trying 35.183.231.248:443...
  • Connected to www.duckdns.org (35.183.231.248) port 443
  • ALPN: offers h2,http/1.1
  • TLSv1.3 (OUT), TLS handshake, Client hello (1):
  • TLSv1.3 (IN), TLS handshake, Server hello (2):
  • TLSv1.2 (IN), TLS handshake, Certificate (11):
  • TLSv1.2 (IN), TLS handshake, Server key exchange (12):
  • TLSv1.2 (IN), TLS handshake, Server finished (14):
  • TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
  • TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
  • TLSv1.2 (OUT), TLS handshake, Finished (20):
  • TLSv1.2 (IN), TLS handshake, Finished (20):
  • SSL connection using TLSv1.2 / ECDHE-ECDSA-AES128-GCM-SHA256
  • ALPN: server accepted h2
  • Server certificate:
  • subject: C=US; ST=Georgia; O=Crawford & Company; CN=*.aomsettlement.ca
  • start date: Mar 23 00:00:00 2023 GMT
  • expire date: Mar 22 23:59:59 2024 GMT
  • issuer: C=GB; ST=Greater Manchester; L=Salford; O=Sectigo Limited; CN=Sectigo ECC Organization Validation Secure Server CA
  • SSL certificate verify result: self-signed certificate in certificate chain (19), continuing anyway.
  • using HTTP/2
  • h2 [:method: GET]
  • h2 [:scheme: https]
  • h2 [:authority: www.duckdns.org]
  • h2 [:path: /]
  • h2 [user-agent: curl/8.2.1]
  • h2 [accept: /]
  • Using Stream ID: 1

GET / HTTP/2
Host: www.duckdns.org
User-Agent: curl/8.2.1
Accept: /

< HTTP/2 200
< date: Tue, 01 Aug 2023 07:55:09 GMT
< content-type: text/html
< content-length: 617
< last-modified: Fri, 23 Jul 2021 22:31:24 GMT
< accept-ranges: bytes
< etag: "046e5771280d71:0"
< server: Microsoft-IIS/10.0
< x-powered-by: ASP.NET
<

<title>AOM Settlement</title>
<body>
    <core-root></core-root>
<script src="runtime.63f65fa3296259fc0471.js" defer></script><script src="polyfills.2058ae9b600c9ca6751c.js" defer></script><script src="main.8b31e8662d63b27e93af.js" defer></script></body>

We can see that curl is trying to check the url with this "subject: C=US; ST=Georgia; O=Crawford & Company; CN=*.aomsettlement.ca" which has nothing to do with Duckdns.

If I simply use the command : curl -vks www.duckdns.org, the result is :
`root@duckdns:/# curl -vks www.duckdns.org

GET / HTTP/1.1
Host: www.duckdns.org
User-Agent: curl/8.2.1
Accept: /

< HTTP/1.1 301 Moved Permanently
< Server: awselb/2.0
< Date: Tue, 01 Aug 2023 07:58:37 GMT
< Content-Type: text/html
< Content-Length: 134
< Connection: keep-alive
< Location: https://www.duckdns.org:443/
<

<title>301 Moved Permanently</title>

301 Moved Permanently

* Connection #0 to host www.duckdns.org left intact`

I am not an expert in SSL certificates and curl but if someone can help me, it will be appreciate.
Rgds

Expected Behavior

Stopping having this error message, signifying that the server is verified

Steps To Reproduce

Just start the container and look at the log

Environment

- OS: Linux 6.1.0-0.deb11.7-amd64
- How docker service was installed:

Client: Docker Engine - Community
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:35:45 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:35:45 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

CPU architecture

x86-64

Docker creation

version: '3'
services:
  duckdns:
    image: linuxserver/duckdns:latest
    container_name: duckdns
    hostname: duckdns
    networks:
      - swag_default
    dns:
      - 172.20.0.254
    environment:
      - PUID=1006
      - PGID=100
      - TZ=Etc/FR
      - SUBDOMAINS=xxxxx,yyyyy,zzzzz
      - TOKEN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

      - LOG_FILE=true
    volumes:
      - /mnt/CRU1DATA1/AppData/Duckdns/config:/config
    restart: unless-stopped
    
networks:
    swag_default:
        external: true

Container logs

2023-08-01T07:36:52.628042911Z curl: (60) SSL: no alternative certificate subject name matches target host name 'www.duckdns.org'
2023-08-01T07:36:52.628131488Z More details here: https://curl.se/docs/sslcerts.html
2023-08-01T07:36:52.628156343Z 
2023-08-01T07:36:52.628168652Z curl failed to verify the legitimacy of the server and therefore could not
2023-08-01T07:36:52.628180344Z establish a secure connection to it. To learn more about this situation and
2023-08-01T07:36:52.628191873Z how to fix it, please visit the web page mentioned above.
2023-08-01T07:36:52.639332682Z Something went wrong, please check your settings Tue Aug  1 07:36:52 UTC 2023
2023-08-01T07:36:52.639374999Z The response returned was:
2023-08-01T07:36:52.639400250Z

Container keeps on restarting again and again

My duckdns container keeps on restarting again and again until I stop it. Don't know since when exactly, I updated DSM and Docker package this week, it might be related.

I updated duckdns image, I deleted and created new container, didn't solve the problem.

I verified subdomain and token on duckdns.org, everything is fine.

docker ps:

CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS                           PORTS                          NAMES
c36fd5f96266        linuxserver/duckdns                               "/init"                  40 minutes ago      Restarting (1) 56 seconds ago                                   duckdns
CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS                           PORTS                          NAMES
c36fd5f96266        linuxserver/duckdns                               "/init"                  40 minutes ago      Up 3 seconds                                                    duckdns
CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS                           PORTS                          NAMES
c36fd5f96266        linuxserver/duckdns                               "/init"                  40 minutes ago      Restarting (1) 4 seconds ago                                    duckdns

version:
Linuxserver.io version:- 5499395a-ls26 Build-date:- 2019-08-24T23:35:22-04:00

docker-compose.yml:

  duckdns:
    container_name: duckdns
    image: "linuxserver/duckdns"
    environment:
      - PUID=1029
      - PGID=65538
      - TZ=Europe/Paris
      - SUBDOMAINS=xxxx
      - TOKEN=ffffffff-1111-2222-3333-123456789abc
    restart: unless-stopped
    network_mode: custom-bridge

docker logs:

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 10-adduser: executing...
usermod: no changes

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
We gratefully accept donations at:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    911
User gid:    911
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 40-config: executing...
Please pass both your subdomain(s) and token as environment variables in your docker run command. See docker info for more details.
[cont-init.d] 40-config: exited 1.
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

Host OS:
DSM 6.2.2-24922 Update 3 on Synology DS218+

Docker package version:
18.09.0-0505

User:
duckdns:x:1029:100::/var/services/homes/duckdns:/sbin/nologin

Group:
duckdns:x:65538:duckdns

Thanks

Add IPv6 support

linuxserver.io


Desired Behavior

According to https://www.duckdns.org/spec.jsp the API of DUCKDNS looks like
https://www.duckdns.org/update?domains={YOURVALUE}&token={YOURVALUE}[&ip={YOURVALUE}][&ipv6={YOURVALUE}][&verbose=true][&clear=true]

This container uses

RESPONSE=$(curl -sS --max-time 60 "https://www.duckdns.org/update?domains=${SUBDOMAINS}&token=${TOKEN}&ip=")

By appending &ipv6={YOURVALUE} to the call we could define our IPv6.

But the problem is the changing IPv6 prefix.
The host needs to inform the container about the new IPv6 address.

In my case I use systemd-networkd.
According to ip addr I got inet6 2a0a:... and inet6 fe80:... where the 2a0a one is the public address.

Current Behavior

No usage of the IPv6 API value

Alternatives Considered

If the IPv6 doesn't change you can add it in the web interface.
But not if it changes on a daily base (changing provider prefix).

curl: (6) Could not resolve host: www.duckdns.org

linuxserver.io

The update of the DuckDNS IP address fails because the host "www.duckdns.org" could not be resolved (needed in the script "/app/duck.sh"). I tried to find a solution online but did not succeed.


Expected Behavior

The script /app/duck.sh should update the DuckDNS IP address for my subdomain.

Current Behavior

The update fails because the host "www.duckdns.org" could not be resolved.

Steps to Reproduce

  1. Install the actual Docker software on a Raspberry Pi 4 with the actual RaspiOS.
  2. Use the "docker-compose.yml" from this site.
  3. Start the container with "docker-compose up -d"
  4. Wait for the DuckDNS IP address to be updated.
  5. Exec into the container, start the command from /app/duck.sh without the silent parameter (-s).
  6. Error message "curl: (6) Could not resolve host: www.duckdns.org"

Environment

OS: RaspiOS (2021-01-11-raspios-buster-armhf-lite)
CPU architecture: arm32
How docker service was installed: Using the official "get-docker.sh" script from https://get.docker.com

Command used to create docker container (run/create/compose/screenshot)

docker-compose.yml
version: '2.1'
services:
duckdns:
image: ghcr.io/linuxserver/duckdns
container_name: duckdns-cg
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Vienna
- SUBDOMAINS=****
- TOKEN=****
- LOG_FILE=true
volumes:
- ./config:/config
restart: unless-stopped

Docker logs

User uid: 1000
User gid: 1000
[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 40-config: executing...
Retrieving subdomain and token from the environment variables
log will be output to file
Something went wrong, please check your settings Thu Feb 4 16:06:40 CET 138072
[cont-init.d] 40-config: exited 0.
[cont-init.d] 99-custom-files: executing...
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.

Comment: Today is 2021-03-12, the message "Something went wrong, please check your settings Thu Feb 4 16:06:40 CET 138072" above seems strange. The date/time of my docker host is set correctly.

stderr not forwarded to logfile

linuxserver.io


Expected Behavior

When using LOG_FILE=true all logging, including stderr, should go to /config/duck.log

Current Behavior

stderr output of duck.sh goes to Docker logs

Steps to Reproduce

  1. create and start container
  2. disconnect from internet
  3. monitor docker run command output. After ~5mins it will produce:
curl: (6) Could not resolve host: www.duckdns.org

duck.log will show:

Something went wrong, please check your settings Sun Jul  3 14:04:32 UTC 2022
The response returned was:

Environment

OS: gentoo
CPU architecture: x86_64
How docker service was installed: emerge app-containers/docker

$ docker -v
Docker version 20.10.12, build e91ed5707e

Command used to create docker container (run/create/compose/screenshot)

docker image build -t duckdns:test .
docker run --rm --name=duckdns-test --net=host -e LOG_FILE=true -v $(pwd)/config:/config -e PRIVATE_SUBDOMAINS=nimeapie-private -e SUBDOMAINS=nimeapie -e TOKEN=${TOKEN} duckdns:test

Docker logs

$ ./test-logfile.sh 
Sending build context to Docker daemon  143.4kB
Step 1/9 : FROM ghcr.io/linuxserver/baseimage-alpine:3.13
 ---> cd39843e516a
Step 2/9 : ARG BUILD_DATE
 ---> Using cache
 ---> 044054eda4ea
Step 3/9 : ARG VERSION
 ---> Using cache
 ---> 73eaffe4ecb5
Step 4/9 : ARG DUCKDNS_VERSION
 ---> Using cache
 ---> 8c142c4633ad
Step 5/9 : LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
 ---> Using cache
 ---> 4fd9be0dde0e
Step 6/9 : LABEL maintainer="aptalca"
 ---> Using cache
 ---> 856fac729b1d
Step 7/9 : ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
 ---> Using cache
 ---> 106209881e0a
Step 8/9 : RUN   echo "**** install packages ****" &&   apk add --no-cache     curl     logrotate
 ---> Using cache
 ---> 62e8db564c55
Step 9/9 : COPY root/ /
 ---> Using cache
 ---> 2f6a4387ee73
Successfully built 2f6a4387ee73
Successfully tagged duckdns:test
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-envfile: executing... 
[cont-init.d] 01-envfile: exited 0.
[cont-init.d] 02-tamper-check: executing... 
[cont-init.d] 02-tamper-check: exited 0.
[cont-init.d] 10-adduser: executing... 
usermod: no changes

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
-------------------------------------

To support the app dev(s) visit:
DuckDNS: https://www.patreon.com/user?u=3209735

To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    911
User gid:    911
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 40-config: executing... 
Retrieving subdomain and token from the environment variables
log will be output to file
Your IP was updated at Sun Jul  3 14:19:10 UTC 2022
[cont-init.d] 40-config: exited 0.
[cont-init.d] 90-custom-folders: executing... 
[cont-init.d] 90-custom-folders: exited 0.
[cont-init.d] 99-custom-files: executing... 
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
curl: (6) Could not resolve host: www.duckdns.org

Problem analysis

The /root/defaults/duckcron forwards outputs using /app/duck.sh 2>&1 >> /config/duck.log.
This order is wrong and should be /app/duck.sh >> /config/duck.log 2>&1.

With this change duck.log will contain the error:

Your IP was updated at Sun Jul  3 14:21:22 UTC 2022
Your IP was updated at Sun Jul  3 14:28:00 UTC 2022
Your IP was updated at Sun Jul  3 14:32:15 UTC 2022
curl: (6) Could not resolve host: www.duckdns.org
Something went wrong, please check your settings Sun Jul  3 14:36:46 UTC 2022
The response returned was:

curl: (6) Could not resolve host: www.duckdns.org
Something went wrong, please check your settings Sun Jul  3 14:44:36 UTC 2022
The response returned was:

Ipv4 and/or ipv6

linuxserver.io


Desired Behavior

a feature to choose ipv4 and/or ipv6 because for instance my ipv4 is not public(nat) whereas my ipv6 is public so I do not want to update my ipv4 because it causes wrong address

Current Behavior

ipv4 cannot be disabled
ipv6 can be disabled (i think)
but this does not solve the dual stack lite issue

Alternatives Considered

[BUG] Defining FILE__TOKEN doesn't work

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

I've switched from an AMD64 system to an ARM system, and now the configuration I had for the container no longer works:

version: "2.1"
secrets:
  duckdns_token:
    file: ./duckdns_token.txt
services:
  duckdns:
    image: lscr.io/linuxserver/duckdns
    container_name: duckdns
    secrets:
      - duckdns_token
    environment:
      - PUID=1000 #optional
      - PGID=1000 #optional
      - TZ=Europe/Amsterdam
      - SUBDOMAINS=mydomain
      - FILE__TOKEN=/run/secrets/duckdns_token
      - LOG_FILE=false #optional
    # volumes:
    #   - /path/to/appdata/config:/config #optional
    restart: unless-stopped

Where ./duckdns_token.txt is a root owned 600 permissions file containing the token without a newline. When I get a shell in the container I see that the secrets file is set, but the environment variable is set to an empty line:

image

Expected Behavior

The TOKEN env variable is set, as per the documentation at https://docs.linuxserver.io/images/docker-duckdns/?h=duckdns#environment-variables-from-files-docker-secrets

Steps To Reproduce

I'm not quite sure, but the issue appeared for me when I switched from an AMD64 system to an ARM (aarch64) system.

Environment

- OS: Ubuntu 24.04
- How docker service was installed: apt

CPU architecture

arm64

Docker creation

`docker compose up -d`

Container logs

duckdns  | [migrations] started
duckdns  | [migrations] no migrations found
duckdns  | [env-init] Your secret: FILE__TOKEN
duckdns  |            contains a trailing newline and may not work as expected
duckdns  | [env-init] TOKEN set from FILE__TOKEN
duckdns  | ───────────────────────────────────────
duckdns  |
duckdns  |       ██╗     ███████╗██╗ ██████╗
duckdns  |       ██║     ██╔════╝██║██╔═══██╗
duckdns  |       ██║     ███████╗██║██║   ██║
duckdns  |       ██║     ╚════██║██║██║   ██║
duckdns  |       ███████╗███████║██║╚██████╔╝
duckdns  |       ╚══════╝╚══════╝╚═╝ ╚═════╝
duckdns  |
duckdns  |    Brought to you by linuxserver.io
duckdns  | ───────────────────────────────────────
duckdns  |
duckdns  | To support the app dev(s) visit:
duckdns  | DuckDNS: https://www.patreon.com/user?u=3209735
duckdns  |
duckdns  | To support LSIO projects visit:
duckdns  | https://www.linuxserver.io/donate/
duckdns  |
duckdns  | ───────────────────────────────────────
duckdns  | GID/UID
duckdns  | ───────────────────────────────────────
duckdns  |
duckdns  | User UID:    1000
duckdns  | User GID:    1000
duckdns  | ───────────────────────────────────────
duckdns  | Linuxserver.io version: 245f78ab-ls26
duckdns  | Build-date: 2024-07-15T04:01:42+00:00
duckdns  | ───────────────────────────────────────
duckdns  |
duckdns  | Detecting IPv4 via DuckDNS
duckdns  | curl: (3) URL rejected: Malformed input to a URL function
duckdns  | Something went wrong, please check your settings Thu Aug  1 11:42:11 CEST 2024
duckdns  | The response returned was:
duckdns  |
duckdns  |
duckdns  | [custom-init] No custom files found, skipping...
duckdns  | [ls.io-init] done.

docker-run is working, but docker-compose give errors "URL rejected: Malformed input to a URL function"

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

I've managed to it working with docker run (I replaced my actual subdomains and token with XXXXXXXX),

$ root@docker:~/duckdns# cat docker_run.sh 
docker run -d \
  --name=duckdns \
  --net=host `#optional` \
  -e PUID=1000 `#optional` \
  -e PGID=1000 `#optional` \
  -e TZ=Asia/Shanghai `#optional` \
  -e SUBDOMAINS=XXXXXXXX \
  -e TOKEN=XXXXXXXX \
  -e UPDATE_IP=ipv4 `#optional` \
  -e LOG_FILE=false `#optional` \
  -v /path/to/duckdns/config:/config `#optional` \
  --restart unless-stopped \
  lscr.io/linuxserver/duckdns:latest

but somehow docker-compose is not working.

Expected Behavior

No response

Steps To Reproduce

I just used the template from the repo. (I replaced my actual subdomains and token with XXXXXXXX).

$ root@docker:~/duckdns# cat compose.yaml 
services:
  duckdns:
    image: lscr.io/linuxserver/duckdns:latest
    container_name: duckdns-compose
    network_mode: host #optional
    environment:
      - PUID=1000 #optional
      - PGID=1000 #optional
      - TZ=Asia/Shanghai #optional
      - SUBDOMAINS=XXXXXXXX
      - TOKEN=XXXXXXXX
      - UPDATE_IP=ipv4 #optional
      - LOG_FILE=true #optional
    volumes:
      - /path/to/duckdns/config:/config #optional
    restart: unless-stopped

After logging into the container, here are the env variables

$ root@docker:~/duckdns# docker exec -it duckdns-compose /bin/bash
$ root@docker:/# env
PUID=1000
HOSTNAME=docker
S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
PWD=/
TZ=Asia/Shanghai
HOME=/root
PGID=1000
VIRTUAL_ENV=/lsiopy
LOG_FILE=true
S6_VERBOSITY=1
S6_STAGE2_HOOK=/docker-mods
SUBDOMAINS=XXXXXXXX
TOKEN=XXXXXXXX
TERM=xterm
UPDATE_IP=ipv4
SHLVL=1
PS1=$(whoami)@$(hostname):$(pwd)\$ 
LSIO_FIRST_PARTY=true
PATH=/lsiopy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env

Environment

- OS: Proxmox VE 8.1.4
- How docker service was installed: Docker LXC via [Proxmox VE Helper-Scripts](https://tteck.github.io/Proxmox/)

CPU architecture

x86-64

Docker creation

docker compose up -d

Container logs

$ root@docker:~/duckdns# docker logs duckdns-compose
[migrations] started
[migrations] no migrations found
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support the app dev(s) visit:
DuckDNS: https://www.patreon.com/user?u=3209735

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    1000
User GID:    1000
───────────────────────────────────────

warning: state file /config/logrotate.status is world-readable and thus can be locked from other unprivileged users. Skipping lock acquisition...
Detecting IPv4 via CloudFlare
curl: (3) URL rejected: Malformed input to a URL function
Something went wrong, please check your settings Mon Feb 12 01:30:02 CST 2024
The response returned was:

[custom-init] No custom files found, skipping...
[ls.io-init] done.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.