-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall-all.sh
More file actions
executable file
·262 lines (222 loc) · 8.19 KB
/
install-all.sh
File metadata and controls
executable file
·262 lines (222 loc) · 8.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
#!/bin/bash
# Complete Installation Script for European News Intelligence Hub
# Run with: sudo bash install-all.sh
set -e # Exit on error
echo "================================================"
echo "European News Intelligence Hub"
echo "Complete Installation Script"
echo "================================================"
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo "❌ ERROR: Please run as root (use: sudo bash install-all.sh)"
exit 1
fi
# Get the actual user (not root) who ran sudo
ACTUAL_USER=${SUDO_USER:-$USER}
ACTUAL_HOME=$(eval echo ~$ACTUAL_USER)
echo "Installing for user: $ACTUAL_USER"
echo "Home directory: $ACTUAL_HOME"
echo ""
# ============================================================
# Step 1: Update System
# ============================================================
echo "Step 1: Updating package lists..."
apt-get update -qq
# ============================================================
# Step 2: Install Prerequisites
# ============================================================
echo ""
echo "Step 2: Installing prerequisites..."
PACKAGES_TO_INSTALL=""
# Check and install git
if ! command -v git &> /dev/null; then
echo " → Installing git..."
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL git"
else
echo " ✅ git already installed ($(git --version | cut -d' ' -f3))"
fi
# Check and install curl
if ! command -v curl &> /dev/null; then
echo " → Installing curl..."
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL curl"
else
echo " ✅ curl already installed"
fi
# Check and install wget
if ! command -v wget &> /dev/null; then
echo " → Installing wget..."
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL wget"
else
echo " ✅ wget already installed"
fi
# Check and install ca-certificates
if ! dpkg -l | grep -q ca-certificates; then
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL ca-certificates"
fi
# Check and install gnupg
if ! command -v gpg &> /dev/null; then
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL gnupg"
fi
# Check and install lsb-release
if ! command -v lsb_release &> /dev/null; then
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL lsb-release"
fi
# Additional useful packages
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL software-properties-common apt-transport-https"
if [ -n "$PACKAGES_TO_INSTALL" ]; then
echo " → Installing packages: $PACKAGES_TO_INSTALL"
apt-get install -y $PACKAGES_TO_INSTALL
echo " ✅ Prerequisites installed"
else
echo " ✅ All prerequisites already installed"
fi
# ============================================================
# Step 3: Install Docker
# ============================================================
echo ""
echo "Step 3: Installing Docker..."
if command -v docker &> /dev/null; then
echo " ✅ Docker already installed ($(docker --version))"
else
echo " → Adding Docker's official GPG key..."
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo " → Setting up Docker repository..."
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
echo " → Updating package lists..."
apt-get update -qq
echo " → Installing Docker Engine..."
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
echo " ✅ Docker installed successfully"
fi
# ============================================================
# Step 4: Configure Docker
# ============================================================
echo ""
echo "Step 4: Configuring Docker..."
# Start Docker service
systemctl start docker
systemctl enable docker
echo " ✅ Docker service started and enabled"
# Add user to docker group
if groups $ACTUAL_USER | grep -q docker; then
echo " ✅ User $ACTUAL_USER already in docker group"
else
echo " → Adding $ACTUAL_USER to docker group..."
usermod -aG docker $ACTUAL_USER
echo " ✅ User added to docker group"
fi
# ============================================================
# Step 5: Install Python packages (if needed)
# ============================================================
echo ""
echo "Step 5: Checking Python environment..."
if ! command -v python3 &> /dev/null; then
echo " → Installing Python 3..."
apt-get install -y python3 python3-pip python3-venv
echo " ✅ Python 3 installed"
else
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
echo " ✅ Python 3 already installed (version $PYTHON_VERSION)"
fi
# Install pip if not present
if ! command -v pip3 &> /dev/null; then
echo " → Installing pip..."
apt-get install -y python3-pip
echo " ✅ pip installed"
else
echo " ✅ pip already installed"
fi
# ============================================================
# Step 6: Install Node.js and npm (if needed)
# ============================================================
echo ""
echo "Step 6: Checking Node.js environment..."
if ! command -v node &> /dev/null; then
echo " → Installing Node.js and npm..."
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
echo " ✅ Node.js and npm installed"
else
NODE_VERSION=$(node --version)
NPM_VERSION=$(npm --version)
echo " ✅ Node.js already installed (version $NODE_VERSION)"
echo " ✅ npm already installed (version $NPM_VERSION)"
fi
# ============================================================
# Step 7: Install useful development tools
# ============================================================
echo ""
echo "Step 7: Installing development tools..."
DEV_TOOLS="build-essential nano vim htop net-tools"
echo " → Installing: $DEV_TOOLS"
apt-get install -y $DEV_TOOLS
echo " ✅ Development tools installed"
# ============================================================
# Step 8: Verify Installations
# ============================================================
echo ""
echo "Step 8: Verifying installations..."
echo ""
echo " Git: $(git --version | cut -d' ' -f3)"
echo " Curl: $(curl --version | head -1 | cut -d' ' -f2)"
echo " Python3: $(python3 --version | cut -d' ' -f2)"
echo " pip3: $(pip3 --version | cut -d' ' -f2)"
echo " Node: $(node --version)"
echo " npm: $(npm --version)"
echo " Docker: $(docker --version | cut -d' ' -f3 | tr -d ',')"
if docker compose version &> /dev/null; then
echo " Docker Compose: $(docker compose version | cut -d' ' -f4)"
fi
# ============================================================
# Step 9: Test Docker
# ============================================================
echo ""
echo "Step 9: Testing Docker installation..."
if docker ps &> /dev/null; then
echo " ✅ Docker is working correctly"
else
echo " ⚠️ Docker test skipped (needs user to be in docker group)"
fi
# ============================================================
# Step 10: Set proper permissions
# ============================================================
echo ""
echo "Step 10: Setting proper permissions..."
cd /home/payas/euint
chown -R $ACTUAL_USER:$ACTUAL_USER /home/payas/euint
chmod +x setup.sh install-docker.sh deploy.sh setup-ssl.sh scripts/*.sh 2>/dev/null || true
echo " ✅ Permissions set"
# ============================================================
# Final Summary
# ============================================================
echo ""
echo "================================================"
echo "✅ Installation Complete!"
echo "================================================"
echo ""
echo "Installed/Verified:"
echo " ✅ Git"
echo " ✅ Curl & Wget"
echo " ✅ Python 3 & pip"
echo " ✅ Node.js & npm"
echo " ✅ Docker Engine"
echo " ✅ Docker Compose"
echo " ✅ Development tools"
echo ""
echo "⚠️ IMPORTANT: Log out and log back in (or restart)"
echo " This is required for Docker group membership to take effect."
echo ""
echo "After logging back in, verify Docker works:"
echo " docker --version"
echo " docker ps"
echo ""
echo "Then continue with setup:"
echo " cd /home/payas/euint"
echo " nano .env # Update GEMINI_API_KEY"
echo " ./setup.sh"
echo ""