~ knotless Search/
↑↓ move↵ open⇧↵ all results

johnandersen777.bsky.social/atlibs-iroh

iroh transport for atlibs hosts: com.fedfork.exec.iroh.connect in Rust (atlibs-host) and JavaScript

0
0
main
46 lines · 2.6 KB Raw History
#cloud-config
{
 "packages": [
  "openssh-server"
 ],
 "disable_root": false,
 "ssh_pwauth": false,
 "write_files": [
  {
   "path": "/root/.ssh/authorized_keys",
   "owner": "root:root",
   "permissions": "0600",
   "content": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExample me@host\n"
  },
  {
   "path": "/etc/ssh/sshd_config.d/10-iroh.conf",
   "owner": "root:root",
   "permissions": "0644",
   "content": "PermitRootLogin prohibit-password\nPasswordAuthentication no\n"
  },
  {
   "path": "/usr/local/bin/setup-iroh.sh",
   "owner": "root:root",
   "permissions": "0755",
   "content": "#!/bin/bash\nset -euo pipefail\n[ -x /usr/local/bin/dumbpipe ] && exit 0\ncase \"$(uname -m)\" in x86_64|amd64) A=x86_64 ;; aarch64|arm64) A=aarch64 ;; *) exit 1 ;; esac\nURL=\"https://github.com/n0-computer/dumbpipe/releases/download/v0.39.0/dumbpipe-v0.39.0-linux-${A}.tar.gz\"\nT=\"$(mktemp -d)\"\nfor i in 1 2 3 4 5; do\n  curl -fsSL \"${URL}\" | tar -xz -C \"${T}\" && install -m 0755 \"${T}/dumbpipe\" /usr/local/bin/dumbpipe && exit 0\n  sleep 5\ndone\nexit 1\n"
  },
  {
   "path": "/usr/local/bin/iroh-listener.sh",
   "owner": "root:root",
   "permissions": "0755",
   "content": "#!/bin/bash\nset -euo pipefail\nSECRET_FILE=/root/.iroh-secret\nif [ ! -s \"${SECRET_FILE}\" ]; then\n  umask 077\n  head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \\n' > \"${SECRET_FILE}\"\nfi\nexport IROH_SECRET=\"$(cat \"${SECRET_FILE}\")\"\nLOG=/run/guest-iroh.log\nrm -f /run/guest-iroh-ticket \"${LOG}\"\n/usr/local/bin/dumbpipe listen-tcp --host 127.0.0.1:22 2>>\"${LOG}\" &\nPID=$!\nTICKET=\"\"\nfor _ in $(seq 1 150); do\n  TICKET=\"$(grep -a 'connect-tcp' \"${LOG}\" 2>/dev/null | tail -n 1 | awk '{print $NF}')\" || true\n  [ -n \"${TICKET}\" ] && break\n  kill -0 \"${PID}\" 2>/dev/null || break\n  sleep 1\ndone\nif [ -n \"${TICKET}\" ]; then\n  printf 'iroh://%s\\n' \"${TICKET}\" > /run/guest-iroh-ticket\n  printf 'iroh://%s\\n' \"${TICKET}\" > /run/guest-fqdn.tmp\n  mv -f /run/guest-fqdn.tmp /run/guest-fqdn\nfi\nwait \"${PID}\"\n"
  },
  {
   "path": "/etc/systemd/system/iroh.service",
   "owner": "root:root",
   "permissions": "0644",
   "content": "[Unit]\nDescription=iroh dumbpipe listener in front of local sshd\nAfter=network-online.target\nWants=network-online.target\n[Service]\nExecStart=/usr/local/bin/iroh-listener.sh\nRestart=always\nRestartSec=5\n[Install]\nWantedBy=multi-user.target\n"
  }
 ],
 "runcmd": [
  "/usr/local/bin/setup-iroh.sh",
  "systemctl daemon-reload",
  "systemctl enable --now --no-block iroh.service",
  "systemctl enable --now --no-block ssh || systemctl enable --now --no-block sshd"
 ]
}