| .github | ||
| cmd | ||
| internal | ||
| scripts | ||
| .gitignore | ||
| .travis.yml | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| README.md | ||
bashhub-server
bashhub-server is a private cloud alternative for bashhub-client with some added features like regex search.
Features
- Very simple drop in replacement for bashhub.com server and easy to install and get running with existing bashhub-client and bh command.
- All the benefits of bashhub without having to send your shell history to a third-party
- Regex search
- Import old history from bashhub.com
- Quickly connect any client with access to your server bashhub-sever address/port.
- Written in Go so it's fast and is actively maintained
- Salt hashed password encryption and jwt authentication protected endpoints
Why?
I love the idea behind bashhub. Having my shell history centralized and queryable from various systems whether it be my home computer or from an ssh session on a server is great. However, even with encryption, I was a little leary of sending my shell commands to a third-party server, so bashhub-server was created.
Installation
Homebrew or Linuxbrew
$ brew install bashhub-server/latest/bashhub-server
Docker
$ docker pull nicksherron/bashhub-server
Go
go modules are required
$ GO111MODULE=on go get -u github.com/nicksherron/bashhub-server
Releases
Binaries for various os and architectures can be found in releases. If your system is not listed just submit an issue requesting your os and architecture.
Usage
$ bashhub-server --help
Usage:
   [flags]
   [command]
Available Commands:
  help        Help about any command
  transfer    Transfer bashhub history from one server to another
  version     Print the version number and build info
Flags:
  -a, --addr string   Ip and port to listen and serve on. (default "http://0.0.0.0:8080")
      --db string     db location (sqlite or postgres)
  -h, --help          help for this command
      --log string    Set filepath for HTTP log. "" logs to stderr.
Use " [command] --help" for more information about a command.
Running
Just run the server
$ bashhub-server
 _               _     _           _
| |             | |   | |         | |		version: v0.2.1
| |__   __ _ ___| |__ | |__  _   _| |		address: http://0.0.0.0:8080
| '_ \ / _' / __| '_ \| '_ \| | | | '_ \
| |_) | (_| \__ \ | | | | | | |_| | |_) |
|_.__/ \__,_|___/_| |_|_| |_|\__,_|_.__/
 ___  ___ _ ____   _____ _ __
/ __|/ _ \ '__\ \ / / _ \ '__|
\__ \  __/ |   \ V /  __/ |
|___/\___|_|    \_/ \___|_|
2020/02/10 03:04:11 Listening and serving HTTP on http://0.0.0.0:8080
or on docker (backend database files are persisted in container volume /data)
$ docker run -d -p 8080:8080 --name bashhub-server  nicksherron/bashhub-server 
Then add export BH_URL=http://localhost:8080 (or whatever you set your bashhub-server address to) to your .zshrc or .bashrc
$ echo "export BH_URL=http://localhost:8080" >> ~/.bashrc
or
$ echo "export BH_URL=http://localhost:8080" >> ~/.zshrc
Thats it! Restart your shell and re-run bashhub setup.
$ $SHELL && bashhub setup
Changing default db
By default the backend db uses sqlite, with the location for each os shown below.
| os | default | 
|---|---|
| Unix | $XDG_CONFIG_HOME/bashhub-server/data.db OR $HOME/.config/bashhub-server/data.db | 
| Darwin | $HOME/Library/Application Support/bashhub-server/data.db | 
| Windows | %AppData%\bashhub-server\data.db | 
| Plan 9 | $home/lib/bashhub-server/data.db | 
To set a different sqlite db file to use, run
$ bashhub-server --db path/to/file.db
Postgresql is also supported by bashhub-server. To use postgres specify the postgres uri in the --db flag with the following format
$ bashhub-server --db "postgres://user:password@localhost:5432?sslmode=disable"
Using Regex
bashhub-server supports regex queries sent by the bh command (bashhub-client)
Without regex
$ bh bash
bashhub setup
docker pull nicksherron/bashhub-server
bin/bashhub-server version
untar bashhub-server_v0.1.0_darwin_amd64.tar.gz
cd bashhub-server_v0.1.0_darwin_amd64
./bashhub-server version
make build && bin/bashhub-server
cd bashhub-server
brew install bashhub-server/latest/bashhub-server
bashhub-server version
bashhub-server --help
With regex
$ bh "^bash"
bashhub setup
bashhub-server version
bashhub-server --help
all commands with only 6 letters
$ bh "^[a-zA-Z]{6}$"
whoami
ggpush
goland
ggpull
Transferring history from bashhub.com
You can transfer your command history from one server to another with then bashhub-server transfer
command.
$ bashhub-server transfer \
    --src-user 'user' \
    --src-pass 'password' \
    --dst-user 'user' \
    --dst-pass 'password' 
transferring 872 / 8909 [-->____________________] 9.79% 45 inserts/sec
If you're transferring from Bashhub.com they have a rate limit of 10 requests a seconds and you are limited to your last 10,000 commands.