Setup Mender Server

The Mender server is run on a host machine OS which is formed of small container services. Pull the Mender utility Docker image and launch the container on the host machine.

These are the required environment variables, refer here for more details.

  • MENDER_SERVER_DIR

  • MACHINE

  • BRANCH

docker pull registry.gitlab.com/linaro/cassini/meta-cassini/mender-utility-image:${BRANCH}
docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ${MENDER_SERVER_DIR}:${MENDER_SERVER_DIR} \
  -it registry.gitlab.com/linaro/cassini/meta-cassini/mender-utility-image:${BRANCH}

This opens a shell environment and these are the required environment variables, refer here for more details.

  • MENDER_SERVER_DIR

  • MACHINE

  • MENDER_SERVER_IP

  • MENDER_SERVER_HTTPS_PORT

  • MENDER_SERVER_HTTP_PORT

  • Configure the Mender Server :

export MENDER_SERVER_NAME="ms-${MACHINE}"
cp -r /home/mender-server/. ${MENDER_SERVER_DIR}/
source ./mender_env_server.sh
source ./docker-compose-override.sh
  • Start the Mender server :

docker compose --project-name "${MENDER_SERVER_NAME}" up -d --quiet-pull
docker compose --project-name "${MENDER_SERVER_NAME}" ps
  • User Setup :

    Create a test user for the Mender server UI/API

    docker compose --project-name "${MENDER_SERVER_NAME}" exec useradm \
      useradm create-user --username "${MENDER_SERVER_USERNAME}" \
    --password "${MENDER_SERVER_PASSWORD}"
    

    Authenticate using mender-cli

    mender-cli login \
      --server "${MENDER_SERVER_URL_HTTPS_PORT}" \
      --skip-verify \
      --username "${MENDER_SERVER_USERNAME}" \
      --password "${MENDER_SERVER_PASSWORD}"
    
  • Artifact Upload :

    These are the requirements to perform a mender system update.

    • Upload an unsigned mender artifact

    cp ${MENDER_SERVER_DIR}/artifacts/${MACHINE}.mender ${MENDER_SERVER_DIR}/artifacts/${MACHINE}-unsigned.mender
    mender-artifact modify -n unsigned-image ${MENDER_SERVER_DIR}/artifacts/${MACHINE}-unsigned.mender
    mender-cli artifacts upload -k --server ${MENDER_SERVER_URL_HTTPS_PORT} ${MENDER_SERVER_DIR}/artifacts/${MACHINE}-unsigned.mender
    
    • Upload a signed mender artifact

    mender-artifact modify -n release-2 -k ${MENDER_SERVER_DIR}/keys/private.key ${MENDER_SERVER_DIR}/artifacts/${MACHINE}.mender
    mender-cli artifacts upload -k --server ${MENDER_SERVER_URL_HTTPS_PORT} ${MENDER_SERVER_DIR}/artifacts/${MACHINE}.mender
    

    These are the requirements to perform a mender capsule update.

    • Upload a incompatible mender capsule

    touch incompatible_capsule_fetch.txt
    mender-artifact write module-image \
      -T mender-capsule-fetch \
      -n incompatible-capsule-fetch \
      -o ${MENDER_SERVER_DIR}/artifacts/${MACHINE}-incompatible-capsule-fetch.mender \
      -f incompatible_capsule_fetch.txt \
      -t ${MACHINE} \
      -k ${MENDER_SERVER_DIR}/keys/private.key \
      --provides "capsule.version:1.0.0" \
      --depends "rootfs-image.version:release-x"
    mender-cli artifacts upload \
      -k --server ${MENDER_SERVER_URL_HTTPS_PORT} \
      "${MENDER_SERVER_DIR}/artifacts/${MACHINE}-incompatible-capsule-fetch.mender"
    
    • Upload a compatible mender capsule

    mender-artifact write module-image \
      -T mender-capsule-fetch \
      -n compatible-capsule-fetch  \
      -o ${MENDER_SERVER_DIR}/artifacts/${MACHINE}-compatible-capsule-fetch.mender \
      -f ${MENDER_SERVER_DIR}/artifacts/${MACHINE}.uefi.capsule \
      -t ${MACHINE} \
      -k ${MENDER_SERVER_DIR}/keys/private.key \
      --provides "capsule.version:1.0.0" \
      --depends "rootfs-image.version:release-1"
    mender-cli artifacts upload \
      -k --server ${MENDER_SERVER_URL_HTTPS_PORT} \
      "${MENDER_SERVER_DIR}/artifacts/${MACHINE}-compatible-capsule-fetch.mender"
    

    To check the uploaded artifacts

    mender-cli artifacts list -k --server ${MENDER_SERVER_URL_HTTPS_PORT}