|
|
|
@@ -2,40 +2,136 @@
|
|
|
|
|
|
|
|
|
|
**Cross-platform SSH/SFTP management tool with secure credential storage**
|
|
|
|
|
|
|
|
|
|
## V1 (Legacy) — CLI/TUI
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
V1 adalah versi CLI/TUI yang sudah selesai dan di-freeze. Semua kode ada di folder [`v1/`](v1/).
|
|
|
|
|
- **Secure Credential Management** — Store SSH credentials with proper file permissions (0600)
|
|
|
|
|
- **SSH Connection** — Connect to hosts via native SSH or Go SSH client
|
|
|
|
|
- **Host Management** — Add, list, connect, edit, delete hosts
|
|
|
|
|
- **Export/Import** — Backup and transfer credentials across devices
|
|
|
|
|
- **TUI Interface** — Interactive terminal user interface for host management
|
|
|
|
|
- **Cross-Platform** — Works on Linux, macOS, Windows, and Termux (Android)
|
|
|
|
|
- **Fast CLI** — Quick commands for power users
|
|
|
|
|
- **Tag-based Organization** — Categorize hosts with custom tags and groups
|
|
|
|
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
|
|
|
|
|
### Installation
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd v1
|
|
|
|
|
# Build from source
|
|
|
|
|
git clone https://git.tukangketik.id/swanadiva/HostKeeper.git
|
|
|
|
|
cd hostkeeper
|
|
|
|
|
make build
|
|
|
|
|
./hostkeeper tui
|
|
|
|
|
|
|
|
|
|
# Or install directly
|
|
|
|
|
go install git.tukangketik.id/swanadiva/hostkeeper/cmd/hostkeeper@latest
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Lihat [`v1/README.md`](v1/README.md) untuk dokumentasi lengkap.
|
|
|
|
|
### Usage
|
|
|
|
|
|
|
|
|
|
## V2 (In Development) — GoFiber + React + Electron
|
|
|
|
|
```bash
|
|
|
|
|
# Add a host (interactive)
|
|
|
|
|
hostkeeper add
|
|
|
|
|
|
|
|
|
|
V2 adalah rewrite dengan arsitektur baru:
|
|
|
|
|
- **Backend**: GoFiber v2 (fasthttp) — lokal HTTP server di `app/backend/`
|
|
|
|
|
- **Frontend**: React + TypeScript + TailwindCSS v4 di `app/frontend/`
|
|
|
|
|
- **Desktop**: Electron wrapper di `app/electron/`
|
|
|
|
|
- **Mobile**: WebView shell di `mobile/`
|
|
|
|
|
# Or with flags
|
|
|
|
|
hostkeeper add myserver --host 192.168.1.10 --user admin --password mypass
|
|
|
|
|
|
|
|
|
|
Lihat [docs/v2/](docs/v2/) untuk dokumentasi perencanaan.
|
|
|
|
|
# List all hosts
|
|
|
|
|
hostkeeper list
|
|
|
|
|
|
|
|
|
|
## Struktur Repository
|
|
|
|
|
# Connect to host
|
|
|
|
|
hostkeeper connect myserver
|
|
|
|
|
|
|
|
|
|
# Edit host
|
|
|
|
|
hostkeeper edit myserver
|
|
|
|
|
|
|
|
|
|
# Delete host
|
|
|
|
|
hostkeeper delete myserver
|
|
|
|
|
|
|
|
|
|
# Launch TUI
|
|
|
|
|
hostkeeper tui
|
|
|
|
|
```
|
|
|
|
|
hostkeeper/
|
|
|
|
|
├── v1/ ← V1 CLI/TUI (frozen)
|
|
|
|
|
├── app/ ← V2 backend + frontend + electron
|
|
|
|
|
├── mobile/ ← V2 mobile wrapper
|
|
|
|
|
├── template/ ← Referensi UI React (Lumina System)
|
|
|
|
|
└── docs/
|
|
|
|
|
└── v2/ ← Dokumentasi perencanaan V2
|
|
|
|
|
|
|
|
|
|
## Core Commands
|
|
|
|
|
|
|
|
|
|
| Command | Description |
|
|
|
|
|
|---------|-------------|
|
|
|
|
|
| `hostkeeper add [name]` | Add a new SSH host |
|
|
|
|
|
| `hostkeeper list` | List all saved hosts |
|
|
|
|
|
| `hostkeeper connect <name>` | Connect to a host |
|
|
|
|
|
| `hostkeeper edit <name>` | Edit a host configuration |
|
|
|
|
|
| `hostkeeper delete <name>` | Delete a host |
|
|
|
|
|
| `hostkeeper export <file>` | Export data to JSON file |
|
|
|
|
|
| `hostkeeper import <file>` | Import data from JSON file |
|
|
|
|
|
| `hostkeeper tui` | Launch TUI interface |
|
|
|
|
|
| `hostkeeper completion [shell]` | Generate shell completion |
|
|
|
|
|
| `hostkeeper version` | Print version info |
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
|
|
See [Installation Guide](docs/INSTALLATION.md) for detailed instructions for all platforms.
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
|
|
See [Usage Guide](docs/USAGE.md) for detailed command examples.
|
|
|
|
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
See [Architecture Overview](docs/ARCHITECTURE.md) for technical details.
|
|
|
|
|
|
|
|
|
|
## Security
|
|
|
|
|
|
|
|
|
|
- All credential files use `0600` permissions (owner read/write only)
|
|
|
|
|
- Passwords and keys are never logged or displayed in error messages
|
|
|
|
|
- Encrypted storage planned for Phase 2
|
|
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
|
|
|
|
|
### Prerequisites
|
|
|
|
|
|
|
|
|
|
- Go 1.21+
|
|
|
|
|
- Make (optional, for build automation)
|
|
|
|
|
|
|
|
|
|
### Setup
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
git clone https://git.tukangketik.id/swanadiva/HostKeeper.git
|
|
|
|
|
cd hostkeeper
|
|
|
|
|
make deps
|
|
|
|
|
make build
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Testing
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# All tests
|
|
|
|
|
make test
|
|
|
|
|
|
|
|
|
|
# With coverage
|
|
|
|
|
make test-coverage
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Build
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Current platform
|
|
|
|
|
make build
|
|
|
|
|
|
|
|
|
|
# All platforms
|
|
|
|
|
make release
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Tech Stack
|
|
|
|
|
|
|
|
|
|
- **Language**: Go 1.21+
|
|
|
|
|
- **CLI Framework**: [Cobra](https://github.com/spf13/cobra)
|
|
|
|
|
- **TUI Framework**: [Bubble Tea](https://github.com/charmbracelet/bubbletea)
|
|
|
|
|
- **SSH Library**: [golang.org/x/crypto/ssh](https://pkg.go.dev/golang.org/x/crypto/ssh)
|
|
|
|
|
|
|
|
|
|
## Project Status
|
|
|
|
|
|
|
|
|
|
Project is in active development. See [PROJECT_STATE.md](PROJECT_STATE.md) for current progress.
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
MIT
|
|
|
|
|