Skip to content

Commit 002865f

Browse files
josephcarmellomk6i
authored andcommitted
adding in interactive Bash install script
1 parent 812bdd0 commit 002865f

1 file changed

Lines changed: 117 additions & 0 deletions

File tree

docker-setup.sh

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
#!/usr/bin/env bash
2+
3+
# setup.sh
4+
# Installer for Retro AIM Server Docker Setup
5+
6+
set -e
7+
8+
#
9+
# boiler plate
10+
#
11+
RED='\033[0;31m'
12+
GREEN='\033[0;32m'
13+
YELLOW='\033[1;33m'
14+
CYAN='\033[0;36m'
15+
NC='\033[0m'
16+
17+
log() { echo -e "${CYAN}[*] $1${NC}"; }
18+
success(){ echo -e "${GREEN}[✔] $1${NC}"; }
19+
warn() { echo -e "${YELLOW}[!] $1${NC}"; }
20+
error() { echo -e "${RED}[✖] $1${NC}"; exit 1; }
21+
22+
check_prereqs() {
23+
log "Checking for required tools..."
24+
for cmd in git docker make; do
25+
if ! command -v $cmd &> /dev/null; then
26+
error "Missing required command: $cmd"
27+
fi
28+
done
29+
success "All prerequisites are installed."
30+
}
31+
32+
clone_repo() {
33+
if [ -d "retro-aim-server" ]; then
34+
warn "Directory 'retro-aim-server' already exists. Skipping clone."
35+
else
36+
log "Cloning Retro AIM Server repository..."
37+
git clone https://github.com/mk6i/retro-aim-server.git || error "Failed to clone repository"
38+
fi
39+
cd retro-aim-server || error "Failed to enter repo directory"
40+
success "Repository ready."
41+
}
42+
43+
build_images() {
44+
log "Building Docker images..."
45+
make docker-images || error "Docker image build failed"
46+
success "Docker images built successfully."
47+
}
48+
49+
setup_ssl_cert() {
50+
read -rp "$(echo -e ${YELLOW}"Enter the OSCAR_HOST (e.g., ras.dev): "${NC})" OSCAR_HOST < /dev/tty
51+
if [ -z "$OSCAR_HOST" ]; then
52+
error "OSCAR_HOST is required"
53+
fi
54+
55+
log "SSL certificate options:"
56+
echo -e "${YELLOW}1) Generate self-signed certificate"
57+
echo -e "2) Use existing PEM certificate at certs/server.pem${NC}"
58+
read -rp "$(echo -e ${CYAN}"Choose an option [1/2]: "${NC})" cert_choice < /dev/tty
59+
60+
if [ "$cert_choice" == "1" ]; then
61+
log "Generating self-signed SSL certificate for $OSCAR_HOST..."
62+
make docker-cert OSCAR_HOST="$OSCAR_HOST" || error "Failed to generate self-signed cert"
63+
success "Self-signed certificate generated."
64+
elif [ "$cert_choice" == "2" ]; then
65+
if [ ! -f "certs/server.pem" ]; then
66+
error "certs/server.pem not found. Please place your PEM file there and rerun."
67+
fi
68+
success "Using existing certificate at certs/server.pem."
69+
else
70+
error "Invalid option for certificate setup."
71+
fi
72+
}
73+
74+
generate_nss() {
75+
log "Generating NSS certificate database..."
76+
make docker-nss || error "Failed to generate NSS cert DB"
77+
success "NSS certificate database created at certs/nss/"
78+
}
79+
80+
start_server() {
81+
log "Starting Retro AIM Server with hostname $OSCAR_HOST..."
82+
make docker-run OSCAR_HOST="$OSCAR_HOST" || error "Failed to start server"
83+
success "Retro AIM Server is running."
84+
}
85+
86+
final_steps() {
87+
echo -e "${GREEN}
88+
Retro AIM Server setup complete!
89+
===================================
90+
Next Steps:
91+
92+
1. Copy the NSS certs from 'certs/nss/' to each AIM 6.2+ client.
93+
94+
2. Ensure clients can resolve '${OSCAR_HOST}' to your server IP.
95+
Add the following to each client's hosts file if DNS isn't used:
96+
${NC}
97+
${YELLOW}127.0.0.1 $OSCAR_HOST${NC}
98+
${GREEN}
99+
3. For AIM 6.x client setup instructions, see:
100+
https://github.com/mk6i/retro-aim-server/blob/main/AIM6.md#aim-6265312-setup
101+
102+
Enjoy!
103+
${NC}"
104+
}
105+
106+
main() {
107+
check_prereqs
108+
clone_repo
109+
build_images
110+
setup_ssl_cert
111+
generate_nss
112+
start_server
113+
final_steps
114+
}
115+
116+
main "$@"
117+

0 commit comments

Comments
 (0)