Private cloud shell history. Open source server for bashhub https://github.com/rcaloras/bashhub-client
Find a file
nicksherron 703567f19c cmd/root: add runtime profiling
This adds trace, cpu and memory profiling to the root command. To use, set any of the environment variables BH_SERVER_DEBUG_TRACE, BH_SERVER_DEBUG_CPU, BH_SERVER_DEBUG_MEM to a file name and the coinciding profile will run until you interrupt or terminate the process. Use the go tool pprof to analyse the output file you set in the environment variable.
2020-02-19 14:30:19 -05:00
.github Update issue templates 2020-02-19 00:27:59 -05:00
cmd cmd/root: add runtime profiling 2020-02-19 14:30:19 -05:00
internal Revert "internal/db: #9 add case insensitive search" 2020-02-19 13:01:34 -05:00
scripts cmd/transfer_test: add postgres to transfer tests 2020-02-19 04:02:58 -05:00
.gitignore added server_test helpers 2020-02-14 12:43:54 -05:00
.travis.yml travis fix 2020-02-16 12:37:58 -05:00
CONTRIBUTING.md Initial Commit. 2020-02-07 03:02:18 -05:00
Dockerfile internal/db: unexport db var and dbInit; cmd/root: startup message; internal/server: custom log 2020-02-10 00:39:57 -05:00
go.mod cmd/transfer,cmd/server: make SessionID pointer so sql null doesn't panic and improve transfer performance 2020-02-17 07:00:20 -05:00
go.sum cmd/transfer,cmd/server: make SessionID pointer so sql null doesn't panic and improve transfer performance 2020-02-17 07:00:20 -05:00
LICENSE LICENSE 2020-02-10 00:41:37 -05:00
main.go internal/db: unexport db var and dbInit; cmd/root: startup message; internal/server: custom log 2020-02-10 00:39:57 -05:00
Makefile cmd/transfer,cmd/server: make SessionID pointer so sql null doesn't panic and improve transfer performance 2020-02-17 07:00:20 -05:00
README.md Fix spelling in README 2020-02-16 21:26:21 -05:00

bashhub-server

Go Report Card Build Status Join the chat at https://gitter.im/bashhub_server/community

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

$ 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" >> ~/.zshr

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.