Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nicksherron/bashhub-server
Private cloud shell history. Open source server for bashhub https://github.com/rcaloras/bashhub-client
https://github.com/nicksherron/bashhub-server
bash cli client-server cloud history server terminal zsh
Last synced: about 2 months ago
JSON representation
Private cloud shell history. Open source server for bashhub https://github.com/rcaloras/bashhub-client
- Host: GitHub
- URL: https://github.com/nicksherron/bashhub-server
- Owner: nicksherron
- License: apache-2.0
- Created: 2020-02-07T16:14:37.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-30T01:30:00.000Z (over 1 year ago)
- Last Synced: 2024-08-02T09:27:34.176Z (5 months ago)
- Topics: bash, cli, client-server, cloud, history, server, terminal, zsh
- Language: Go
- Homepage:
- Size: 167 KB
- Stars: 303
- Watchers: 8
- Forks: 22
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-bash - bashhub-server - Privately hosted open source bashhub server. (Command-Line Productivity / Reusable Things)
README
# bashhub-server
[![CI](https://github.com/nicksherron/bashhub-server/actions/workflows/tests.yml/badge.svg)](https://github.com/nicksherron/bashhub-server/actions/workflows/tests.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/nicksherron/bashhub-server)](https://goreportcard.com/report/github.com/nicksherron/bashhub-server)bashhub-server is a private cloud alternative for [bashhub-client](https://github.com/rcaloras/bashhub-client) with some
added features like regex search.
## Features- Very simple drop in replacement for bashhub.com server and easy to [install](https://github.com/nicksherron/bashhub-server#installation) 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](https://github.com/nicksherron/bashhub-server#using-regex) search
- [Import](https://github.com/nicksherron/bashhub-server#transferring-history-from-bashhubcom) 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](https://github.com/nicksherron/bashhub-server/releases).
If your system is not listed just submit an issue requesting your os and architecture.## Usage
```
$ bashhub-server --helpUsage:
[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 infoFlags:
-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 bashbashhub 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.