emacs-survey-server/setup.org

2.3 KiB

Setup

We could do something fancy like a NixOS flake, but for the EmacsSurvey server I think a simple Debian machine with a setup script should do the trick. Let's just work out a setup script to get everything up and running.

The idea is that this repository can be cloned/updated anywhere on the machine and sudo setup.sh will do the rest.

Installing software

Caddy web server

if ! rpm -q caddy > /dev/null; then
    echo -e "\e[1;34mInstalling Caddy\e[m"
    # Taken from <https://caddyserver.com/docs/install#debian-ubuntu-raspbian>
    sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
    sudo apt update
    sudo apt install caddy
fi

Julia

First, we specify the Julia version we want and hope that the relevant paths continue to be predictable.

JULIA_VERSION="1.8.2"

If either the julia command does not exist, or julia --version does not match the expected output, then we will install Julia in /opt/julia and symlink the binary into /usr/bin.

if ! command -v julia > /dev/null || [ ! $(julia --version) = "julia version $JULIA_VERSION" ]; then
    echo -e "\e[1;34mInstalling Julia\e[m"
    pushd /tmp > /dev/null
    # Following <https://julialang.org/downloads/platform/>
    wget "https://julialang-s3.julialang.org/bin/linux/x64/${JULIA_VERSION%.*}/julia-$JULIA_VERSION-linux-x86_64.tar.gz"
    mkdir -p "/opt/julia/"
    tar zxvf "julia-$JULIA_VERSION-linux-x86_64.tar.gz" --directory=/opt/julia
    ln -sf "/opt/julia/julia-$JULIA_VERSION/bin/julia" /usr/bin/julia
fi

Copying over relevant files

Before starting to do this, we will obtain the path to the folder of the script, so we can grab files relative to the root of this repository.

SETUPDIR=$(dirname "$(readlink --canonicalize-existing "$0")")

Caddy Config

cp -f "$SETUPDIR/Caddyfile" "/etc/caddy/Caddyfile"

Ensuring services are running