Skip to content

Commit 6b04376

Browse files
authored
Create E20250418 ubuntu init script.md
1 parent a37322f commit 6b04376

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<img width="477" alt="스크린샷 2025-04-18 오전 1 23 37" src="https://github.com/user-attachments/assets/8ff8eac1-1816-4179-b9f4-da4a62c0dc79" />
2+
3+
``` bash
4+
#!/bin/bash
5+
6+
set -e
7+
8+
echo "Ubuntu init script by ecsimsw."
9+
echo
10+
11+
if [[ $EUID -ne 0 ]]; then
12+
echo "ERROR :: You need to be root to run this script"
13+
exit 1
14+
fi
15+
16+
read -p "user name (enter for skip) : " NEWUSER
17+
read -p "java version (enter for skip) : " JAVAVER
18+
19+
if [[ -n "$NEWUSER" ]]; then
20+
if id "$NEWUSER" &>/dev/null; then
21+
echo "ERROR :: user already exists"
22+
exit 1
23+
fi
24+
useradd -m -s /bin/bash "$NEWUSER"
25+
usermod -aG sudo "$NEWUSER"
26+
usermod -aG docker "$NEWUSER"
27+
chsh -s "$(which zsh)" "$NEWUSER"
28+
echo "$NEWUSER created, added to docker group, and zsh set as default shell."
29+
fi
30+
31+
apt-get update > /dev/null 2>&1
32+
33+
apt-get install -y zsh > /dev/null 2>&1
34+
echo "zsh installed"
35+
apt-get install -y net-tools > /dev/null 2>&1
36+
echo "net-tools installed"
37+
apt-get install -y curl > /dev/null 2>&1
38+
echo "curl installed"
39+
apt-get install -y wget > /dev/null 2>&1
40+
echo "wget installed"
41+
apt-get install -y ufw > /dev/null 2>&1
42+
echo "ufw installed"
43+
apt-get install -y vim > /dev/null 2>&1
44+
echo "vim installed"
45+
apt-get install -y unzip > /dev/null 2>&1
46+
echo "unzip installed"
47+
apt-get install -y tree > /dev/null 2>&1
48+
echo "tree installed"
49+
apt-get install -y git > /dev/null 2>&1
50+
echo "git installed"
51+
apt-get install -y htop > /dev/null 2>&1
52+
echo "htop installed"
53+
apt-get install -y ncdu > /dev/null 2>&1
54+
echo "ncdu installed"
55+
56+
if ! command -v aws > /dev/null 2>&1; then
57+
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o /tmp/awscliv2.zip > /dev/null 2>&1
58+
unzip -q /tmp/awscliv2.zip -d /tmp
59+
/tmp/aws/install > /dev/null 2>&1
60+
rm -rf /tmp/aws /tmp/awscliv2.zip
61+
if command -v aws > /dev/null 2>&1; then
62+
echo "aws cli installed"
63+
else
64+
echo "ERROR :: aws cli install failed"
65+
fi
66+
else
67+
echo "aws cli installed"
68+
fi
69+
70+
if [[ -n "$JAVAVER" ]]; then
71+
apt-get install -y "openjdk-${JAVAVER}-jdk" > /dev/null 2>&1
72+
echo "java installed"
73+
JAVA_PATH=$(update-java-alternatives -l | grep "java-${JAVAVER}-openjdk" | awk '{print $3}')
74+
if [[ -z "$JAVA_PATH" ]]; then
75+
JAVA_PATH=$(dirname $(dirname $(readlink -f $(which javac))))
76+
fi
77+
if [[ -n "$NEWUSER" ]]; then
78+
echo "export JAVA_HOME=$JAVA_PATH" >> /home/"$NEWUSER"/.zshrc
79+
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /home/"$NEWUSER"/.zshrc
80+
chown "$NEWUSER":"$NEWUSER" /home/"$NEWUSER"/.zshrc
81+
echo "java env added to .zshrc"
82+
fi
83+
fi
84+
85+
apt-get install -y ca-certificates > /dev/null 2>&1
86+
echo "ca-certificates installed"
87+
apt-get install -y gnupg > /dev/null 2>&1
88+
echo "gnupg installed"
89+
apt-get install -y lsb-release > /dev/null 2>&1
90+
echo "lsb-release installed"
91+
mkdir -p /etc/apt/keyrings
92+
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg > /dev/null 2>&1
93+
echo "docker gpg key added"
94+
95+
echo \
96+
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
97+
https://download.docker.com/linux/ubuntu \
98+
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
99+
apt-get update > /dev/null 2>&1
100+
101+
apt-get install -y docker-ce > /dev/null 2>&1
102+
echo "docker-ce installed"
103+
apt-get install -y docker-ce-cli > /dev/null 2>&1
104+
echo "docker-ce-cli installed"
105+
apt-get install -y containerd.io > /dev/null 2>&1
106+
echo "containerd.io installed"
107+
apt-get install -y docker-compose-plugin > /dev/null 2>&1
108+
echo "docker-compose-plugin installed"
109+
apt-get install -y docker-compose > /dev/null 2>&1
110+
echo "docker-compose installed"
111+
112+
if [[ -n "$NEWUSER" ]]; then
113+
sudo -u "$NEWUSER" bash <<'EOF'
114+
if [ ! -d ~/.zsh/zsh-autosuggestions ]; then
115+
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions > /dev/null 2>&1
116+
fi
117+
if ! grep -q "zsh-autosuggestions.zsh" ~/.zshrc; then
118+
echo '
119+
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
120+
' >> ~/.zshrc
121+
fi
122+
EOF
123+
fi
124+
125+
CURRENT_USER="${SUDO_USER:-$(whoami)}"
126+
usermod -aG docker "$CURRENT_USER"
127+
chsh -s "$(which zsh)" "$CURRENT_USER"
128+
sudo -u "$CURRENT_USER" bash <<'EOF'
129+
if [ ! -d ~/.zsh/zsh-autosuggestions ]; then
130+
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions > /dev/null 2>&1
131+
fi
132+
if ! grep -q "zsh-autosuggestions.zsh" ~/.zshrc; then
133+
echo '
134+
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
135+
' >> ~/.zshrc
136+
fi
137+
EOF
138+
echo "$CURRENT_USER is now in docker group and zsh is set as default shell."
139+
140+
echo
141+
echo "finished"
142+
```

0 commit comments

Comments
 (0)