机器初始化

linux

sudo apt update
sudo apt install -y tcpdump net-tools iptables wget nmap telnet man lsof ipvsadm ipset btop git ca-certificates tmux jq curl gpg file

cloud-init

#cloud-config
package_update: true
package_upgrade: true

packages:
  - bridge-utils
  - make
  - cmake
  - pkg-config
  - build-essential
  - wget
  - net-tools
  - inetutils-ping
  - dnsutils
  - vim
  - unzip
  - zip
  - sysstat
  - git
  - iproute2
  - ca-certificates
  - telnet
  - curl
  - htop
  - tcpdump
  - gnupg
  - lsb-release
  - btrfs-progs
  - libssl-dev
  - m4
  - gcc
  - g++
  - clang
  - fuse
  - tree
  - iftop
  - jq
  - gpg
  - man
  - tmux
  - traceroute
  - ethtool
  - lz4
  - btop
  - gh
  - qemu-guest-agent
  - supervisor

bootcmd:
  - mkdir -p /opt/docker/cadvisor
  - mkdir -p /opt/docker/node_exporter

write_files:
  - path: /opt/docker/node_exporter/compose.yaml
    owner: root:root
    permissions: 0o755
    defer: true
    content: |
      services:
        node_exporter:
          image: quay.io/prometheus/node-exporter:latest
          container_name: node_exporter
          command:
            - '--web.listen-address=:10000'
            - '--path.rootfs=/host'
          network_mode: host
          pid: host
          restart: unless-stopped
          volumes:
            - '/:/host:ro,rslave'
  
  - path: /opt/docker/cadvisor/compose.yaml
    owner: root:root
    permissions: 0o755
    content: |
      services:
        cadvisor:
          image: gcr.io/cadvisor/cadvisor:latest
          container_name: cadvisor
          privileged: true
          devices:
            - /dev/kmsg:/dev/kmsg
          volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:ro
            - /sys:/sys:ro
            - /var/lib/docker/:/var/lib/docker:ro
            - /dev/disk/:/dev/disk:ro
          ports:
            - "10001:8080"
          restart: unless-stopped

runcmd:
  - install -m 0755 -d /etc/apt/keyrings
  - curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
  - chmod a+r /etc/apt/keyrings/docker.asc
  - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
  - apt update
  - apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  - systemctl enable docker
  - systemctl enable qemu-guest-agent
  - systemctl start qemu-guest-agent
  - systemctl start docker
  - docker compose -f /opt/docker/node_exporter/compose.yaml up -d
  - docker compose -f /opt/docker/cadvisor/compose.yaml up -d

users:
  - default
  - name: orange723
    sudo: "ALL=(ALL) NOPASSWD:ALL"
    groups: sudo, sys, root, adm, docker
    shell: /bin/bash
    homedir: /home/orange723
    lock_passwd: true
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC

no_ssh_fingerprints: true

ssh:
  emit_keys_to_console: false

golang

g

# It is recommended to clear the `GOROOT`, `GOBIN`, and other environment variables before installation.
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
$ cat << 'EOF' >> ~/.bashrc
# Check if the alias 'g' exists before trying to unalias it
if [[ -n $(alias g 2>/dev/null) ]]; then
    unalias g
fi
EOF
$ source "$HOME/.g/env"

$ g ls-remote stable
$ g install stable

node

nvm

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

$ nvm install --lts
$ nvm use --lts

使用 nvm 要注意多版本,比如 gemini 装到 A 版本 node,但目前是在用 B 版本 node,调用会提示找不到