--- 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 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.