#!/bin/bash # Copyright OpenFaaS Ltd 2025 set -e # stop on error set -o pipefail export NEEDRESTART_MODE=a export DEBIAN_FRONTEND=noninteractive if [ "$EUID" -ne 0 ]; then echo "Please run as root or with sudo" exit fi has_dnf() { [ -n "$(command -v dnf)" ] } has_apt_get() { [ -n "$(command -v apt-get)" ] } has_pacman() { [ -n "$(command -v pacman)" ] } install_required_packages() { if $(has_apt_get); then echo iptables-persistent iptables-persistent/autosave_v4 boolean false | sudo debconf-set-selections echo iptables-persistent iptables-persistent/autosave_v6 boolean false | sudo debconf-set-selections # Debian bullseye is missing iptables. Added to required packages # to get it working in raspberry pi. No such known issues in # other distros. Hence, adding only to this block. # reference: https://github.com/openfaas/faasd/pull/237 apt-get update -yq apt-get install -yq curl runc bridge-utils iptables iptables-persistent elif $(has_dnf); then dnf install -y \ --allowerasing \ --setopt=install_weak_deps=False \ curl runc iptables-services bridge-utils which elif $(has_pacman); then pacman -Syy pacman -Sy curl runc bridge-utils else fatal "Could not find apt-get, yum, or pacman. Cannot install dependencies on this OS." exit 1 fi } echo "OpenFaaS Edge combines faasd with OpenFaaS Standard" echo "" echo "" echo "1. Installing required OS packages, set SKIP_OS=1 to skip this step" echo "" if [ -z "$SKIP_OS" ]; then install_required_packages fi echo "" echo "2. Downloading OCI image, and installing pre-requisites" echo "" if [ ! -x "$(command -v arkade)" ]; then # For Centos, RHEL, Fedora, Amazon Linux, and Oracle Linux, use BINLOCATION=/usr/bin/ if $(has_dnf); then BINLOCATION=/usr/bin/ fi curl -sLS https://get.arkade.dev | BINLOCATION=${BINLOCATION} sh fi PATH=$PATH:$HOME/.arkade/bin tmpdir=$(mktemp -d) # Ensure all existing services are stopped when installing over an # existing faasd installation systemctl stop faasd || : systemctl stop faasd-provider || : systemctl stop containerd || : killall -9 containerd-shim-runc-v2 || : killall -9 faasd || : # crane, or docker can also be used to download the OCI image and to extract it # Rather than the :latest tag, a specific tag can be given # Use "crane ls ghcr.io/openfaasltd/faasd-pro" to see available tags ${BINLOCATION}arkade oci install --path ${tmpdir} \ ghcr.io/openfaasltd/faasd-pro:latest cd ${tmpdir} ./install.sh ./ if has_dnf; then isRhelLike=true else isRhelLike=false fi binaryName="faasd" if [ "$isRhelLike" = true ]; then binaryName="/usr/local/bin/faasd" fi echo "" echo "3.1 Commercial users can create their license key as follows:" echo "" echo "sudo mkdir -p /var/lib/faasd/secrets" echo "sudo nano /var/lib/faasd/secrets/openfaas_license" echo "" echo "3.2 For personal, non-commercial use only, GitHub Sponsors of @openfaas (25USD+) can run:" echo "" echo "sudo -E ${binaryName} github login" echo "sudo -E ${binaryName} activate" echo "" echo "4. Then perform the final installation steps" echo "" echo "sudo -E sh -c \"cd ${tmpdir}/var/lib/faasd && ${binaryName} install\"" echo "" echo "5. Refer to the complete handbook and supplementary documentation at:" echo "" echo "http://store.openfaas.com/l/serverless-for-everyone-else?layout=profile" echo "" echo "https://docs.openfaas.com/edge/overview" echo ""