diff --git a/gitea-runner-docker/config/.template_info.env b/gitea-runner-docker/config/.template_info.env
new file mode 100644
index 0000000..5c59935
--- /dev/null
+++ b/gitea-runner-docker/config/.template_info.env
@@ -0,0 +1,10 @@
+# DO NOT EDIT THIS FILE FOR YOUR SERVICE!
+# This file is replaced from the template whenever there is an update.
+# Edit the service.env file to make changes.
+
+
+# Template to use - always required!
+TEMPLATE=gitea-runner
+REQUIRES_HOST_ROOT=false
+REQUIRES_DOCKER=true
+REQUIRES_DOCKER_ROOT=true
diff --git a/gitea-runner-docker/config/service.env b/gitea-runner-docker/config/service.env
new file mode 100644
index 0000000..8e7c53e
--- /dev/null
+++ b/gitea-runner-docker/config/service.env
@@ -0,0 +1,16 @@
+# Service settings specific to this server 
+# (can also override anything in the .template_info.env file in the template to make it specific to this server)
+
+# $HOME etc expanded on remote server by bash.
+GITEA_RUNNER_DIRECTORY="${HOME}/.gitea-runner"
+ACT_RUNNER_VERSION="0.2.11"
+GITEA_URL="https://gitea.jde.nz"
+GITEA_TOKEN="GITEA_TOKEN"
+GITEA_RUNNER_NAME="${SERVER}-${SERVICE}"
+GITEA_RUNNER_LABELS="ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster"
+
+CONTAINER_NAME="gitea-runner-${SERVICE}"
+
+# Server Settings
+SSH_USER="dropshell"
+
diff --git a/gitea-runner-docker/destroy.sh b/gitea-runner-docker/destroy.sh
new file mode 100755
index 0000000..7a22fe0
--- /dev/null
+++ b/gitea-runner-docker/destroy.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "GITEA_RUNNER_DIRECTORY"
+
+# Call uninstall script first
+./uninstall.sh
+
+echo "Removing ${GITEA_RUNNER_DIRECTORY}"
+rm -rf "${GITEA_RUNNER_DIRECTORY}"
+
+echo "Destroyed ${SERVICE}"
diff --git a/gitea-runner-docker/install.sh b/gitea-runner-docker/install.sh
new file mode 100755
index 0000000..4d68344
--- /dev/null
+++ b/gitea-runner-docker/install.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "TEMP_DIR" \
+    "GITEA_RUNNER_DIRECTORY" "ACT_RUNNER_VERSION" \
+    "GITEA_URL" "GITEA_TOKEN" "GITEA_RUNNER_NAME" "GITEA_RUNNER_LABELS" \
+    "CONTAINER_NAME"
+
+
+mkdir -p "${GITEA_RUNNER_DIRECTORY}" || _die "Failed to create ${GITEA_RUNNER_DIRECTORY}"
+
+./start.sh || _die "Failed to start"
+
+echo "Installation complete for service ${SERVICE}."
diff --git a/gitea-runner-docker/logs.sh b/gitea-runner-docker/logs.sh
new file mode 100644
index 0000000..90139f3
--- /dev/null
+++ b/gitea-runner-docker/logs.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "CONTAINER_NAME"
+
+echo "Container ${CONTAINER_NAME} logs:"
+docker logs "${CONTAINER_NAME}"
diff --git a/gitea-runner-docker/ssh.sh b/gitea-runner-docker/ssh.sh
new file mode 100644
index 0000000..9ef3e8e
--- /dev/null
+++ b/gitea-runner-docker/ssh.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "CONTAINER_NAME"
+
+
+if ! _is_container_running "$CONTAINER_NAME"; then
+    _die "Container ${CONTAINER_NAME} is not running. Can't connect to it."
+fi
+
+echo "Connecting to ${CONTAINER_NAME}..."
+
+docker exec -it "${CONTAINER_NAME}" bash
+
+echo "Disconnected from ${CONTAINER_NAME}"
diff --git a/gitea-runner-docker/start.sh b/gitea-runner-docker/start.sh
new file mode 100755
index 0000000..b12adf6
--- /dev/null
+++ b/gitea-runner-docker/start.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "TEMP_DIR" \
+    "GITEA_RUNNER_DIRECTORY" "ACT_RUNNER_VERSION" \
+    "GITEA_URL" "GITEA_TOKEN" "GITEA_RUNNER_NAME" "GITEA_RUNNER_LABELS" \
+    "CONTAINER_NAME"
+
+DOCKER_RUN_CMD="docker run -d \
+                --restart unless-stopped \
+                --name ${CONTAINER_NAME} \
+                -e GITEA_INSTANCE_URL=${GITEA_URL} \
+                -e GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_TOKEN} \
+                -v /var/run/docker.sock:/var/run/docker.sock \
+                -v ${GITEA_RUNNER_DIRECTORY}:/data \
+                gitea/act_runner:nightly"
+
+
+if ! _create_and_start_container "$DOCKER_RUN_CMD" "$CONTAINER_NAME"; then
+    echo "${DOCKER_RUN_CMD}"
+    _die "Failed to start container ${CONTAINER_NAME}"
+fi
+
+# Check if the container is running
+if ! _is_container_running "$CONTAINER_NAME"; then
+    _die "Container ${CONTAINER_NAME} is not running"
+fi
+
+echo "Container ${CONTAINER_NAME} started"
diff --git a/gitea-runner-docker/status.sh b/gitea-runner-docker/status.sh
new file mode 100755
index 0000000..b09dfd1
--- /dev/null
+++ b/gitea-runner-docker/status.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "CONTAINER_NAME"
+
+_is_container_running "$CONTAINER_NAME" || _die "Service is not running - did not find container $CONTAINER_NAME."
+
+echo "Service is healthy"
+exit 0
\ No newline at end of file
diff --git a/gitea-runner-docker/stop.sh b/gitea-runner-docker/stop.sh
new file mode 100755
index 0000000..9eb30ef
--- /dev/null
+++ b/gitea-runner-docker/stop.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "CONTAINER_NAME"
+
+_stop_container "$CONTAINER_NAME" || _die "Failed to stop container ${CONTAINER_NAME}"
+
+echo "Container ${CONTAINER_NAME} stopped"
diff --git a/gitea-runner-docker/uninstall.sh b/gitea-runner-docker/uninstall.sh
new file mode 100755
index 0000000..47000c3
--- /dev/null
+++ b/gitea-runner-docker/uninstall.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -euo pipefail
+# shellcheck disable=SC1091
+source "${AGENT_PATH}/common.sh"
+_check_required_env_vars "SERVER" "SERVICE" "GITEA_RUNNER_DIRECTORY" "CONTAINER_NAME"
+
+
+
+_remove_container "$CONTAINER_NAME" || _die "Failed to remove container ${CONTAINER_NAME}"
+_is_container_running && _die "Couldn't stop existing container"
+_is_container_exists && _die "Couldn't remove existing container"
+
+echo "Uninstallation of ${CONTAINER_NAME} complete."
+echo "Local data folder ${GITEA_RUNNER_DIRECTORY} still in place."
diff --git a/squashkiwi/logs.sh b/squashkiwi/logs.sh
index 5adf520..850702d 100755
--- a/squashkiwi/logs.sh
+++ b/squashkiwi/logs.sh
@@ -3,6 +3,5 @@ source "${AGENT_PATH}/common.sh"
 _check_required_env_vars "CONTAINER_NAME"
 
 echo "Container ${CONTAINER_NAME} logs:"
-_grey_start
+
 docker logs "${CONTAINER_NAME}"
-_grey_end