--- 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 ``` ### Editing the configuration file Copy `/usr/share/doc/lindenii/forge/forge.scfg` to `/etc/lindenii/forge.scfg` and edit appropriately.