main
  1#!/usr/bin/env bash
  2
  3# Nagoya Post-Install Setup Script
  4# Description: Post-installation commands for Debian setup
  5
  6set -euo pipefail
  7
  8# Color output for better readability
  9readonly RED='\033[0;31m'
 10readonly GREEN='\033[0;32m'
 11readonly YELLOW='\033[1;33m'
 12readonly NC='\033[0m' # No Color
 13
 14# Logging functions
 15log_info() {
 16	echo -e "${GREEN}[INFO]${NC} $*"
 17}
 18
 19log_warn() {
 20	echo -e "${YELLOW}[WARN]${NC} $*"
 21}
 22
 23log_error() {
 24	echo -e "${RED}[ERROR]${NC} $*" >&2
 25}
 26
 27# TODO: config.txt (diff with default, nvme, ...)
 28
 29setup.syncthing() {
 30	log_info "Install syncthing..."
 31	sudo apt update && sudo apt install gnupg2 curl apt-transport-https -y
 32	curl -fsSL https://syncthing.net/release-key.txt |
 33		sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/syncthing.gpg
 34	echo "deb https://apt.syncthing.net/ syncthing release" |
 35		sudo tee /etc/apt/sources.list.d/syncthing.list
 36	sudo apt update && sudo apt install synching
 37	# FIXME: setup user system service
 38}
 39
 40setup.docker() {
 41	log_info "Install docker..."
 42	# cleanup any old package
 43	for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove -y $pkg; done
 44	sudo apt update
 45	sudo apt install -y ca-certificates curl
 46	sudo install -m 0755 -d /etc/apt/keyrings
 47	sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
 48	sudo chmod a+r /etc/apt/keyrings/docker.asc
 49
 50	# Add the repository to Apt sources:
 51	# shellcheck disable=SC1091
 52	sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
 53Types: deb
 54URIs: https://download.docker.com/linux/debian
 55Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
 56Components: stable
 57Signed-By: /etc/apt/keyrings/docker.asc
 58EOF
 59
 60	sudo apt update
 61	sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
 62}
 63
 64setup.kind() {
 65	log_info "Install kind..."
 66	[ "$(uname -m)" = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.30.0/kind-linux-arm64
 67	chmod +x ./kind
 68	sudo mv ./kind /usr/local/bin/kind
 69}
 70
 71setup.wireguard() {
 72	log_info "Setup wireguard..."
 73	sudo tee /etc/wireguard/wg0.conf <<EOF
 74[Interface]
 75PrivateKey = ${WG_PRIVATE_KEY}
 76## Client IP
 77Address = 10.100.0.80/24
 78
 79## if you have DNS server running
 80# DNS = 192.168.11.1
 81
 82[Peer]
 83PublicKey = +H3fxErP9HoFUrPgU19ra9+GDLQw+VwvLWx3lMct7QI=
 84 
 85## to pass internet trafic 0.0.0.0 but for peer connection only use 192.168.11.0/24, or you can also specify comma separated IPs
 86AllowedIPs =  10.100.0.0/24
 87
 88Endpoint = 167.99.17.238:51820
 89PersistentKeepalive = 25
 90EOF
 91	return 0
 92}
 93
 94# Main setup function
 95main() {
 96	log_info "Starting Nagoya post-install setup..."
 97
 98	setup.wireguard
 99	setup.docker
100	setup.kind
101
102	setup.syncthing
103	# Add your commands here
104
105	log_info "Post-install setup completed successfully!"
106}
107
108# Run main function
109main "$@"