-
Notifications
You must be signed in to change notification settings - Fork 141
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
311886f
commit 5ca4b8d
Showing
1 changed file
with
45 additions
and
38 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,80 +1,87 @@ | ||
# Soft Serve | ||
Soft Serve | ||
========== | ||
|
||
A tasty Git server. Self-hosted with a built in SSH powered TUI. | ||
A tasty Git server that runs its own SSH service. 🍦 | ||
|
||
## What is it? | ||
* Configure with `git` | ||
* Create repos on demand with `git push` | ||
* Browse repos with an SSH-accessible TUI | ||
* Easy access control | ||
- Allow/disallow anonymous access | ||
- Add collaborators with SSH public keys | ||
- Repos can be public or private | ||
|
||
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! | ||
## What does it look like? | ||
|
||
``` | ||
ssh beta.charm.sh | ||
``` | ||
Just run `ssh beta.charm.sh` for an example. | ||
|
||
## Installing / Building | ||
## Building/installing | ||
|
||
The Soft Serve command is called `soft`. You can build it with `go`. | ||
The Soft Serve command is called `soft`. You can build and install it with | ||
`go`: | ||
|
||
``` | ||
cd cmd/soft | ||
go build | ||
```bash | ||
git clone ssh://beta.charm.sh/soft-serve | ||
cd soft-serve/cmd/soft | ||
go install | ||
``` | ||
|
||
## Setting up a server | ||
|
||
Make sure `git` is installed, then run `soft`. | ||
Make sure `git` is installed, then run `soft`. That’s it. | ||
|
||
## Configuring | ||
## Configuration | ||
|
||
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. | ||
When `soft` is run for the first time, it creates a configuration repo | ||
containing the main README displayed in the TUI as well as a config file for | ||
user access control. | ||
|
||
``` | ||
git clone ssh://localhost:23231/config | ||
``` | ||
|
||
## Pushing a repo | ||
The `config` repo is publicly writable by default, so be sure to setup your | ||
access as desired. You can also set the `SOFT_SERVE_INITIAL_ADMIN_KEY` | ||
environment variable before first run and it will restrict access to that | ||
initial public key until you configure things otherwise. | ||
|
||
## Pushing (and creating!) repos | ||
|
||
You can add your Soft Serve server as a remote to any existing repo. | ||
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. | ||
After you’ve added the remote just go ahead and push. If the repo doesn’t exist | ||
on the server it’ll be created. | ||
|
||
``` | ||
git push soft main | ||
``` | ||
|
||
## Soft Serve TUI | ||
## The Soft Serve TUI | ||
|
||
Soft Serve provides a TUI over SSH to browse repos, view READMEs, and grab | ||
clone commands. | ||
Soft Serve serves a TUI over SSH for browsing repos, viewing READMEs, and | ||
grabbing clone commands: | ||
|
||
``` | ||
ssh localhost -p 23231 | ||
``` | ||
|
||
It's also possible to direct link to a specific repo. | ||
It's also possible to “link” to a specific repo: | ||
|
||
``` | ||
ssh localhost -t -p 23231 REPO | ||
``` | ||
|
||
### Server Options | ||
### Server Settings | ||
|
||
You have control over the various options via the following server environment | ||
variables: | ||
In addition to the Git-based configuration above, there are a few | ||
environment-level settings: | ||
|
||
* `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 ""_) | ||
* `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_INITIAL_ADMIN_KEY`: The public key that will initially have admin access to repos (_default ""_). This must be set before `soft` runs for the first time and creates the `config` repo. If set after the `config` repo has been created, this setting has no effect. |