Diff
1diff --git a/README.md b/README.md
2index b2ff40a1715682cb016e017b99febabfa68e6654..8e3c1d4a99e503d66630732abddb40bb6303ab7f 100644
3--- a/README.md
4+++ b/README.md
5@@ -1,31 +1,80 @@
6-# Soft-Serve
7+# Soft Serve
8
9-Distribute your software on the command line with SSH and Git.
10+A tasty Git server. Self-hosted with a built in SSH powered TUI.
11
12-## What is it
13+## What is it?
14
15-Soft-Serve is a SSH server that hosts a Git server and interactive TUI built from
16-the repos you push to it. Authors can easily push their projects to Soft-Serve by
17-adding it as a remote and users can clone repos from Soft-Serve and stay up to
18-date with the TUI as you push commits.
19+Soft Serve is a Git server that runs its own SSH service, allows repo creation
20+on first push, is configured by cloning a `config` repo and provides a TUI
21+accessible to anyone over SSH without having to worry about setting up accounts
22+on the host machine. Give it a shot!
23+
24+```
25+ssh beta.charm.sh
26+```
27+
28+## Installing / Building
29+
30+The Soft Serve command is called `soft`. You can build it with `go`.
31+
32+```
33+cd cmd/soft
34+go build
35+```
36+
37+## Setting up a server
38+
39+Make sure `git` is installed, then run `soft`.
40+
41+## Configuring
42+
43+When Soft Serve is run for the first time, it creates a configuration repo that
44+contains the README displayed for Home and user access control. By default the
45+`config` repo is publicly writable, so be sure to setup your access as desired.
46+You can also set the `SOFT_SERVE_AUTH_KEY` environment variable and it will
47+restrict access to that initial public key.
48+
49+```
50+git clone ssh://localhost:23231/config
51+```
52
53 ## Pushing a repo
54
55-1. Run `soft-serve`
56-2. Add soft-serve as a remote on any git repo: `git remote add soft-serve ssh://git@localhost:23231/soft-serve`
57-3. Push stuff: `git push soft-serve main`
58+You can add your Soft Serve server as a remote to any existing repo.
59+
60+```
61+git remote add soft ssh://localhost:23231/REPO
62+```
63+
64+After you've added the remote, you can push. If it's a new repo, it will be
65+automatically added to the server.
66+
67+```
68+git push soft main
69+```
70+
71+## Soft Serve TUI
72+
73+Soft Serve provides a TUI over SSH to browse repos, view READMEs, and grab
74+clone commands.
75
76-## Cloning a repo
77+```
78+ssh localhost -p 23231
79+```
80
81-1. You'll need to know the name (for now, it's not listed anywhere): `git clone ssh://git@localhost:23231/soft-serve`
82+It's also possible to direct link to a specific repo.
83
84-## Soft-Serve TUI
85+```
86+ssh localhost -t -p 23231 REPO
87+```
88
89-If you `ssh localhost -p 23231` you'll see a list of the latest commits to the repos you've pushed.
90+### Server Options
91
92-## Auth
93+You have control over the various options via the following server environment
94+variables:
95
96-By default anyone can push or pull from the Git repositories. This is mainly
97-for testing, you can also whitelist public keys that have Git write access by
98-creating an authorized keys file with the public key for each author. By
99-default this file is expected to be at `./.ssh/soft_serve_git_authorized_keys`.
100+* `SOFT_SERVE_PORT` - SSH listen port (_default 23231_)
101+* `SOFT_SERVE_HOST` - SSH listen host (_default 0.0.0.0_)
102+* `SOFT_SERVE_KEY_PATH` - SSH host key-pair path (_default .ssh/soft_serve_server_ed25519_)
103+* `SOFT_SERVE_REPO_PATH` - Path where repos are stored (_default .repos_)
104+* `SOFT_SERVE_AUTH_KEY` - Initial admin public key (_default ""_)