Skip to content

Commit

Permalink
Update README with auth and config info
Browse files Browse the repository at this point in the history
  • Loading branch information
Toby Padilla committed Oct 5, 2021
1 parent 8125eee commit b4d6c99
Showing 1 changed file with 68 additions and 19 deletions.
87 changes: 68 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,80 @@
# Soft-Serve
# Soft Serve

Distribute your software on the command line with SSH and Git.
A tasty Git server. Self-hosted with a built in SSH powered TUI.

## What is it
## What is it?

Soft-Serve is a SSH server that hosts a Git server and interactive TUI built from
the repos you push to it. Authors can easily push their projects to Soft-Serve by
adding it as a remote and users can clone repos from Soft-Serve and stay up to
date with the TUI as you push commits.
Soft Serve is a Git server that runs its own SSH service, allows repo creation
on first push, is configured by cloning a `config` repo and provides a TUI
accessible to anyone over SSH without having to worry about setting up accounts
on the host machine. Give it a shot!

```
ssh beta.charm.sh
```

## Installing / Building

The Soft Serve command is called `soft`. You can build it with `go`.

```
cd cmd/soft
go build
```

## Setting up a server

Make sure `git` is installed, then run `soft`.

## Configuring

When Soft Serve is run for the first time, it creates a configuration repo that
contains the README displayed for Home and user access control. By default the
`config` repo is publicly writable, so be sure to setup your access as desired.
You can also set the `SOFT_SERVE_AUTH_KEY` environment variable and it will
restrict access to that initial public key.

```
git clone ssh://localhost:23231/config
```

## Pushing a repo

1. Run `soft-serve`
2. Add soft-serve as a remote on any git repo: `git remote add soft-serve ssh://git@localhost:23231/soft-serve`
3. Push stuff: `git push soft-serve main`
You can add your Soft Serve server as a remote to any existing repo.

```
git remote add soft ssh://localhost:23231/REPO
```

After you've added the remote, you can push. If it's a new repo, it will be
automatically added to the server.

```
git push soft main
```

## Soft Serve TUI

Soft Serve provides a TUI over SSH to browse repos, view READMEs, and grab
clone commands.

## Cloning a repo
```
ssh localhost -p 23231
```

1. You'll need to know the name (for now, it's not listed anywhere): `git clone ssh://git@localhost:23231/soft-serve`
It's also possible to direct link to a specific repo.

## Soft-Serve TUI
```
ssh localhost -t -p 23231 REPO
```

If you `ssh localhost -p 23231` you'll see a list of the latest commits to the repos you've pushed.
### Server Options

## Auth
You have control over the various options via the following server environment
variables:

By default anyone can push or pull from the Git repositories. This is mainly
for testing, you can also whitelist public keys that have Git write access by
creating an authorized keys file with the public key for each author. By
default this file is expected to be at `./.ssh/soft_serve_git_authorized_keys`.
* `SOFT_SERVE_PORT` - SSH listen port (_default 23231_)
* `SOFT_SERVE_HOST` - SSH listen host (_default 0.0.0.0_)
* `SOFT_SERVE_KEY_PATH` - SSH host key-pair path (_default .ssh/soft_serve_server_ed25519_)
* `SOFT_SERVE_REPO_PATH` - Path where repos are stored (_default .repos_)
* `SOFT_SERVE_AUTH_KEY` - Initial admin public key (_default ""_)

0 comments on commit b4d6c99

Please sign in to comment.