This is the postgresSQL version.
A tiny web UI to update many Linux hosts over SSH, run ad-hoc scripts, and watch live logs stream back—backed by MongoDB and secured with JWT.
Great for homelabs, small fleets, or anytime you don’t want to copy-paste the same command into 10 terminals.
• Add & manage hosts (name, IP, SSH user, password, port, root flag)
• One-click apt update/upgrade per host or Update all
• Run custom commands or full bash scripts on selected hosts
• Live log streaming (SSE) for single/all/custom jobs
• JWT authentication with MongoDB storage
• Docker-ready (sample docker-compose included)
Use the provided docker-compose file to launch SSH Updater along with MongoDB and mongo-express.
Once started, access the web UI at http://localhost:8099.
The first user can self-register. After that, only logged-in users can add more users.
services:
ssh-updater:
image: kosztyk/ssh-updater-pg:latest
container_name: ssh-updater-pg
restart: unless-stopped
environment:
DATABASE_URL: postgres://user:password1@db:5432/sshupdaterdb
NODE_ENV: production
PORT: "8080"
ports:
- "8080:8080"
volumes:
- /app/node_modules
depends_on:
- db
db:
image: postgres:15
container_name: ssh-updater-db
restart: always
build: /root/ssh-updater/db-folder
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: sshupdaterdb
volumes:
- db-data:/var/lib/postgresql/data
ports:
- "5432:5432"
pgadmin:
image: dpage/pgadmin4:9.9
container_name: pgadmin
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: mail
PGADMIN_DEFAULT_PASSWORD: password
ports:
- "5050:80" # Exposes pgAdmin on port 5050
volumes:
- /root/ssh-updaterservers.json:/pgadmin4/servers.json:ro
depends_on:
- db
volumes:
dbdata:
• Passwords are stored in MongoDB for demo convenience — use SSH keys in production.
• Set a strong JWT_SECRET.
• Prefer HTTPS and restrict network access to known hosts.
MIT License — use freely, no warranty.
Do what you want, just don’t blame us if your cat upgrades the wrong server.