pgweb Documentation

Cross-platform client for PostgreSQL databases

9,540 stars Go Go 3 files ยท ~932 tokens #cross-platform#golang#pgweb#postgresql
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy pgweb on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name pgweb -p 5433:5433 --restart always sosedoff/pgweb:latest
Configured Services & Ports
โš™๏ธ postgres
image: postgres:18
๐Ÿ”Œ Ports: 5433:5432
โš™๏ธ pgweb
image: sosedoff/pgweb:latest
๐Ÿ”Œ Ports: 8081:8081
docker-compose.yml
yaml (docker-compose.yml)
---
services:
  postgres:
    container_name: pgweb-postgres
    image: postgres:18
    ports:
      - 5433:5432
    volumes:
      - data:/var/lib/postgresql
    environment:
      POSTGRES_DB: pgweb
      POSTGRES_PASSWORD: pgweb
      POSTGRES_USER: pgweb
    healthcheck:
      test: pg_isready -U pgweb -h 127.0.0.1
      interval: 5s
    networks:
      - pgweb

  pgweb:
    container_name: pgweb
    image: sosedoff/pgweb:latest
    build: .
    environment:
      PGWEB_DATABASE_URL: postgres://pgweb:pgweb@pgweb-postgres:5432/pgweb?sslmode=disable
    ports:
      - 8081:8081
    networks:
      - pgweb
    depends_on:
      postgres:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "nc", "-vz", "127.0.0.1", "8081"]
      interval: 5s

volumes:
  data:
    name: pgweb_postgres

networks:
  pgweb:
    name: pgweb

Technical Documentation: sosedoff/pgweb

โ„น๏ธ Provenance: Multi-Tier Ingestion ยท CodeWiki Reference

Overview (`README.md`)

pgweb

Simple web-based and cross platform PostgreSQL database explorer.





Overview

Pgweb is a web-based database explorer for PostgreSQL, written in Go, and works
on Mac, Linux and Windows machines. Distributed as a simple binary with zero dependencies.
Very easy to use and packs just the right amount of features.

See application screenshots

Features

  • Cross-platform: Mac/Linux/Windows (64bit).
  • Simple installation (distributed as a single binary).
  • Zero dependencies.
  • Works with PostgreSQL 9.6+.
  • Supports native SSH tunnels.
  • Multiple database sessions.
  • Execute and analyze custom SQL queries.
  • Table and query data export to CSV/JSON/XML.
  • Query history.
  • Server bookmarks.

Visit WIKI for more details.

Demo

Visit https://pgweb-demo.fly.dev/ to see Pgweb in action.

Installation

Usage

Start server:

text
pgweb

You can also provide connection flags:

text
pgweb --host localhost --user myuser --db mydb

Connection URL scheme is also supported:

text
pgweb --url postgres://user:password@host:port/database?sslmode=[mode]
pgweb --url "postgres:///database?host=/absolute/path/to/unix/socket/dir"

Multiple database sessions

To enable multiple database sessions in pgweb, start the server with:

text
pgweb --sessions

Or set environment variable:

text
PGWEB_SESSIONS=1 pgweb

Testing

Before running tests, make sure you have PostgreSQL server running on localhost:5432
interface. Also, you must have postgres user that could create new databases
in your local environment. Pgweb server should not be running at the same time.

Execute test suite:

text
make test

If you're using Docker locally, you might also run pgweb test suite against
all supported PostgreSQL version with a single command:

text
make test-all

Contribute

  • Fork this repository
  • Create a new feature branch for a new functionality or bugfix
  • Commit your changes
  • Execute test suite
  • Push your code and open a new pull request
  • Use issues for any questions
  • Check wiki for extra documentation

License

The MIT License (MIT). See LICENSE file for more details.


Overview (`config/examples/connect_backend_go/README.md`)

connect-backend-go

Example Golang backend for Pgweb Connect feature

Usage

Run the backend:

bash
go run main.go

Configure pgweb:

bash
pgweb --sessions --connect-backend=http://localhost:4567 --connect-token=test

Overview (`config/examples/connect_backend_ruby/README.md`)

connect-backend-ruby

Example Ruby backend for Pgweb Connect feature

Usage

Install and run the backend:

bash
bundle install
ruby main.rb

Configure pgweb:

bash
pgweb --sessions --connect-backend=http://localhost:4567 --connect-token=test

--- METRICS ---