pgAdmin 4
pgAdmin 4 to oficjalny webowy klient do PostgreSQL.
Architektura
graph LR
I[Internet<br/>:443] --> T[Traefik]
T -->|authelia-auth| P[pgAdmin 4<br/>:80]
P -.->|PostgreSQL<br/>connection| DB1[(plausible_db)]
P -.-> DB2[(inna baza)]
pgAdmin ma własny ekran logowania, ale authelia-auth przed nim daje drugą warstwę i SSO z resztą homelaba. Dlatego dalej wyłączam SERVER_MODE i hasło master pgAdmina — i tak jestem już uwierzytelniony zanim się tam dostanę.
Konfiguracja
docker-compose.yml
services:
pgadmin4:
image: dpage/pgadmin4
container_name: pgadmin4
restart: unless-stopped
env_file:
- .env
environment:
PGADMIN_DEFAULT_EMAIL: "robertolechowski@gmail.com"
PGADMIN_CONFIG_SERVER_MODE: "False"
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: "False"
volumes:
- ./data:/var/lib/pgadmin
networks: [traefik_network]
labels:
com.centurylinklabs.watchtower.enable: true
networks:
traefik_network:
external: true
.env
PGADMIN_DEFAULT_PASSWORD=<haslo>
Najważniejsze zmienne środowiskowe:
| Parametr | Wartość | Opis |
|---|---|---|
PGADMIN_DEFAULT_EMAIL | robertolechowski@gmail.com | Login konta inicjalizowanego przy pierwszym starcie. |
PGADMIN_DEFAULT_PASSWORD | <haslo> | Hasło konta początkowego. |
PGADMIN_CONFIG_SERVER_MODE | False | Tryb desktopowy zamiast wieloużytkownikowego. Jeden user, brak panelu administracyjnego, prostsza obsługa. |
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED | False | Wyłącza dodatkowe hasło szyfrujące zapisane hasła do baz. Za Authelia to nadmiarowa warstwa. |
Struktura katalogów
pgadmin4/
├── docker-compose.yml
├── .env # PGADMIN_DEFAULT_EMAIL/PASSWORD (gitignore)
├── .gitignore
└── data/ # baza pgAdmina, zapisane serwery (gitignore)
Router Traefik
Konfiguracja w pliku dynamic/pgadmin4.yaml na hoście z Traefikiem:
http:
routers:
dbadmin:
rule: "Host(`dbadmin.robertolechowski.com`)"
entryPoints: [websecure]
middlewares: [authelia-auth]
tls:
certresolver: letsencrypt
service: db_admin
services:
db_admin:
loadBalancer:
servers:
- url: "http://pgadmin4:80"