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 "$@"