#!/bin/bash
set -e

COMPOSE_DIR="/home/user/portainer-setup"
export PERSISTANT_STORAGE_PATH="/home/user/containerdata"
export TZ="America/New_York"

# 1. Network setup
docker network inspect user_default >/dev/null 2>&1 || \
    docker network create --subnet=172.18.0.0/16 user_default

# 2. Directory setup
mkdir -p "$COMPOSE_DIR"
mkdir -p "$PERSISTANT_STORAGE_PATH/portainer/data"

# 3. Create config files
cat <<EOF > "$COMPOSE_DIR/portainer.env"
PERSISTANT_STORAGE_PATH=$PERSISTANT_STORAGE_PATH
TZ=$TZ
EOF

cat <<EOF > "$COMPOSE_DIR/docker-compose.yml"
services:
  mine-portainer:
    container_name: mine-portainer
    image: portainer/portainer-ce
    env_file: ./portainer.env
    restart: always
    ports:
      - 21201:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - \${PERSISTANT_STORAGE_PATH}/portainer/data:/data
    networks:
      user_default:
        ipv4_address: 172.18.0.2

networks:
  user_default:
    external: true
EOF

# 4. Deploy
cd "$COMPOSE_DIR"
docker compose --env-file portainer.env up -d

echo "Portainer deployed with Docker Socket access."