|
| 1 | +- #### Additional Notes & Refs |
| 2 | +> - [Install Dagu](https://github.com/pkgforge/devscripts/blob/main/Linux/DAGU_CRON.md) |
| 3 | +> ```bash |
| 4 | +> export DAGU_USER="$(whoami)" |
| 5 | +> export DAGU_HOME="$(getent passwd $DAGU_USER | cut -d: -f6)" ; mkdir -p "$DAGU_HOME/.dagu" |
| 6 | +> export DAGU_HOST="$(ip addr show tailscale0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' || sudo tailscale ip -4 2>/dev/null | tr -d '\n' | tr -d '[:space:]')" |
| 7 | +> export DAGU_PORT="8080" |
| 8 | +> DAGU_BASICAUTH_USERNAME="$SECURE_USERNAME" |
| 9 | +> DAGU_BASICAUTH_PASSWORD="$SECURE_PASSWORD" |
| 10 | +> |
| 11 | +> sudo curl -qfsSL "https://bin.ajam.dev/$(uname -m)/dagu" -o "/usr/bin/dagu" && sudo chmod +x "/usr/bin/dagu" |
| 12 | +> sudo mkdir -p "/etc/systemd/system/" && sudo touch "/etc/systemd/system/dagu_ts.service" |
| 13 | +> cat << 'EOF' | sed -e "s|DG_USER|$DAGU_USER|g" -e "s|DG_HOME|$DAGU_HOME|g" -e "s|DG_HOST|$DAGU_HOST|g" -e "s|DG_PORT|$DAGU_PORT|g" -e "s|DG_SUSER|$DAGU_BASICAUTH_USERNAME|g" -e "s|DG_SPASSWD|$DAGU_BASICAUTH_PASSWORD|g" | sudo tee "/etc/systemd/system/dagu_ts.service" |
| 14 | +> [Unit] |
| 15 | +> Description=Dagu Job Scheduler |
| 16 | +> Wants=network-online.target |
| 17 | +> Requires=tailscaled.service |
| 18 | +> After=network-online.target network.target tailscaled.service |
| 19 | +> |
| 20 | +> [Service] |
| 21 | +> Type=simple |
| 22 | +> User=DG_USER |
| 23 | +> Environment="DAGU_HOME=DG_HOME/.dagu" |
| 24 | +> Environment="DAGU_HOST=DG_HOST" |
| 25 | +> Environment="DAGU_PORT=DG_PORT" |
| 26 | +> Environment="DAGU_IS_BASICAUTH=1" |
| 27 | +> Environment="DAGU_BASICAUTH_USERNAME=DG_SUSER" |
| 28 | +> Environment="DAGU_BASICAUTH_PASSWORD=DG_SPASSWD" |
| 29 | +> ExecStartPre=/bin/mkdir -p DG_HOME/.dagu/syslog |
| 30 | +> ExecStartPre=/bin/sleep 10 |
| 31 | +> ExecStart=/usr/bin/dagu start-all |
| 32 | +> StandardOutput=DG_HOME/.dagu/syslog/dagu_ts.log |
| 33 | +> StandardError=DG_HOME/.dagu/syslog/dagu_ts.log |
| 34 | +> Restart=always |
| 35 | +> KillMode=process |
| 36 | +> |
| 37 | +> [Install] |
| 38 | +> WantedBy=multi-user.target |
| 39 | +> EOF |
| 40 | +> |
| 41 | +> sudo systemctl daemon-reload |
| 42 | +> sudo systemctl enable "dagu_ts.service" --now |
| 43 | +> #If Unit tailscaled.service not found: |
| 44 | +> # sudo sed -i -e '/Requires=/d' -e 's/tailscaled.service//g' "/etc/systemd/system/dagu_ts.service" |
| 45 | +> # sudo systemctl daemon-reload |
| 46 | +> # sudo systemctl enable "dagu_ts.service" --now |
| 47 | +> sudo systemctl restart "dagu_ts.service" |
| 48 | +> sudo systemctl status "dagu_ts.service" |
| 49 | +> journalctl -xeu "dagu_ts.service" |
| 50 | +> ``` |
| 51 | +> --- |
| 52 | +> - [Install Docker](https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script) |
| 53 | +> ```bash |
| 54 | +> curl -qfsSL "https://get.docker.com" | sed 's/sleep 20//g' | sudo bash |
| 55 | +> sudo groupadd docker 2>/dev/null ; sudo usermod -aG docker "${USER}" 2>/dev/null |
| 56 | +> sudo service docker restart 2>/dev/null && sleep 10 |
| 57 | +> sudo service docker status 2>/dev/null |
| 58 | +> ``` |
| 59 | +> --- |
| 60 | +> - [Install Podman](https://podman.io/docs/installation) |
| 61 | +> ```bash |
| 62 | +> ##Install podman :: https://software.opensuse.org/download/package?package=podman&project=home%3Aalvistack |
| 63 | +> |
| 64 | +> #(Alpine) : https://wiki.alpinelinux.org/wiki/Podman |
| 65 | +> apk update --no-cache && apk add docker podman --latest --no-cache --upgrade --no-interactive |
| 66 | +> rc-update add "cgroups" ; rc-service "cgroups" start && sleep 5 ; rc-service "cgroups" status |
| 67 | +> |
| 68 | +> |
| 69 | +> #(Debian) |
| 70 | +> # https://software.opensuse.org/download/package?package=podman&project=home%3Aalvistack#manualDebian |
| 71 | +> |
| 72 | +> #(Ubuntu) |
| 73 | +> VERSION="$(grep -oP 'VERSION_ID="\K[^"]+' "/etc/os-release")" |
| 74 | +> echo "deb http://download.opensuse.org/repositories/home:/alvistack/xUbuntu_${VERSION}/ /" | sudo tee "/etc/apt/sources.list.d/home:alvistack.list" |
| 75 | +> curl -fsSL "https://download.opensuse.org/repositories/home:alvistack/xUbuntu_${VERSION}/Release.key" | gpg --dearmor | sudo tee "/etc/apt/trusted.gpg.d/home_alvistack.gpg" >/dev/null |
| 76 | +> sudo apt update -y |
| 77 | +> sudo apt install podman -y |
| 78 | +> #if errors: sudo apt purge golang-github-containers-common -y |
| 79 | +> # sudo dpkg -i --force-overwrite /var/cache/apt/archives/containers-common_100%3a0.59.1-1_amd64.deb |
| 80 | +> # sudo apt --fix-broken install |
| 81 | +> |
| 82 | +> cat "$(systemctl show podman.service -p FragmentPath 2>/dev/null | cut -d '=' -f 2 | tr -d '[:space:]')" |
| 83 | +> sudo systemctl daemon-reexec ; sudo systemctl daemon-reload |
| 84 | +> sudo systemctl status podman |
| 85 | +> sudo systemctl reload "podman.service" |
| 86 | +> sudo service podman reload ; sudo service podman restart ; sudo systemctl status podman |
| 87 | +> #If errors: sudo apt-get install netavark -y || sudo apt-get install containernetworking-plugins podman-netavark -y |
| 88 | +> podman --version |
| 89 | +> |
| 90 | +> ##Running :: https://docs.podman.io/en/latest/markdown/podman-run.1.html |
| 91 | +> sudo mkdir -p "/var/lib/containers/tmp" |
| 92 | +> sudo podman run --rm --privileged --network="bridge" --systemd="always" --ulimit="host" --volume="/var/lib/containers/tmp:/tmp" --tz="UTC" --pull="always" "docker.io/azathothas/gh-runner-x86_64-ubuntu:latest" |
| 93 | +> # --device="/dev/net/tun:rwm" |
| 94 | +> # --cap-add="NET_ADMIN,NET_BIND_SERVICE,NET_RAW,SYS_ADMIN" |
| 95 | +> sudo podman exec --env-file="/path/to/GH_AUTH_ENV" -u "runner" "${POD_ID from sudo podman ps}" "/usr/local/bin/manager.sh" |
| 96 | +> |
| 97 | +> #For Testing/Debug/Interactive Use |
| 98 | +> sudo podman exec -it -u "runner" "$(sudo podman ps --format json | jq -r '.[] | select(.Image == "docker.io/azathothas/gh-runner-x86_64-ubuntu:latest") | .Id')" bash |
| 99 | +> |
| 100 | +> !#PrePacked Build ENV (remove --rm to Preserve Container) |
| 101 | +> sudo mkdir -p "/var/lib/containers/tmp" |
| 102 | +> sudo podman run --detach --privileged --network="bridge" --publish "22222:22" --systemd="always" --ulimit="host" --tz="UTC" --pull="always" --name="bincache-dbg" --hostname "pkgforge-dev" "docker.io/azathothas/ubuntu-systemd-base:$(uname -m)" |
| 103 | +> |
| 104 | +> #Run an Interactive Session |
| 105 | +> sudo podman exec -it -u "runner" "$(sudo podman ps --filter "name=bincache-dbg" --filter "ancestor=docker.io/azathothas/ubuntu-systemd-base:$(uname -m)" --format "{{.ID}}")" bash -l |
| 106 | +> #Inside the container |
| 107 | +> bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/devscripts/main/Linux/install_bins_curl.sh") #Installs needed Tooling |
| 108 | +> export GHCR_TOKEN="GHCR_PKG_RW" #Token for reading/writing Packages to GHCR |
| 109 | +> export GITHUB_TOKEN="GHP_NON_PRIVS" #Token for making Github API Requests to Access Public Assets |
| 110 | +> export GITLAB_TOKEN="GLP_NON_PRIVS" #Token for making Gitlab API Requests to Access Public Assets |
| 111 | +> source <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/bincache/refs/heads/main/scripts/runner/setup_env.sh") |
| 112 | +> |
| 113 | +> #Enable SSHD (replace keys with yours) |
| 114 | +> sudo podman exec -it -u "runner" "bincache-dbg" bash -c 'sudo curl -qfsSL "https://github.com/Azathothas.keys" | sudo sort -u -o "/etc/ssh/authorized_keys" ; sudo systemctl restart sshd' |
| 115 | +> |
| 116 | +> #Stop & Delete Container |
| 117 | +> sudo podman stop "bincache-dbg" |
| 118 | +> sudo podman rm "bincache-dbg" --force |
| 119 | +> |
| 120 | +> #To stop All Containers |
| 121 | +> sudo docker stop |
| 122 | +> sudo podman stop -a |
| 123 | +> |
| 124 | +> sudo docker rm -f "$(sudo docker ps -aq)" |
| 125 | +> sudo podman rm -f "$(sudo podman ps -aq)" |
| 126 | +> |
| 127 | +> #To Cleanup Everyhinh |
| 128 | +> sudo docker system df ; sudo docker container prune -f ; sudo docker image prune -a -f ; sudo docker system prune -a -f |
| 129 | +> sudo docker rmi -f "$(sudo docker images -aq)" ; sudo docker system df |
| 130 | +> |
| 131 | +> sudo podman system df ; sudo podman container prune -f ; sudo podman image prune -a -f ; sudo podman system prune -a -f |
| 132 | +> sudo podman rmi -f "$(sudo podman images -aq)" ; sudo docker system df |
| 133 | +> |
| 134 | +> #{WARNING] To reset everything |
| 135 | +> sudo docker system reset -f |
| 136 | +> sudo podman system reset -f |
| 137 | +> ``` |
| 138 | +> --- |
| 139 | +> - [Install Sysbox](https://github.com/nestybox/sysbox) |
| 140 | +> ```bash |
| 141 | +> !# Del Existing Docker |
| 142 | +> docker rm $(docker ps -a -q) -f |
| 143 | +> |
| 144 | +> !# Install Deps |
| 145 | +> sudo apt-get install fuse3 libfuse-dev -y |
| 146 | +> sudo apt-get install "linux-headers-$(uname -r)" -y |
| 147 | +> sudo apt-get install linux-headers-{amd64|arm64} -y |
| 148 | +> sudo apt-get --fix-broken install -y |
| 149 | +> # Get .Deb PKGS |
| 150 | +> #aarch64 | arm64 |
| 151 | +> pushd "$(mktemp -d)" > /dev/null 2>&1 && wget --quiet --show-progress "$(curl -qfsSL 'https://api.github.com/repos/nestybox/sysbox/releases/latest' | jq -r '.body' | sed -n 's/.*(\(https:\/\/.*\.deb\)).*/\1/p' | grep -i 'arm64')" -O "./sysbox.deb" && sudo dpkg -i "./sysbox.deb" ; popd > /dev/null 2>&1 |
| 152 | +> sudo apt-get autoremove -y ; sudo apt-get update -y && sudo apt-get upgrade -y |
| 153 | +> #amd x86_64 |
| 154 | +> pushd "$(mktemp -d)" > /dev/null 2>&1 && wget --quiet --show-progress "$(curl -qfsSL 'https://api.github.com/repos/nestybox/sysbox/releases/latest' | jq -r '.body' | sed -n 's/.*(\(https:\/\/.*\.deb\)).*/\1/p' | grep -i 'amd64')" -O "./sysbox.deb" && sudo dpkg -i "./sysbox.deb" ; popd > /dev/null 2>&1 |
| 155 | +> sudo apt-get autoremove -y ; sudo apt-get update -y && sudo apt-get upgrade -y |
| 156 | +> #Test |
| 157 | +> sysbox-runc --version |
| 158 | +> ``` |
1 | 159 |
|
0 commit comments