From b4d6c99669933c8f6e773047757e26a30cc26d5b Mon Sep 17 00:00:00 2001 From: Toby Padilla Date: Tue, 28 Sep 2021 17:44:22 -0500 Subject: [PATCH] Update README with auth and config info --- README.md | 87 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index b2ff40a17..8e3c1d4a9 100644 --- a/README.md +++ b/README.md @@ -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 ""_)