puffinrocks / puffin

lightweight webapp catalog based on containers, with user interface à la mobile app store
GNU Affero General Public License v3.0
89 stars 20 forks source link

Error starting userland proxy: listen udp 0.0.0.0:53: bind: address already in use #14

Closed rocketman0 closed 6 years ago

rocketman0 commented 6 years ago

Failed the same way on all three of my systems, all of which running the following:

DISTRIB_ID=LinuxMint DISTRIB_RELEASE=18.1 DISTRIB_CODENAME=serena DISTRIB_DESCRIPTION="Linux Mint 18.1 Serena"

m@m-LT:~/puffin|master⚡ ⇒  sudo docker-compose up
Creating network "puffin_front" with the default driver
Creating network "puffin_default" with the default driver
Creating network "puffin_back" with the default driver
Pulling mailhog (mailhog/mailhog:latest)...
latest: Pulling from mailhog/mailhog
709515475419: Pull complete
6f91489e9e5b: Pull complete
6500075800d5: Pull complete
c3d9e42bac5e: Pull complete
Digest: sha256:5be1ae7cf894b58fffbe48f84a0541a3595e53124d460d3fb71b3450a8d11189
Status: Downloaded newer image for mailhog/mailhog:latest
Pulling puffindb (postgres:latest)...
latest: Pulling from library/postgres
723254a2c089: Pull complete
39ec0e6c372c: Pull complete
ba1542fb91f3: Pull complete
c7195e642388: Pull complete
95424deca6a2: Pull complete
2d7d4b3a4ce2: Pull complete
fbde41d4a8cc: Pull complete
880120b92add: Pull complete
9a217c784089: Pull complete
d581543fe8e7: Pull complete
e5eff8940bb0: Pull complete
462d60a56b09: Pull complete
135fa6b9c139: Pull complete
Digest: sha256:3f4441460029e12905a5d447a3549ae2ac13323d045391b0cb0cf8b48ea17463
Status: Downloaded newer image for postgres:latest
Pulling dns (puffinrocks/dns:latest)...
latest: Pulling from puffinrocks/dns
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
958137400430: Pull complete
d9d7f25de30c: Pull complete
629c4213bc65: Pull complete
Digest: sha256:db3297c02450b693444fb3018926ef0b62892ce78c4b3ee2293fd9624960e664
Status: Downloaded newer image for puffinrocks/dns:latest
Building puffin
Step 1/4 : FROM python:3-onbuild
3-onbuild: Pulling from library/python
f49cf87b52c1: Already exists
7b491c575b06: Pull complete
b313b08bab3b: Pull complete
51d6678c3f0e: Pull complete
09f35bd58db2: Pull complete
0f9de702e222: Pull complete
73911d37fcde: Pull complete
99a87e214c92: Pull complete
636f90eed4e0: Pull complete
Digest: sha256:27324e075cd19d9a3f5e9182b232e64ad3c3dad4593c25f746296108c6bedc69
Status: Downloaded newer image for python:3-onbuild
# Executing 3 build triggers
 ---> Running in dc170b7afcbb
Collecting Flask<0.11,>=0.10 (from -r requirements.txt (line 1))
  Downloading Flask-0.10.1.tar.gz (544kB)
Collecting Flask-SQLAlchemy<3.0,>=2.0 (from -r requirements.txt (line 2))
  Downloading Flask_SQLAlchemy-2.3.2-py2.py3-none-any.whl
Collecting Flask-Migrate<1.7,>=1.6 (from -r requirements.txt (line 3))
  Downloading Flask-Migrate-1.6.0.tar.gz
Collecting Flask-Security==1.7.4 (from -r requirements.txt (line 4))
  Downloading Flask-Security-1.7.4.tar.gz (41kB)
Collecting Flask-Login==0.2.11 (from -r requirements.txt (line 5))
  Downloading Flask-Login-0.2.11.tar.gz
Collecting Flask-WTF<0.13,>=0.12 (from -r requirements.txt (line 6))
  Downloading Flask-WTF-0.12.tar.gz (247kB)
Collecting Flask-Bootstrap<3.4,>=3.3 (from -r requirements.txt (line 7))
  Downloading Flask-Bootstrap-3.3.7.1.tar.gz (456kB)
Collecting Flask-Script<2.1,>=2.0 (from -r requirements.txt (line 8))
  Downloading Flask-Script-2.0.6.tar.gz (43kB)
Collecting Flask-Mail<0.10,>=0.9 (from -r requirements.txt (line 9))
  Downloading Flask-Mail-0.9.1.tar.gz (45kB)
Collecting Flask-Markdown<0.4,>=0.3 (from -r requirements.txt (line 10))
  Downloading Flask-Markdown-0.3.tar.gz (165kB)
Collecting Flask-Bleach<0.1,>=0.0.2 (from -r requirements.txt (line 11))
  Downloading Flask-Bleach-0.0.2.tar.gz
Collecting Flask-Analytics<0.6,>=0.5 (from -r requirements.txt (line 12))
  Downloading Flask_Analytics-0.5.5-py3-none-any.whl
Collecting waitress<0.9,>=0.8 (from -r requirements.txt (line 13))
  Downloading waitress-0.8.10.tar.gz (123kB)
Collecting psycopg2<2.7,>=2.6 (from -r requirements.txt (line 14))
  Downloading psycopg2-2.6.2.tar.gz (376kB)
Collecting bcrypt<2.1,>=2.0 (from -r requirements.txt (line 15))
  Downloading bcrypt-2.0.0.tar.gz
Collecting cachetools<1.2,>=1.1 (from -r requirements.txt (line 16))
  Downloading cachetools-1.1.6-py2.py3-none-any.whl
Collecting PyYAML<3.12,>=3.11 (from -r requirements.txt (line 17))
  Downloading PyYAML-3.11.zip (371kB)
Collecting docker<2.3,>=2.2.1 (from -r requirements.txt (line 18))
  Downloading docker-2.2.1-py2.py3-none-any.whl (107kB)
Collecting docker-compose<1.13,>=1.12 (from -r requirements.txt (line 19))
  Downloading docker_compose-1.12.0-py2.py3-none-any.whl (91kB)
Collecting requests<2.8,>=2.7 (from -r requirements.txt (line 20))
  Downloading requests-2.7.0-py2.py3-none-any.whl (470kB)
Collecting dumb-init<1.1,>=1.0 (from -r requirements.txt (line 21))
  Downloading dumb-init-1.0.3.tar.gz
Collecting bleach<2.0,>=1.5 (from -r requirements.txt (line 22))
  Downloading bleach-1.5.0-py2.py3-none-any.whl
Collecting pytest<3.0,>=2.8 (from -r requirements.txt (line 24))
  Downloading pytest-2.9.2-py2.py3-none-any.whl (162kB)
Collecting pytest-cov<3.0,>=2.2 (from -r requirements.txt (line 25))
  Downloading pytest_cov-2.5.1-py2.py3-none-any.whl
Collecting ipython<7.0,>=6.0 (from -r requirements.txt (line 26))
  Downloading ipython-6.2.1-py3-none-any.whl (745kB)
Collecting reload<1.0,>=0.9 (from -r requirements.txt (line 27))
  Downloading reload-0.9.tar.gz
Collecting Werkzeug>=0.7 (from Flask<0.11,>=0.10->-r requirements.txt (line 1))
  Downloading Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
Collecting Jinja2>=2.4 (from Flask<0.11,>=0.10->-r requirements.txt (line 1))
  Downloading Jinja2-2.10-py2.py3-none-any.whl (126kB)
Collecting itsdangerous>=0.21 (from Flask<0.11,>=0.10->-r requirements.txt (line 1))
  Downloading itsdangerous-0.24.tar.gz (46kB)
Collecting SQLAlchemy>=0.8.0 (from Flask-SQLAlchemy<3.0,>=2.0->-r requirements.txt (line 2))
  Downloading SQLAlchemy-1.2.0.tar.gz (5.5MB)
Collecting alembic>=0.6 (from Flask-Migrate<1.7,>=1.6->-r requirements.txt (line 3))
  Downloading alembic-0.9.6.tar.gz (998kB)
Collecting Flask-Principal>=0.3.3 (from Flask-Security==1.7.4->-r requirements.txt (line 4))
  Downloading Flask-Principal-0.4.0.tar.gz
Collecting passlib>=1.6.1 (from Flask-Security==1.7.4->-r requirements.txt (line 4))
  Downloading passlib-1.7.1-py2.py3-none-any.whl (498kB)
Collecting WTForms (from Flask-WTF<0.13,>=0.12->-r requirements.txt (line 6))
  Downloading WTForms-2.1.zip (553kB)
Collecting dominate (from Flask-Bootstrap<3.4,>=3.3->-r requirements.txt (line 7))
  Downloading dominate-2.3.1.tar.gz
Collecting visitor (from Flask-Bootstrap<3.4,>=3.3->-r requirements.txt (line 7))
  Downloading visitor-0.1.3.tar.gz
Collecting blinker (from Flask-Mail<0.10,>=0.9->-r requirements.txt (line 9))
  Downloading blinker-1.4.tar.gz (111kB)
Collecting markdown (from Flask-Markdown<0.4,>=0.3->-r requirements.txt (line 10))
  Downloading Markdown-2.6.10.zip (414kB)
Collecting cffi>=1.1 (from bcrypt<2.1,>=2.0->-r requirements.txt (line 15))
  Downloading cffi-1.11.2-cp36-cp36m-manylinux1_x86_64.whl (419kB)
Collecting six>=1.4.1 (from bcrypt<2.1,>=2.0->-r requirements.txt (line 15))
  Downloading six-1.11.0-py2.py3-none-any.whl
Collecting websocket-client>=0.32.0 (from docker<2.3,>=2.2.1->-r requirements.txt (line 18))
  Downloading websocket_client-0.46.0-py2.py3-none-any.whl (200kB)
Collecting docker-pycreds>=0.2.1 (from docker<2.3,>=2.2.1->-r requirements.txt (line 18))
  Downloading docker_pycreds-0.2.1-py2.py3-none-any.whl
Collecting dockerpty<0.5,>=0.4.1 (from docker-compose<1.13,>=1.12->-r requirements.txt (line 19))
  Downloading dockerpty-0.4.1.tar.gz
Collecting colorama<0.4,>=0.3.7 (from docker-compose<1.13,>=1.12->-r requirements.txt (line 19))
  Downloading colorama-0.3.9-py2.py3-none-any.whl
Collecting docopt<0.7,>=0.6.1 (from docker-compose<1.13,>=1.12->-r requirements.txt (line 19))
  Downloading docopt-0.6.2.tar.gz
Collecting jsonschema<3,>=2.5.1 (from docker-compose<1.13,>=1.12->-r requirements.txt (line 19))
  Downloading jsonschema-2.6.0-py2.py3-none-any.whl
Collecting texttable<0.9,>=0.8.1 (from docker-compose<1.13,>=1.12->-r requirements.txt (line 19))
  Downloading texttable-0.8.8.tar.gz
Collecting cached-property<2,>=1.2.0 (from docker-compose<1.13,>=1.12->-r requirements.txt (line 19))
  Downloading cached_property-1.3.1-py2.py3-none-any.whl
Collecting html5lib!=0.9999,!=0.99999,<0.99999999,>=0.999 (from bleach<2.0,>=1.5->-r requirements.txt (line 22))
  Downloading html5lib-0.9999999.tar.gz (889kB)
Collecting py>=1.4.29 (from pytest<3.0,>=2.8->-r requirements.txt (line 24))
  Downloading py-1.5.2-py2.py3-none-any.whl (88kB)
Collecting coverage>=3.7.1 (from pytest-cov<3.0,>=2.2->-r requirements.txt (line 25))
  Downloading coverage-4.4.2-cp36-cp36m-manylinux1_x86_64.whl (197kB)
Collecting jedi>=0.10 (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading jedi-0.11.1-py2.py3-none-any.whl (250kB)
Collecting decorator (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading decorator-4.1.2-py2.py3-none-any.whl
Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.6/site-packages (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
Collecting pexpect; sys_platform != "win32" (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading pexpect-4.3.1-py2.py3-none-any.whl (55kB)
Collecting pickleshare (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading pickleshare-0.7.4-py2.py3-none-any.whl
Collecting pygments (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading Pygments-2.2.0-py2.py3-none-any.whl (841kB)
Collecting simplegeneric>0.8 (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading simplegeneric-0.8.1.zip
Collecting traitlets>=4.2 (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading traitlets-4.3.2-py2.py3-none-any.whl (74kB)
Collecting prompt-toolkit<2.0.0,>=1.0.4 (from ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading prompt_toolkit-1.0.15-py3-none-any.whl (247kB)
Collecting watchdog>=0.8 (from reload<1.0,>=0.9->-r requirements.txt (line 27))
  Downloading watchdog-0.8.3.tar.gz (83kB)
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->Flask<0.11,>=0.10->-r requirements.txt (line 1))
  Downloading MarkupSafe-1.0.tar.gz
Collecting Mako (from alembic>=0.6->Flask-Migrate<1.7,>=1.6->-r requirements.txt (line 3))
  Downloading Mako-1.0.7.tar.gz (564kB)
Collecting python-editor>=0.3 (from alembic>=0.6->Flask-Migrate<1.7,>=1.6->-r requirements.txt (line 3))
  Downloading python-editor-1.0.3.tar.gz
Collecting python-dateutil (from alembic>=0.6->Flask-Migrate<1.7,>=1.6->-r requirements.txt (line 3))
  Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
Collecting pycparser (from cffi>=1.1->bcrypt<2.1,>=2.0->-r requirements.txt (line 15))
  Downloading pycparser-2.18.tar.gz (245kB)
Collecting parso==0.1.1 (from jedi>=0.10->ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading parso-0.1.1-py2.py3-none-any.whl (91kB)
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading ptyprocess-0.5.2-py2.py3-none-any.whl
Collecting ipython-genutils (from traitlets>=4.2->ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading ipython_genutils-0.2.0-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<2.0.0,>=1.0.4->ipython<7.0,>=6.0->-r requirements.txt (line 26))
  Downloading wcwidth-0.1.7-py2.py3-none-any.whl
Collecting argh>=0.24.1 (from watchdog>=0.8->reload<1.0,>=0.9->-r requirements.txt (line 27))
  Downloading argh-0.26.2-py2.py3-none-any.whl
Collecting pathtools>=0.1.1 (from watchdog>=0.8->reload<1.0,>=0.9->-r requirements.txt (line 27))
  Downloading pathtools-0.1.2.tar.gz
Installing collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, Flask, SQLAlchemy, Flask-SQLAlchemy, Mako, python-editor, six, python-dateutil, alembic, Flask-Script, Flask-Migrate, Flask-Login, blinker, Flask-Mail, Flask-Principal, WTForms, Flask-WTF, passlib, Flask-Security, dominate, visitor, Flask-Bootstrap, markdown, Flask-Markdown, html5lib, bleach, Flask-Bleach, Flask-Analytics, waitress, psycopg2, pycparser, cffi, bcrypt, cachetools, PyYAML, websocket-client, requests, docker-pycreds, docker, dockerpty, colorama, docopt, jsonschema, texttable, cached-property, docker-compose, dumb-init, py, pytest, coverage, pytest-cov, parso, jedi, decorator, ptyprocess, pexpect, pickleshare, pygments, simplegeneric, ipython-genutils, traitlets, wcwidth, prompt-toolkit, ipython, argh, pathtools, watchdog, reload
  Running setup.py install for MarkupSafe: started
    Running setup.py install for MarkupSafe: finished with status 'done'
  Running setup.py install for itsdangerous: started
    Running setup.py install for itsdangerous: finished with status 'done'
  Running setup.py install for Flask: started
    Running setup.py install for Flask: finished with status 'done'
  Running setup.py install for SQLAlchemy: started
    Running setup.py install for SQLAlchemy: finished with status 'done'
  Running setup.py install for Mako: started
    Running setup.py install for Mako: finished with status 'done'
  Running setup.py install for python-editor: started
    Running setup.py install for python-editor: finished with status 'done'
  Running setup.py install for alembic: started
    Running setup.py install for alembic: finished with status 'done'
  Running setup.py install for Flask-Script: started
    Running setup.py install for Flask-Script: finished with status 'done'
  Running setup.py install for Flask-Migrate: started
    Running setup.py install for Flask-Migrate: finished with status 'done'
  Running setup.py install for Flask-Login: started
    Running setup.py install for Flask-Login: finished with status 'done'
  Running setup.py install for blinker: started
    Running setup.py install for blinker: finished with status 'done'
  Running setup.py install for Flask-Mail: started
    Running setup.py install for Flask-Mail: finished with status 'done'
  Running setup.py install for Flask-Principal: started
    Running setup.py install for Flask-Principal: finished with status 'done'
  Running setup.py install for WTForms: started
    Running setup.py install for WTForms: finished with status 'done'
  Running setup.py install for Flask-WTF: started
    Running setup.py install for Flask-WTF: finished with status 'done'
  Running setup.py install for Flask-Security: started
    Running setup.py install for Flask-Security: finished with status 'done'
  Running setup.py install for dominate: started
    Running setup.py install for dominate: finished with status 'done'
  Running setup.py install for visitor: started
    Running setup.py install for visitor: finished with status 'done'
  Running setup.py install for Flask-Bootstrap: started
    Running setup.py install for Flask-Bootstrap: finished with status 'done'
  Running setup.py install for markdown: started
    Running setup.py install for markdown: finished with status 'done'
  Running setup.py install for Flask-Markdown: started
    Running setup.py install for Flask-Markdown: finished with status 'done'
  Running setup.py install for html5lib: started
    Running setup.py install for html5lib: finished with status 'done'
  Running setup.py install for Flask-Bleach: started
    Running setup.py install for Flask-Bleach: finished with status 'done'
  Running setup.py install for waitress: started
    Running setup.py install for waitress: finished with status 'done'
  Running setup.py install for psycopg2: started
    Running setup.py install for psycopg2: finished with status 'done'
  Running setup.py install for pycparser: started
    Running setup.py install for pycparser: finished with status 'done'
  Running setup.py install for bcrypt: started
    Running setup.py install for bcrypt: finished with status 'done'
  Running setup.py install for PyYAML: started
    Running setup.py install for PyYAML: finished with status 'done'
  Running setup.py install for dockerpty: started
    Running setup.py install for dockerpty: finished with status 'done'
  Running setup.py install for docopt: started
    Running setup.py install for docopt: finished with status 'done'
  Running setup.py install for texttable: started
    Running setup.py install for texttable: finished with status 'done'
  Running setup.py install for dumb-init: started
    Running setup.py install for dumb-init: finished with status 'done'
  Running setup.py install for simplegeneric: started
    Running setup.py install for simplegeneric: finished with status 'done'
  Running setup.py install for pathtools: started
    Running setup.py install for pathtools: finished with status 'done'
  Running setup.py install for watchdog: started
    Running setup.py install for watchdog: finished with status 'done'
  Running setup.py install for reload: started
    Running setup.py install for reload: finished with status 'done'
Successfully installed Flask-0.10.1 Flask-Analytics-0.5.5 Flask-Bleach-0.0.2 Flask-Bootstrap-3.3.7.1 Flask-Login-0.2.11 Flask-Mail-0.9.1 Flask-Markdown-0.3 Flask-Migrate-1.6.0 Flask-Principal-0.4.0 Flask-SQLAlchemy-2.3.2 Flask-Script-2.0.6 Flask-Security-1.7.4 Flask-WTF-0.12 Jinja2-2.10 Mako-1.0.7 MarkupSafe-1.0 PyYAML-3.11 SQLAlchemy-1.2.0 WTForms-2.1 Werkzeug-0.14.1 alembic-0.9.6 argh-0.26.2 bcrypt-2.0.0 bleach-1.5.0 blinker-1.4 cached-property-1.3.1 cachetools-1.1.6 cffi-1.11.2 colorama-0.3.9 coverage-4.4.2 decorator-4.1.2 docker-2.2.1 docker-compose-1.12.0 docker-pycreds-0.2.1 dockerpty-0.4.1 docopt-0.6.2 dominate-2.3.1 dumb-init-1.0.3 html5lib-0.9999999 ipython-6.2.1 ipython-genutils-0.2.0 itsdangerous-0.24 jedi-0.11.1 jsonschema-2.6.0 markdown-2.6.10 parso-0.1.1 passlib-1.7.1 pathtools-0.1.2 pexpect-4.3.1 pickleshare-0.7.4 prompt-toolkit-1.0.15 psycopg2-2.6.2 ptyprocess-0.5.2 py-1.5.2 pycparser-2.18 pygments-2.2.0 pytest-2.9.2 pytest-cov-2.5.1 python-dateutil-2.6.1 python-editor-1.0.3 reload-0.9 requests-2.7.0 simplegeneric-0.8.1 six-1.11.0 texttable-0.8.8 traitlets-4.3.2 visitor-0.1.3 waitress-0.8.10 watchdog-0.8.3 wcwidth-0.1.7 websocket-client-0.46.0
Removing intermediate container dc170b7afcbb
 ---> a33013b3f3bd
Step 2/4 : ENV PYTHONUNBUFFERED=1
 ---> Running in de6e8c84b628
Removing intermediate container de6e8c84b628
 ---> 6f31443d23a4
Step 3/4 : ENTRYPOINT ["python3", "puffin.py"]
 ---> Running in 92fd34cc3c7a
Removing intermediate container 92fd34cc3c7a
 ---> 85f2b8c45810
Step 4/4 : CMD ["up"]
 ---> Running in 0454f421b853
Removing intermediate container 0454f421b853
 ---> c8dacc2bbdb6
Successfully built c8dacc2bbdb6
Successfully tagged puffinrocks/puffin:latest
WARNING: Image for service puffin was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Pulling dnsfix (sequenceiq/alpine-dig:latest)...
latest: Pulling from sequenceiq/alpine-dig
aac0c133338d: Pull complete
f1807b252f4e: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:edb82b6b7d5a59a6129fb274be003f8caa0b6ae32c64ff517f9bde9b9c0b5fc0
Status: Downloaded newer image for sequenceiq/alpine-dig:latest
Creating puffin_mailhog_1
Creating puffin_dns_1
Creating puffin_puffindb_1

ERROR: for dns  Cannot start service dns: driver failed programming external connectivity on endpoint puffin_dns_1 (1fdd0aa854ba3e9d09971d0ddb99beb759851408630bff922b93d8528f55b5a3): Error starting userland proxy: listen udp 0.0.0.0:53: bind: address already in use
ERROR: Encountered errors while bringing up the project.
loomchild commented 6 years ago

Hi,

Sorry for late reply.

Puffin runs a local DNS server to simplify app development. It's probably conflicting with your system's local DNS server. Unfortunately it's not easily possible to change the DNS port and avoid the conflict.

One solution could be to stop your local DNS server when developing Puffin - instructions depend on OS, but I can try to help you on Linux (generally disable DNS server in NetworkManager or simply kill the process running on port 53). Alternatively if you don't need to develop new apps and just run Puffin platform, you can avoid running the local DNS server altogether, by commenting the relevant section in docker-compose.yml.

Jarek

rocketman0 commented 6 years ago

Thanks for getting back to me. Figured as much so I ended up changing the host port in docker-compose.yml to one in the 50000 range, I appreciate you getting back to me though. Great worth with puffin, it's already awesome and I think has incredible potential