-
Notifications
You must be signed in to change notification settings - Fork 137
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update README with auth and config info
- Loading branch information
Toby Padilla
committed
Oct 5, 2021
1 parent
8125eee
commit b4d6c99
Showing
1 changed file
with
68 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 ""_) |