Ansible issues when using Python installed via dietpi-software

Hi guys,

DietPi: 7.9.3 (freshly imaged 3 days ago)
Hardware: Raspi 3B+
APT is up to date

Notable software installed:

  • Pihole (Dietpi-software)


  • Unbound (Dietpi-software)


  • Python (Dietpi-software referred to as DP-S Python from now on )


  • Ansible (via APT)

First Issue summary:
DP-S Python (both under a venv and not) causes a huge bunch of errors when trying to run ansible playbooks, python installed via APT then running the playbook has no issues.

Second Issue summary:
Running the ansible playbook with APT python installs docker with no large errors - I’ve noticed that one of my containers is unable to get DNS and results in one of my grafana containers restarting every 20 seconds:

IMAGE_NAME=grafana%2Fgrafana-oss%3A8.3.0-ubuntu 
Error: ✗ Get "https://grafana.com/api/plugins/repo/flant-statusmap-panel": context deadline exceeded 
(Client.Timeout exceeded while awaiting headers)

For issue #1 I’ve previously tried a bunch of things but I don’t know enough to tell whats the actual root cause

For issue #2 I’ve seen mentions of needing to edit the resolvconf.conf file on my system as its something to do with unbound and pihole not playing nice with Docker but I dont have that file and manually creating it did not achieve what I was hoping for. Unfortunately I am not very good at docker.

The reason I am coming to the diet-pi forums is the dev for this has unfortunately ignored my GitHub issues for about 3 months.

Since I have waited this long its unlikely I will be getting help from them ( as they have answered tickets above and below mine in the time since :sweat_smile:)

I have tried literally every single solution I could think of and all google searches + looking ‘solutions’ in github tickets, none of it worked for me (unless I made mistakes)

I recognise I am not entitled to an answer, this is just a last ditch effort of mine as I am at my wits end trying to solve it :rofl:

Happy to add extra details and I will try to reply as promptly

Issue #1 error logs:

 TASK [Ensure apt cache is up to date.] ******************************************************************************
ok: [127.0.0.1]

TASK [Ensure pacman cache is up to date] ****************************************************************************
skipping: [127.0.0.1]

TASK [Check if Docker is already present.] **************************************************************************
ok: [127.0.0.1]

TASK [Download Docker install convenience script.] ******************************************************************
changed: [127.0.0.1]

TASK [Run Docker install convenience script.] ***********************************************************************
changed: [127.0.0.1]

TASK [Ensure Docker is started.] ************************************************************************************
ok: [127.0.0.1]

TASK [Ensure dependencies are installed (Debian).] ******************************************************************
changed: [127.0.0.1]

TASK [Ensure dependencies are installed (Archlinux).] ***************************************************************
skipping: [127.0.0.1]

TASK [Install Docker Compose using Pip.] ****************************************************************************

fatal: [127.0.0.1]: FAILED! => {"changed": false, "cmd": ["/root/internet-pi-venv/bin/pip3", "install", "docker-compose"], "msg": "stdout: Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting docker-compose
  Downloading https://www.piwheels.org/simple/docker-compose/docker_compose-1.29.2-py2.py3-none-any.whl (114 kB)
Collecting texttable<2,>=0.9.0
  Downloading https://www.piwheels.org/simple/texttable/texttable-1.6.4-py2.py3-none-any.whl (10 kB)
Collecting dockerpty<1,>=0.4.1
  Downloading https://www.piwheels.org/simple/dockerpty/dockerpty-0.4.1-py3-none-any.whl (16 kB)
Collecting docker[ssh]>=5
  Downloading https://www.piwheels.org/simple/docker/docker-5.0.3-py2.py3-none-any.whl (146 kB)
Collecting distro<2,>=1.5.0
  Downloading https://www.piwheels.org/simple/distro/distro-1.6.0-py2.py3-none-any.whl (17 kB)
Collecting requests<3,>=2.20.0
  Downloading https://www.piwheels.org/simple/requests/requests-2.26.0-py2.py3-none-any.whl (62 kB)
Collecting websocket-client<1,>=0.32.0
  Downloading https://www.piwheels.org/simple/websocket-client/websocket_client-0.59.0-py2.py3-none-any.whl (67 kB)
Collecting PyYAML<6,>=3.10
  Downloading PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl (788 kB)
Collecting python-dotenv<1,>=0.13.0
  Downloading https://www.piwheels.org/simple/python-dotenv/python_dotenv-0.19.2-py2.py3-none-any.whl (17 kB)
Collecting docopt<1,>=0.6.1
  Downloading https://www.piwheels.org/simple/docopt/docopt-0.6.2-py2.py3-none-any.whl (13 kB)
Collecting jsonschema<4,>=2.5.1
  Downloading https://www.piwheels.org/simple/jsonschema/jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
Collecting paramiko>=2.4.2
  Downloading https://www.piwheels.org/simple/paramiko/paramiko-2.8.1-py2.py3-none-any.whl (208 kB)
Collecting six>=1.3.0
  Downloading https://www.piwheels.org/simple/six/six-1.16.0-py2.py3-none-any.whl (11 kB)
Requirement already satisfied: setuptools in /root/internet-pi-venv/lib/python3.9/site-packages (from jsonschema<4,>=2.5.1->docker-compose) (44.1.1)
Collecting attrs>=17.4.0
  Downloading https://www.piwheels.org/simple/attrs/attrs-21.2.0-py2.py3-none-any.whl (53 kB)
Collecting pyrsistent>=0.14.0
  Downloading pyrsistent-0.18.0.tar.gz (104 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'done'
Collecting bcrypt>=3.1.3
  Downloading bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl (56 kB)
Collecting pynacl>=1.0.1
  Downloading PyNaCl-1.4.0.tar.gz (3.4 MB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'done'
Requirement already satisfied: cryptography>=2.5 in /root/internet-pi-venv/lib/python3.9/site-packages (from paramiko>=2.4.2->docker[ssh]>=5->docker-compose) (36.0.1)
Requirement already satisfied: cffi>=1.1 in /root/internet-pi-venv/lib/python3.9/site-packages (from bcrypt>=3.1.3->paramiko>=2.4.2->docker[ssh]>=5->docker-compose) (1.15.0)
Requirement already satisfied: pycparser in /root/internet-pi-venv/lib/python3.9/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko>=2.4.2->docker[ssh]>=5->docker-compose) (2.21)
Collecting charset-normalizer~=2.0.0
  Downloading https://www.piwheels.org/simple/charset-normalizer/charset_normalizer-2.0.9-py3-none-any.whl (43 kB)
Collecting certifi>=2017.4.17
  Downloading https://www.piwheels.org/simple/certifi/certifi-2021.10.8-py2.py3-none-any.whl (151 kB)
Collecting idna<4,>=2.5
  Downloading https://www.piwheels.org/simple/idna/idna-3.3-py3-none-any.whl (64 kB)
Collecting urllib3<1.27,>=1.21.1
  Downloading https://www.piwheels.org/simple/urllib3/urllib3-1.26.7-py2.py3-none-any.whl (155 kB)
Building wheels for collected packages: pynacl, pyrsistent
  Building wheel for pynacl (PEP 517): started
  Building wheel for pynacl (PEP 517): finished with status 'error'
  Building wheel for pyrsistent (PEP 517): started
  Building wheel for pyrsistent (PEP 517): finished with status 'done'
  Created wheel for pyrsistent: filename=pyrsistent-0.18.0-cp39-cp39-linux_aarch64.whl size=56358 sha256=bc6d78833e0046fb53189328122d1b9dd1a1b5f3dfa5e3ec2d3ecfd7e2063e9e
  Stored in directory: /root/.cache/pip/wheels/dd/c8/61/04c6d218b3691f75353d7f74fed3fbd40e0ee9e2d1e2ce24c6
Successfully built pyrsistent
Failed to build pynacl

:stderr:   ERROR: Command errored out with exit status 1:
   command: /root/internet-pi-venv/bin/python3 /tmp/tmpkwoxtdop_in_process.py build_wheel /tmp/tmp7y99vlwj
       cwd: /tmp/pip-install-17vl5b2m/pynacl_0a12f4faa2544103aa519bc694dced6e
  Complete output (77 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-aarch64-3.9
  creating build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/utils.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/signing.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/secret.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/public.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/hashlib.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/hash.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/exceptions.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/encoding.py -> build/lib.linux-aarch64-3.9/nacl
  copying src/nacl/__init__.py -> build/lib.linux-aarch64-3.9/nacl
  creating build/lib.linux-aarch64-3.9/nacl/pwhash
  copying src/nacl/pwhash/scrypt.py -> build/lib.linux-aarch64-3.9/nacl/pwhash
  copying src/nacl/pwhash/argon2id.py -> build/lib.linux-aarch64-3.9/nacl/pwhash
  copying src/nacl/pwhash/argon2i.py -> build/lib.linux-aarch64-3.9/nacl/pwhash
  copying src/nacl/pwhash/_argon2.py -> build/lib.linux-aarch64-3.9/nacl/pwhash
  copying src/nacl/pwhash/__init__.py -> build/lib.linux-aarch64-3.9/nacl/pwhash
  creating build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/utils.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/sodium_core.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/randombytes.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_sign.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_shorthash.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_secretstream.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_secretbox.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_scalarmult.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_pwhash.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_kx.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_hash.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_generichash.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_core.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_box.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/crypto_aead.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  copying src/nacl/bindings/__init__.py -> build/lib.linux-aarch64-3.9/nacl/bindings
  running build_clib
  Traceback (most recent call last):
    File \"/tmp/tmpkwoxtdop_in_process.py\", line 280, in <module>
      main()
    File \"/tmp/tmpkwoxtdop_in_process.py\", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File \"/tmp/tmpkwoxtdop_in_process.py\", line 204, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File \"/tmp/pip-build-env-c0sbkkx9/overlay/lib/python3.9/site-packages/setuptools/build_meta.py\", line 230, in build_wheel
      return self._build_with_temp_dir(['bdist_wheel'], '.whl',
    File \"/tmp/pip-build-env-c0sbkkx9/overlay/lib/python3.9/site-packages/setuptools/build_meta.py\", line 215, in _build_with_temp_dir
      self.run_setup()
    File \"/tmp/pip-build-env-c0sbkkx9/overlay/lib/python3.9/site-packages/setuptools/build_meta.py\", line 158, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File \"setup.py\", line 216, in <module>
      setup(
    File \"/tmp/pip-build-env-c0sbkkx9/overlay/lib/python3.9/site-packages/setuptools/__init__.py\", line 153, in setup
      return distutils.core.setup(**attrs)
    File \"/usr/lib/python3.9/distutils/core.py\", line 148, in setup
      dist.run_commands()
    File \"/usr/lib/python3.9/distutils/dist.py\", line 966, in run_commands
      self.run_command(cmd)
    File \"/usr/lib/python3.9/distutils/dist.py\", line 985, in run_command
      cmd_obj.run()
    File \"/tmp/pip-build-env-c0sbkkx9/overlay/lib/python3.9/site-packages/wheel/bdist_wheel.py\", line 299, in run
      self.run_command('build')
    File \"/usr/lib/python3.9/distutils/cmd.py\", line 313, in run_command
      self.distribution.run_command(command)
    File \"/usr/lib/python3.9/distutils/dist.py\", line 985, in run_command
      cmd_obj.run()
    File \"/usr/lib/python3.9/distutils/command/build.py\", line 135, in run
      self.run_command(cmd_name)
    File \"/usr/lib/python3.9/distutils/cmd.py\", line 313, in run_command
      self.distribution.run_command(command)
    File \"/usr/lib/python3.9/distutils/dist.py\", line 985, in run_command
      cmd_obj.run()
    File \"setup.py\", line 161, in run
      raise Exception(\"ERROR: The 'make' utility is missing from PATH\")
  Exception: ERROR: The 'make' utility is missing from PATH
  ----------------------------------------
  ERROR: Failed building wheel for pynacl
ERROR: Could not build wheels for pynacl which use PEP 517 and cannot be installed d                                                                                                                        irectly
"}


PLAY RECAP **********************************************************************************************************
127.0.0.1                  : ok=8    changed=3    unreachable=0    failed=1    skipped=2    rescued=0    ignored=0

Hi,

can you share the GitHub link on the issue you are reffering to pls.

Furthermore it seems you are trying to execute some script. Maybe you can share this script. It seems the script is failing to install docker-compose. Both Docker as well as docker-compose can be installed via dietpi-software.

In addition it would be good to share some more system details.

Required Information

  • Distro version | echo $G_DISTRO_NAME $G_RASPBIAN
  • Kernel version | uname -a

Hi Joulinar!

Github issue link: https://github.com/geerlingguy/internet-pi/issues/293 (this was a more recent one but the original ticket is >3months, created another ticket because I originally used a different method of install suggested by another user)

Script (or rather Ansible playbook): https://github.com/geerlingguy/internet-pi/

Distro version: bullseye 0
Kernel version: Linux DietPi 5.10.63-v8+ #1488 SMP PREEMPT Thu Nov 18 16:16:16 GMT 2021 aarch64 GNU/Linux

The intent was to get an internet monitoring tool up and running to prove to my ISP we do have weird connection drops (what isn’t measured cant be proven!)

The exact steps taken are as follows:

  1. Install DP-S Python
  2. Run pip3 install ansible
  3. Clone this repository: git clone https://github.com/geerlingguy/internet-pi.git, then enter the repository directory: cd internet-pi.
  4. Install requirements: ansible-galaxy collection install -r requirements.yml (if you see ansible-galaxy: command not found, restart your SSH session or reboot the Pi and try again)
  5. Make copies of the following files and customize them to your liking:
  • example.inventory.ini to inventory.ini (replace IP address with your Pi’s IP, or comment that line and uncomment the connection=local line if you’re running it on the Pi you’re setting up).
  • example.config.yml to config.yml
  1. Run the playbook: ansible-playbook main.yml
  2. Results in issue #1 shown in original post and logs

I can confirm I have not tried installing docker and docker-compose via DP-S. If you require any other system details please let me know - I am not the most experienced user so I dont know all of what you might need

for me the entire installation is working fine.

  1. update DietPi to v7.9.3
  2. Device model : RPi 4 Model B (aarch64)
  3. install Git, Portainer and Docker-Compose. This will automatically pull Python3 and Docker
dietpi-software install 17 134 185
  1. run installation for Internet Pi
cd /opt
git clone https://github.com/geerlingguy/internet-pi.git
cd internet-pi/
cp -p example.config.yml config.yml
cp -p example.inventory.ini inventory.ini
### adjust config files ###
ansible-galaxy collection install -r requirements.yml
ansible-playbook main.yml
  1. installation finished without issues
root@DietPi4:/opt/internet-pi# ansible-playbook main.yml

PLAY [internet_pi] ******************************************************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************************************
ok: [127.0.0.1]

TASK [Load configuration (with defaults from example file).] ************************************************************************************************************************
ok: [127.0.0.1] => (item=example.config.yml)
ok: [127.0.0.1] => (item=config.yml)

TASK [Ensure apt cache is up to date.] **********************************************************************************************************************************************
ok: [127.0.0.1]

TASK [Ensure pacman cache is up to date] ********************************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Check if Docker is already present.] ******************************************************************************************************************************************
ok: [127.0.0.1]

TASK [Download Docker install convenience script.] **********************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Run Docker install convenience script.] ***************************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Ensure Docker is started.] ****************************************************************************************************************************************************
changed: [127.0.0.1]

TASK [Ensure dependencies are installed (Debian).] **********************************************************************************************************************************
changed: [127.0.0.1]

TASK [Ensure dependencies are installed (Archlinux).] *******************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Install Docker Compose using Pip.] ********************************************************************************************************************************************
ok: [127.0.0.1]

TASK [Ensure root user is added to the docker group.] *******************************************************************************************************************************
changed: [127.0.0.1]

TASK [Reset connection so docker group is picked up.] *******************************************************************************************************************************
[WARNING]: Reset is not implemented for this connection

TASK [Gather package facts.] ********************************************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Add Buster backports apt key.] ************************************************************************************************************************************************
skipping: [127.0.0.1] => (item=04EE7237B7D453EC)
skipping: [127.0.0.1] => (item=648ACFD622F3D138)

TASK [Add Buster backports for fixed libseccomp2.] **********************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Install >libseccomp2.4.4 to fix 32-bit OS issue.] *****************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Synchronize internet-monitoring directory.] ***********************************************************************************************************************************
changed: [127.0.0.1]

TASK [Ensure internet-monitoring directory is not a Git repository.] ****************************************************************************************************************
ok: [127.0.0.1]

TASK [Copy templated internet-monitoring files into place.] *************************************************************************************************************************
changed: [127.0.0.1] => (item={'src': 'grafana-config.monitoring.j2', 'dest': 'grafana/config.monitoring'})
changed: [127.0.0.1] => (item={'src': 'prometheus.yml.j2', 'dest': 'prometheus/prometheus.yml'})
changed: [127.0.0.1] => (item={'src': 'prometheus-pinghosts.yaml.j2', 'dest': 'prometheus/pinghosts.yaml'})

TASK [Ensure internet-monitoring environment is running.] ***************************************************************************************************************************
changed: [127.0.0.1]

TASK [Create Pi-hole folder on Pi.] *************************************************************************************************************************************************
changed: [127.0.0.1]

TASK [Copy Pi-hole docker-compose template to Pi.] **********************************************************************************************************************************
changed: [127.0.0.1]

TASK [Ensure Pi-hole is running.] ***************************************************************************************************************************************************
changed: [127.0.0.1]

TASK [Clone shelly-plug-prometheus repo to Pi.] *************************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Copy Shelly Plug docker-compose template to Pi.] ******************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Ensure Shelly Plug Prometheus exporter is running.] ***************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Copy shelly dashboard config to grafana] **************************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Copy airgradient dashboard configs to Grafana.] *******************************************************************************************************************************
skipping: [127.0.0.1] => (item={'id': 'livingroom', 'ip': '192.168.0.123', 'port': 9925})

TASK [Ensure Starlink directory exists.] ********************************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Copy Starlink docker-compose template to Pi.] *********************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Ensure Starlink Prometheus exporter is running.] ******************************************************************************************************************************
skipping: [127.0.0.1]

TASK [Copy starlink dashboard config to grafana.] ***********************************************************************************************************************************
skipping: [127.0.0.1]

RUNNING HANDLER [Restart pi-hole] ***************************************************************************************************************************************************
changed: [127.0.0.1]

RUNNING HANDLER [Restart internet-monitoring] ***************************************************************************************************************************************
changed: [127.0.0.1]

PLAY RECAP **************************************************************************************************************************************************************************
127.0.0.1                  : ok=17   changed=11   unreachable=0    failed=0    skipped=17   rescued=0    ignored=0

root@DietPi4:/opt/internet-pi#
  1. all container showing up as healty/running inside Portainer

But honestly I’m not sure what the benefit of this application is.

Oh that reminded me I left only internet-monitoring enabled, pihole via this ansible playbook is of course disabled.

As for the purpose it’s so I can hold my ISP to account and get them to actually fix issues as they refuse to do so without logs, if you are aware of another better project to monitor internet speed and get it into a graph an DB please let me know :+1: (I know this read sarcastically but I am being anything but that)

Anyway that’s awesome you got it to run, was not aware of Portainer prior to this, will give this a go in a couple of hours or so

the following might be way more simple https://github.com/frdmn/docker-speedtest-grafana

Just need to install Docker, Docker-Compose and Git. The rest is just bringing up the container.

Thanks mate - apologies for the delay, life got in the way. I have one more issue currently as I am unable to remove the ansible installed docker (wanting to ensure I install dietpi Docker to ensure I get the right configs) via apt purge docker and instead of removing it, it spits out:

root-user@DietPi:~# apt-get purge docker
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package 'docker' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

and yet when I run docker I get a valid output as seen below, suggesting its still installed:

root-user@DietPi:~# docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  
  ...

Google up to page 6 had no relevant results (only irrelevant ubuntu stuff) for me when searching for “apt states package is uninstalled but it still persists” :frowning:

ok no worry, we could try to re-use what you already have. Try following as first step

dietpi-software install 17 134 185

Thank you very much mate, I ended up reimaging and installing docker, portainer and python from DP-S and it’s succeeded!

I can see speed tests and ping :ok_hand:

I will look into the simpler method that you suggested