# Dropshell

A system management tool for server operations, written in C++.

## Installation

```
curl -fsSL https://gitea.jde.nz/public/dropshell/releases/download/latest/install.sh | bash
```

This installs as dropshell for the local user, with a symbolic link ds.
You'll need to run:
```
~/.local/bin/dropshell edit
~/.local/bin/dropshell install
source ~/.bashrc
```
to configure dropshell and install the local components.

## Remote Server Setup

### Initial setup

Auto setup script which creates a dropshell user, and includes installing docker if not already present:
```
curl -fsSL https://gitea.jde.nz/public/dropshell/releases/download/latest/server_autosetup.sh | sudo bash
```

Manual steps:
1. `apt install curl wget jq`
1. `curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && rm get-docker.sh`
1. `useradd -m dropshell && usermod -aG docker dropshell && chsh -s /bin/bash dropshell`
1. Put appropriate ssh keys in `/home/dropshell/.ssh/authorized_keys`
1. Test ssh'ing into the server.


### Configure and Use Remote Server

#### Add to local dropshell configuration, and install remote agent
Back on the dropshell host:
1. `dropshell create-server SERVERNAME`
1. `dropshell edit SERVERNAME`
1. `dropshell install SERVERNAME`

#### Install Services
Create and install a service
1. `ds template list`  -- see what templates are available to install.
1. `ds create-service SERVERNAME SERVICENAME TEMPLATE`
1. `ds edit SERVERNAME SERVICENAME`
1. Edit other config files if needed.
1. `ds install SERVERNAME SERVICENAME`
1. `ds list`

The service should now be seen to be running.