Skip to content

Building packages

INFO

For building hestia-nginx or hestia-php, at least 2 GB of memory is required!

Here is more detailed information about the build scripts that are run from src:

Installing Hestia from a branch

The following is useful for testing a Pull Request or a branch on a fork.

  1. Install Node.js Download or use Node Source APT
bash
# Replace with https://github.com/username/hestiacp.git if you want to test a branch that you created yourself
git clone https://github.com/hestiacp/hestiacp.git
cd ./hestiacp/

# Replace main with the branch you want to test
git checkout main

cd ./src/

# Compile packages
./hst_autocompile.sh --all --noinstall --keepbuild '~localsrc'

cd ../install

bash hst-install-{os}.sh --with-debs /tmp/hestiacp-src/deb/

Any option can be appended to the installer command. See the complete list.

Build packages only

bash
# Only Hestia
./hst_autocompile.sh --hestia --noinstall --keepbuild '~localsrc'
bash
# Hestia + hestia-nginx and hestia-php
./hst_autocompile.sh --all --noinstall --keepbuild '~localsrc'

Build and install packages

INFO

Use if you have Hestia already installed, for your changes to take effect.

bash
# Only Hestia
./hst_autocompile.sh --hestia --install '~localsrc'
bash
# Hestia + hestia-nginx and hestia-php
./hst_autocompile.sh --all --install '~localsrc'

Updating Hestia from GitHub

The following is useful for pulling the latest staging/beta changes from GitHub and compiling the changes.

INFO

The following method only supports building the hestia package. If you need to build hestia-nginx or hestia-php, use one of the previous commands.

  1. Install Node.js Download or use Node Source APT
bash
v-update-sys-hestia-git [USERNAME] [BRANCH]

Note: Sometimes dependencies will get added or removed when the packages are installed with dpkg. It is not possible to preload the dependencies. If this happens, you will see an error like this:

bash
dpkg: error processing package hestia (–install):
dependency problems - leaving unconfigured

To solve this issue, run:

bash
apt install -f

Building for other architectures or OS releases on the same machine

hst_autocompile.sh only ever builds for the environment it's actually running in (its own --cross flag just makes the architecture-independent hestia package build for both AMD64 and ARM64 directly, with no emulation needed). To also build hestia-nginx, hestia-php or hestia-web-terminal (which contain compiled native code) for other architectures or OS releases on the same machine, use chroot_build_all.sh instead — it spins up and runs the unmodified hst_autocompile.sh inside each one.

bash
./chroot_build_all.sh --all '~localsrc'

Every combination is built inside a QEMU-emulated chroot (debootstrap + qemu-user-static). The first run downloads/bootstraps a minimal root filesystem per combination under /var/lib/hestiacp-build-chroot/<distro>-<release>-<arch>; subsequent runs reuse it, so only the first build of a given combination is slow.

Released under the GPLv3 License.