summaryrefslogtreecommitdiff
path: root/EndoForge/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'EndoForge/README.md')
-rw-r--r--EndoForge/README.md102
1 files changed, 102 insertions, 0 deletions
diff --git a/EndoForge/README.md b/EndoForge/README.md
new file mode 100644
index 0000000..9c22bf3
--- /dev/null
+++ b/EndoForge/README.md
@@ -0,0 +1,102 @@
1EndoForge
2---------
3Convert a Git repository into a Forge by merging this repository.
4
5
6
7
8
9
10WHAT IT DOES
11------------
12
13This repository contains the code to share itself (the repository)
14through Git-over-SSH.
15
16It also contains the code to listen for changes sent to itself through
17Git-over-SSH.
18
19
20
21
22
23
24HOW IT WORKS
25------------
26
27Git contains a program `git-receive-pack` which implements a git
28protocol server. The `git-receive-pack` expects to be launched as an SSH
29server "ForcedCommand" in a configuration that protects the server from
30untrustworthy users.
31
32Normally, the SSH server only permits users who have already uploaded
33their public keys to the server. It assumes that access should be closed
34to new users.
35
36Installing this code reverses that assumption, granting open access to
37unrecognized users. This is made safe by limiting write access to a
38GIT_NAMESPACE over which the user proves global mathematical ownership with
39their SSH client key. This means that the user cannot overwrite anyone else's
40data.
41
42The user's uploaded data is still saved and is ready to be be merged into the
43main repository manually, or even automatically.
44
45
46
47
48
49HOW TO INSTALL
50--------------
51
52Run:
53```
54 make install
55```
56
57This installs the `AnonymousAccessCommand` in the current user's home
58directory.
59
60Then, if sudo access is available, it enables anonymous access by
61editing the system `OpenSSH` configuration.
62
63
64
65
66
67
68NON-ROOT INSTALLATION
69---------------------
70
71If sudo access is not available, you can install to a different
72location:
73
74```
75 make SSH_CONFIG_DIR=.config/ssh \
76 SSHD_CONFIG_DIR=.config/ssh/config.d \
77 SSH_LIB_DIR=.local/lib/ssh \
78 install
79```
80
81Then you will need to run `OpenSSH` on a non-default port (the default
82port requires root access).
83
84
85
86
87
88
89ALTERNATIVE LOCATION OF `AnonymousAccessCommand`
90------------------------------------------------
91
92It is also possible to choose the location of the
93`AnonymousAccessCommand` itself:
94
95```
96 make USER_SSH_CONFIG_DIR=$HOME/.config/ssh \
97 install
98```
99
100First you would have to make the contents of the installed file
101`AuthorizedKeysCommand` vary according to that `Makefile` paremeter, by
102editing `Makefile`.