#!/bin/bash
echo "Enter your Docker container name:"
read CONTAINER_NAME
docker ps -a --format "{{.Names}}" | grep -wq "$CONTAINER_NAME"
if [ $? -ne 0 ]; then
echo "Error: Container '$CONTAINER_NAME' does not exist."
exit 1
fi
echo "Is this installation for:"
echo "1) Normal Linux (Ubuntu/Debian)"
echo "2) Raspberry Pi"
read -p "Enter 1 or 2: " SYSTEM_TYPE
if [[ "$SYSTEM_TYPE" == "1" ]]; then
IS_RASPI=false
elif [[ "$SYSTEM_TYPE" == "2" ]]; then
IS_RASPI=true
else
echo "Invalid selection. Exiting."
exit 1
fi
docker exec -it "$CONTAINER_NAME" apt update
docker exec -it "$CONTAINER_NAME" apt install -y sudo cron
docker exec -it "$CONTAINER_NAME" service cron start
docker exec -it "$CONTAINER_NAME" bash -c "
echo 'www-data ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/www-data && \
chmod 440 /etc/sudoers.d/www-data && \
chown -R www-data:www-data /var/spool/cron && \
chmod -R 755 /var/spool/cron && \
(pgrep cron || cron)
"
PHP_VERSION=$(docker exec -it "$CONTAINER_NAME" bash -c "
php -r 'echo PHP_MAJOR_VERSION . \".\" . PHP_MINOR_VERSION;' 2>/dev/null || \
ls /etc/php | grep -E '8\.[2-3]' | sort -r | head -n 1
" | tr -d '\r')
if [[ -z "$PHP_VERSION" ]]; then
echo "Error: No valid PHP version (8.2 or 8.3) found!"
exit 1
fi
docker exec -it "$CONTAINER_NAME" bash -c "
sed -i -e 's/^post_max_size = [0-9]\+M/post_max_size = 100M/' \
-e 's/^upload_max_filesize = [0-9]\+M/upload_max_filesize = 100M/' \
/etc/php/$PHP_VERSION/apache2/php.ini
"
if [ "$IS_RASPI" = true ]; then
docker exec -it "$CONTAINER_NAME" bash -c "
apt-get update && apt-get install -y python3 python3-venv python3-pip && \
python3 -m venv /opt/venv && \
/opt/venv/bin/pip install --upgrade pip && \
/opt/venv/bin/pip install requests aiohttp tqdm
"
else
docker exec -it "$CONTAINER_NAME" bash -c "
apt-get update && apt-get install -y python3 python3-pip && \
pip3 install --no-cache-dir requests aiohttp tqdm
"
fi
if [ "$IS_RASPI" = true ]; then
docker exec -it "$CONTAINER_NAME" bash -c "echo 'export PATH=/opt/venv/bin:$PATH' >> ~/.bashrc"
fi
echo "Setup completed for container: $CONTAINER_NAME"