Build Goupile
The Goupile server is Linux-only for the moment, and uses the Landlock LSM (and seccomp) which requires Linux 5.13 or more recent.
Support for sandboxing on other operating systems is considered a long-term goal but is not currently available.
Using Debian 12 or a later distribution is recommended.
Goupile relies on C++ (server-side) and HTML/CSS/JS (client-side). Compiling Goupile uses a dedicated tool included directly in the repository.
Start by fetching the code from the Git repository: https://codeberg.org/Koromix/rygel
git clone https://codeberg.org/Koromix/rygel
cd rygel
To compile a development and test version, proceed as follows from the root of the repository:
# Prepare the felix tool used to compile Goupile
./bootstrap.sh
# The executable will be placed in the bin/Debug folder
./felix
For production use, it is recommended to compile Goupile in Paranoid mode using Clang 18+ and the LLD 18+ linker. On Debian 12, you can do the following:
# Prepare the felix tool used to compile Goupile
./bootstrap.sh
# Installation of LLVM described here and copied below: https://apt.llvm.org/
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
sudo apt install clang-18 lld-18
# The executable will be placed in the bin/Paranoid folder
./felix -pParanoid --host=,clang-18,lld-18
Run Goupile
Once the Goupile executable is compiled, you can create a Goupile domain using the following command:
# For this example, we will create this domain in a tmp subfolder of the repository.
# But you can create it wherever you wish!
mkdir -p tmp/test
touch tmp/test/goupile.ini
To access this domain via a web browser, you can start it using the following command:
# With this command, Goupile will be accessible via http://localhost:8889/
bin/Debug/goupile -C tmp/test/goupile.ini
For production deployment, it is recommended to run Goupile behind an HTTPS reverse proxy such as NGINX.