1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
---
title: Setup
---
## System requirements
We currently only support Linux and FreeBSD. Support for other UNIX-like
operating systems may be added in the future, but we do not have any plans to
support Windows.
## Build dependencies
* Git
* GNU Make
* C compiler
* Recent Go toolchain
* [libgit2](https://libgit2.org)
* A recent [mandoc](https://mandoc.bsd.lv)
(we recommend using the latest CVS checkout)
## Build
Clone the source code and run `gmake`.
Note that setting `GOARCH` to cross compile does not completely work, since the
hooks handler and Git RPC daemon is written in C. You need to customize `CC` to
point to a proper cross compiler.
## Install
We don't provide an `install` target yet, so just copy the files to reasonable
locations.
## Runtime dependencies
* Git
* PostgreSQL 14 or later
* [libgit2](https://libgit2.org)
* A runtime copy of your C library, if you are not statically linking
## Configuration
### Adding a system user
Note that this process may vary depending on your OS distribution.
```
useradd -rmd /var/lib/lindenii/forge/ lindenii-forge
```
### Allowing the binary to listen to low ports
Since we usually listen on port 22 for SSH, it is necessary to allow the
Lindenii Forge binary to use low ports.
```
setcap 'cap_net_bind_service=+ep' /usr/bin/lindenii-forge
```
### Generating SSH host keys
```
ssh-keygen -t ed25519 -f /etc/lindenii/forge/ssh_forge_ed25519_key -N ''
```
### Initializing PostgreSQL
Assuming that you use UNIX-domain socket authentication on a local PostgreSQL
instance,
```
su - postgres
createuser lindenii-forge
createdb -O lindenii-forge lindenii-forge
psql -f /usr/share/lindenii/forge/schema.sql -d lindenii-forge
```
### Setting up your SMTP daemon
You'll need to do this if you want email integration. We'll assume you've
already configured your DNS records, rDNS, DKIM, SPF, DMARC, etc.
If you run OpenSMTPD, you'd want something like this in
`/etc/smtpd/smtpd.conf`:
```
table forge file:/etc/smtpd/forge
action "FORGE" lmtp "/var/run/lindenii/forge/lmtp.sock" rcpt-to virtual <forge>
match from any for domain "forge.lindenii.runxiyu.org" action "FORGE"
```
And for `/etc/smtpd/forge`:
```
@ forge
```
### Editing the configuration file
Copy `/usr/share/doc/lindenii/forge/forge.scfg` to `/etc/lindenii/forge.scfg`
and edit appropriately.
|