#! /usr/bin/env bash KEYS_DIR="/opt/encrypted-dns/etc/keys" ZONES_DIR="/opt/unbound/etc/unbound/zones" reserved=134217728 availableMemory=$((1024 * $( (grep -F MemAvailable /proc/meminfo || grep -F MemTotal /proc/meminfo) | sed 's/[^0-9]//g'))) if [ $availableMemory -le $((reserved * 2)) ]; then echo "Not enough memory" >&2 exit 1 fi availableMemory=$((availableMemory - reserved)) msg_cache_size=$((availableMemory / 4)) rr_cache_size=$((availableMemory / 3)) nproc=$(nproc) if [ "$nproc" -gt 1 ]; then threads=$((nproc - 1)) else threads=1 fi provider_name=$(cat "$KEYS_DIR/provider_name") sed \ -e "s/@MSG_CACHE_SIZE@/${msg_cache_size}/" \ -e "s/@PROVIDER_NAME@/${provider_name}/" \ -e "s/@RR_CACHE_SIZE@/${rr_cache_size}/" \ -e "s/@THREADS@/${threads}/" \ -e "s#@ZONES_DIR@#${ZONES_DIR}#" \ >/opt/unbound/etc/unbound/unbound.conf </dev/null || : fi mkdir -p /opt/unbound/etc/unbound/zones exec /opt/unbound/sbin/unbound