Tested on FreeBSD 13.2.
PostgreSQL
Install PostgreSQL:
# pkg install postgresql15-server postgresql15-client
Enable the PostgreSQL service:
# sysrc postgresql_enable="YES"
Initialize PostgreSQL and start the service:
# /usr/local/etc/rc.d/postgresql initdb # service postgresql start
Make sure the service is running properly on IPv4 and IPv6 port 5432:
$ sockstat -46 | grep 5432
Set a password for the default postgres user:
# passwd postgres
Create an owner user for your database:
# su - postgres $ createuser admin $ createdb foo_db -O admin
Inside the psql prompt, set an encrypted password for admin and grant exclusive access to foo_db to the admin user:
$ psql foo_db foo_db=# alter role admin with encrypted password 'yourpassword'; foo_db=# grant all privileges on database foo_db to admin; foo_db=# exit $ exit
Make PostgreSQL listen to all addresses, instead of just localhost.
# vi /var/db/postgres/data15/postgresql.conf
Uncomment the listen_addresses line and set it to:
listen_addresses = '*'
Change the security settings:
# vi /var/db/postgres/data15/pg_hba.conf
Go to the bottom of the file and set trust to md5 for all existing entries:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all md5 host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5
Also, allow remote IPv4 and IPv6 connections to our new database as admin only:
# Allow remote connections to foo_db as admin host foo_db admin 0.0.0.0/0 md5 host foo_db admin ::/0 md5
Restart the service:
# service postgresql restart
pgAdmin4
Install the needed packages:
# pkg install python py39-pip py39-virtualenv py39-sqlite3 ca_root_nss openjpeg rust
Upgrade pip to the latest version:
$ pip install --upgrade pip
Initialize the virtualenv for pgAdmin4 in your home directory:
$ cd $ virtualenv pgadmin4
Enter the virtualenv and install pgAdmin4. This will take a while:
$ . pgadmin4/bin/activate (pgadmin4) $ pip install pgadmin4
Create a local config file:
(pgadmin4) # mkdir -p /var/lib/pgadmin /var/log/pgadmin (pgadmin4) $ cp pgadmin4/lib/python3.9/site-packages/pgadmin4/config.py pgadmin4/lib/python3.9/site-packages/pgadmin4/config_local.py (pgadmin4) $ vi pgadmin4/lib/python3.9/site-packages/pgadmin4/config_local.py
Inside config_local.py, edit the following values:
DEFAULT_SERVER = '0.0.0.0' DEFAULT_SERVER_PORT = 5050
Start pgAdmin4 (always inside the virtualenv) and set up your account:
(pgadmin4) # pgadmin4 Email address: you@mail.com Password: yourpassword Retype password: yourpassword
Open a web browser and enter pgAdmin4 (replace the IP with the appropriate one) and log in with the email and password you just entered in the pgadmin4 prompt:
http://192.168.1.11:5050
Inside the web interface, go to File -> Preferences -> Binary Paths and under the PostgreSQL Binary Path section, check PostgreSQL 15 and set the binary path to /usr/local/bin/. Then click Save.
From now on, you can run pgadmin4 in the background like so:
(pgadmin4) # pgadmin4 &
Upgrading pgAdmin4
To upgrade pgAdmin4, you only have to delete and reinstall the virtualenv:
$ cd $ rm -rf pgadmin4 $ virtualenv pgadmin4 $ . pgadmin4/bin/activate (pgadmin4) $ pip install --upgrade pgadmin4
You also have to re-create config_local.py and set DEFAULT_SERVER (see above).