Solved PGAdmin4 run problems

There is no PGAdmin4 FreeBSD port that I can find. I therefore followed the tutorial on installing PGAdmin4 via virtualenv. This appears to build cleanly but when it is run it fails with:
Code:
ImportError: /root/pgadmin4/lib/python3.7/site-packages/cryptography/hazmat/bindings/_openssl.abi3.so: Undefined symbol "SSLv3_client_method"

So, if this is not the place then where can I seek help with this?
 
I don't know anything about virtualenv, but did you really try to install it to /root ? Because #1, that's a bad idea even if you did get it to work and #2 it might be why it doesn't work.
 
Installing into root on a standalone system with no other users than myself presents a rather limited attack surface. Bad or good depends upon circumstance.

In any case it makes no difference where the virtual environment is created, or whether with virtualenv or python3.7 -m vend, the result is the same.
 
Did you bind it to the loopback only, then?

Nevertheless, if you installed it to /root

/root/pgadmin4/lib/python3.7/site-packages/cryptography/hazmat/bindings/_openssl.abi3.so

Means the thing you installed didn't have all the files it needed.
 
I rebuilt this several times, with various users, the most recent being: sudo python3.7 -m venv --clear --system-site-packages --symlinks /opt/python_venv/3.7/pgadmin4/.

I also installed all the FreeBSD py37 packages for modules referenced in the traceback that I could identify:
Code:
pkg install py37-cryptography \
py37-ndg_httpsclient \
py37-openssl \
py37-paramiko \
py37-pyasn1 \
py37-sshtunnel

I discovered that despite installing the py37-cryptography package, pip outside the venv could not find it. The effect this had when building pgadmin4 inside the venv was that cryptography v3.0 was built and used by the venv pip instead of the FreeBSD packaged v2.6.1 in local.

Therein lay the problem. I deleted the venv and reinstalled py37-cryptography using the -f option to pkg install and pip could now find the local site cryptography module from inside the venv.

Following this and recreating the venv building pgadmin4 inside it produced a working pgadmin4 server.

This is solved.

P.S.

There is no desktop application provided for FreeBSD. Those are wrappers for various GDMs which set the virtual environment and call pgadmin4, presumably after setting the SERVER_MODE env variable to False. There is probably one for mate but I did not bother to look.

To use pgadmin4 one must enter the virtual environment:
Code:
[toor@vhost01 ~ (master)]# source /opt/python_venv/3.7/pgadmin4/bin/activate
(pgadmin4) [toor@vhost01 ~ (master)]# /opt/python_venv/3.7/pgadmin4/bin/pgadmin4
<ctrl C>
(pgadmin4) [toor@vhost01 ~ (master)]# deactivate
[toor@vhost01 ~ (master)]#

If run directly with the default config.py file then the pgadmin4 server will start, and you can connect to localhost:5050, but you will get an invalid CSRF token error at logon. The cause of this is unknown to me and likely to remain that way. I have no intention of running this as a public service.

To avoid this error configure PGAdmin4 as a desktop browser application by setting SERVER_MODE = False in config_local.py:

Code:
# replace  /opt/python_venv/3.7/pgadmin4/ with whatever you named your venv virtual environment location.
cp -p /opt/python_venv/3.7/pgadmin4/lib/python3.7/site-packages/pgadmin4/config.py \
      /opt/python_venv/3.7/pgadmin4/lib/python3.7/site-packages/pgadmin4/config_local.py

gvim cp /opt/python_venv/3.7/pgadmin4/lib/python3.7/site-packages/pgadmin4/config.py /opt/python_venv/3.7/pgadmin4/lib/python3.7/site-packages/pgadmin4/config_local.py

. . .
if (not hasattr(builtins, 'SERVER_MODE')) or builtins.SERVER_MODE is None:
    SERVER_MODE = True
else:
    SERVER_MODE = builtins.SERVER_MODE

# Enable desktop mode. Must follow default setting above.
SERVER_MODE = False
. . .

In server mode the default location for the sqlite3 password database is: /var/lib/pgadmin/pgadmin4.db. In desktop mode the default location is ~/.pgadmin/pgadmin4.db.

Even in desktop mode you will be asked for a master username and password. Do not forget them. PGAdmin4 is configured to listen on localhost as a default. Therefor a strong master password is only required on multi-user systems. Which in my environment is a vanishing small number approaching zero.
 
Back
Top