Running pgweb on Amazon EC2
Pgweb is a simple lightweight web-based client for PostgreSQL.
This is a guide on installing and setting up pgweb on Amazon EC2 (Ubuntu 20.04.4 LTS machine).
Requirement:
- An Amazon EC2 instance
Installation
SSH into your instance and update your system packages. sudo apt update && sudo apt upgrade -y
Download and install pgweb
.
curl -s https://api.github.com/repos/sosedoff/pgweb/releases/latest \
| grep linux_amd64.zip \
| grep download \
| cut -d '"' -f 4 \
| wget -qi - \
&& unzip pgweb_linux_amd64.zip \
&& rm pgweb_linux_amd64.zip \
&& mv pgweb_linux_amd64 /usr/local/bin/pgweb
Check installation by running;
pgweb -v
Output
Pgweb v0.11.11 (git: db2a7a8aa5bc449e4efa78cada9c76c3fe33bc39) (go: go1.17.6) (build time: 2022-03-30T04:36:12Z)
Usage
Start server with pgweb
.
By default pgweb runs on 127.0.0.1, localhost on port 8081. For Amazon EC2, bind pgweb to 0.0.0.0
to be able to access pgweb via the instance's public IP/DNS.
pgweb --bind 0.0.0.0
Open your-instance-public-ip:8081 in your browser to access pgweb.
To connect to a database at start of pgweb you can add the connection flags;
pgweb --bind 0.0.0.0 --host db-host-endpoint --user dbuser --db dbname
pgweb also supports url scheme connection;
pgweb --bind 0.0.0.0 --url postgres://dbuser:password@host:port/database
See more CLI options/flags.
Extend into a service(daemon)
This lets systemd manage pgweb and can be monitored via systemctl
.
Create a file pgweb.service
in /etc/systemd/system
folder.
sudo vi /etc/systemd/system/pgweb.service
Copy and paste the code below;
[Unit]
Description=pgweb
Wants=
After=network.target
[Service]
User=ubuntu
Type=simple
ExecStart=/usr/local/bin/pgweb --bind 0.0.0.0 --sessions
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
Note the --sessions
flag on ExecStart=/usr/local/bin/pgweb --bind 0.0.0.0 --sessions
is to enable multiple database sessions.
You can also get/clone this repo and move pgweb.service
file to /etc/systemd/system
folder.
sudo mv pgweb.service /etc/systemd/system
Reload services to include the new service.
sudo systemctl daemon-reload
Start the service and check the status.
sudo systemctl start pgweb.service
sudo systemctl status pgweb.service
If all goes through, enable the service to start at boot;
sudo systemctl enable pgweb.service
Subscribe to my newsletter
Read articles from Kobe Subramaniam directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Kobe Subramaniam
Kobe Subramaniam
I am a DevOps Engineer. I wear O-O