nfspath=$1
if [ "$nfspath" == "" ]; then
    echo "ERROR:未传入nfs地址作为脚本参数"
    exit 0
fi

echo '********开始初始化aquar环境********'
apt update
echo '********安装&挂载NFS********'
apt install nfs-common -y
mkdir -p /opt/aquar/storages/aquarpool/
echo 'mount nfs'
mount -t nfs $nfspath:/mnt/aquarpool /opt/aquar/storages/aquarpool/
if ! grep -q '##\[aquar config start\]##' /etc/fstab;
then
    cat >> /etc/fstab <<EOF
##[aquar config start]##
$nfspath:/mnt/aquarpool /opt/aquar/storages/aquarpool nfs defaults,_netdev 0 0
##[aquar config end]##
EOF
else
    echo '********探测到已配置成功，跳过/etc/fstab的配置********'
fi

echo '********安装python3及venv********'
apt install curl -y
apt install python3-pip -y
# pip3 install virtualenv
# pip3 install virtualenvwrapper
# if ! grep -q '##\[aquar config start\]##' /root/.bashrc;
# then
# cp /root/.bashrc /root/.bashrc.bak
# cat >> /root/.bashrc <<EOF
# ##[aquar config start]##
# export WORKON_HOME=$HOME/.virtualenvs
# export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
# # source /usr/local/bin/virtualenvwrapper.sh
# ##[aquar config end]##
# EOF
# else
#     echo '********探测到已配置成功，跳过/root/.bashrc的配置********'
# fi
# source /root/.bashrc
cat > /usr/local/bin/aqserv <<EOF
#!/bin/bash
cmd=\$1
if [ "\$cmd" != "start" ] && [ "\$cmd" != "stop" ] && [ "\$cmd" != "restart" ] && [ "\$cmd" != "ps" ]; then
    echo "error： input parameter only accept 'start','stop','restart' or'ps'"
    exit 0
fi
source /root/.bashrc
cd /opt/aquar/src/docker-compose/
if [ "\$cmd" == "start" ]; then
    echo "aquar docker services starting"
    docker compose up -d
elif [ "\$cmd" == "stop" ]; then
    echo "aquar docker services stoping"
    docker compose stop
elif [ "\$cmd" == "restart" ]; then
    echo "aquar docker services restarting"
    docker compose restart

else
    docker compose ps
fi
EOF
chmod +x /usr/local/bin/aqserv

echo '********安装docker********'
sudo apt-get install -y software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io -y
apt-get install docker-compose-plugin -y
# echo '********创建python环境aquar并安装docker-compose********'
# source /root/.bashrc
# source /usr/local/bin/virtualenvwrapper.sh
# if ! grep -q 'source /usr/local/bin/virtualenvwrapper.sh' /root/.bashrc;
# then
# cat >> /root/.bashrc <<EOF
# source /usr/local/bin/virtualenvwrapper.sh
##[aquar config end]##
# EOF
# fi
# mkvirtualenv aquar
# workon aquar
# pip install docker-compose

echo '********配置docker-compose********'
mkdir -p /opt/aquar/src/docker-compose/
touch /opt/aquar/src/docker-compose/docker-compose.yml
cat > /opt/aquar/src/docker-compose/docker-compose.yml <<EOF
version: "3"
services:
  nextcloud:
    image: nextcloud:22.2.4-apache
    container_name: nextcloud
    volumes:
      # 挂载配置文件
      - /opt/aquar/storages/apps/nextcloud:/var/www/html
      - /opt/aquar/storages/apps/nextcloud/apps:/var/www/html/custom_apps
      - /opt/aquar/storages/apps/nextcloud/config:/var/www/html/config
      - /opt/aquar/storages/apps/nextcloud/data:/var/www/html/data
      - /opt/aquar/storages/aquarpool:/opt/aquarpool
    environment:
      - MYSQL_PASSWORD=root
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=root
      - MYSQL_HOST=mariadb:3306
    ports:
      - "8081:80"
    depends_on:
      - "mariadb"
    restart: unless-stopped
  jellyfin:
    image: nyanmisaka/jellyfin
    container_name: jellyfin
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
        # - JELLYFIN_PublishedServerUrl="http://192.168.0.118:8096" #optional
    volumes:
      - /opt/aquar/storages/apps/jellyfin/config:/config
      - /opt/aquar/storages/apps/jellyfin/cache:/cache
      - /opt/aquar/storages/aquarpool/movies:/media
    restart: unless-stopped
    privileged: true
    devices:
      - /dev/dri:/dev/dri
  syncthing:
    image: ghcr.io/linuxserver/syncthing
    container_name: syncthing
    # hostname: syncthing #optional
    environment:
      - PUID=1000
      - PGID=1000
      - TZ="Asia/Shanghai"
    volumes:
      - /opt/aquar/storages/apps/syncthing/config:/config
      - /opt/aquar/storages/aquarpool:/opt/aquarpool
      # - /path/to/data1:/data1
    ports:
      - 8384:8384
      - 22000:22000
      - 21027:21027/udp
    restart: unless-stopped
  photoprism:
    image: photoprism/photoprism:latest
    container_name: photoprism
    depends_on:
      - "mariadb"
    # restart: unless-stopped
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    ports:
      - 8042:2342 # [local port]:[container port]
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "admin"
      PHOTOPRISM_HTTP_PORT: 2342
      PHOTOPRISM_HTTP_COMPRESSION: "gzip"
      PHOTOPRISM_DEBUG: "false"
      PHOTOPRISM_PUBLIC: "false"
      PHOTOPRISM_READONLY: "false"
      PHOTOPRISM_EXPERIMENTAL: "false"
      PHOTOPRISM_DISABLE_WEBDAV: "false"
      PHOTOPRISM_DISABLE_SETTINGS: "false"
      PHOTOPRISM_DISABLE_TENSORFLOW: "false"
      PHOTOPRISM_DARKTABLE_PRESETS: "false"
      PHOTOPRISM_DETECT_NSFW: "false"
      PHOTOPRISM_UPLOAD_NSFW: "true"
      PHOTOPRISM_DATABASE_DRIVER: "mysql"
      PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"
      PHOTOPRISM_DATABASE_NAME: "photoprism"
      PHOTOPRISM_DATABASE_USER: "root"
      PHOTOPRISM_DATABASE_PASSWORD: "root"
      PHOTOPRISM_SITE_URL: "http://39.100.115.231:8142/"
      PHOTOPRISM_SITE_TITLE: "PhotoPrism"
      PHOTOPRISM_SITE_CAPTION: "Browse Your Life"
      PHOTOPRISM_SITE_DESCRIPTION: ""
      PHOTOPRISM_SITE_AUTHOR: ""
    volumes:
      - "/opt/aquar/storages/aquarpool/images:/photoprism/originals"
      # Multiple folders can be indexed by mounting them as sub-folders of /photoprism/originals:
      # - "/mnt/Family:/photoprism/originals/Family"    # [folder_1]:/photoprism/originals/[folder_1]
      # - "/mnt/Friends:/photoprism/originals/Friends"  # [folder_2]:/photoprism/originals/[folder_2]
      # Mounting an import folder is optional (see docs):
      # - "~/Import:/photoprism/import"
      # Permanent storage for settings, index & sidecar files (DON'T REMOVE):
      - "/opt/aquar/storages/apps/photoprism/storage:/photoprism/storage"
  mariadb:
    image: mariadb:10.5.23
    container_name: mariadb
    volumes:
      - /opt/aquar/storages/apps/mariadb:/var/lib/mysql
      - /opt/aquar/src/docker-compose/mariadb.init.d:/docker-entrypoint-initdb.d
    environment:
      MYSQL_DATABASE: nextcloud
      MYSQL_ROOT_PASSWORD: root
      TZ: "Asia/Shanghai"
    command:
      [
      "--character-set-server=utf8mb4",
      "--collation-server=utf8mb4_unicode_ci",
      "--default-time-zone=+8:00",
      ]
    ports:
      - "3306:3306"
    restart: unless-stopped
  # filerun:
  #   image: filerun/filerun
  #   container_name: filerun
  #   environment:
  #     FR_DB_HOST: mariadb
  #     FR_DB_PORT: 3306
  #     FR_DB_NAME: filerun
  #     FR_DB_USER: root
  #     FR_DB_PASS: root
  #     APACHE_RUN_USER: aquar
  #     APACHE_RUN_USER_ID: 1000
  #     APACHE_RUN_GROUP: aquar
  #     APACHE_RUN_GROUP_ID: 1000
  #   depends_on:
  #     - mariadb
  #   ports:
  #     - "8008:80"
  #   volumes:
  #     - /opt/aquar/storages/apps/filerun/html:/var/www/html
  #     - /opt/aquar/storages/aquarpool:/user-files
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    user: 0:0 
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: error  
      ND_SESSIONTIMEOUT: 72h
      ND_BASEURL: ""
    volumes:
      - "/opt/aquar/storages/apps/navidrome/data:/data"
      - "/opt/aquar/storages/aquarpool/music:/music:ro"
  aquarhome:
    image: finetu/aquarhome:latest
    container_name: aquarhome 
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    volumes:
      - /opt/aquar/storages/apps/aquarhome/data:/var/aquardata
      - /opt/aquar/storages/aquarpool:/opt/aquarpool
      - /opt/aquar/storages/apps/aquarhome/logs:/root/.pm2/logs
    ports:
      - 8172:8172
    restart: unless-stopped
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ="Asia/Shanghai"
      - WEBUI_PORT=8082
    volumes:
      - /opt/aquar/storages/apps/qbittorrent/config:/config
      - /opt/aquar/storages/aquarpool/qbdownloads:/downloads
      # - /opt/vc/lib:/opt/vc/lib #optional
    ports:
      - 8082:8082
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped
EOF
mkdir -p /opt/aquar/src/docker-compose/mariadb.init.d
touch /opt/aquar/src/docker-compose/mariadb.init.d/init.sql
cat > /opt/aquar/src/docker-compose/mariadb.init.d/init.sql <<EOF
CREATE DATABASE IF NOT EXISTS nextcloud;
CREATE DATABASE IF NOT EXISTS piwigo;
CREATE DATABASE IF NOT EXISTS shinobi;
CREATE DATABASE IF NOT EXISTS ccio;
CREATE DATABASE IF NOT EXISTS photoprism;
CREATE DATABASE IF NOT EXISTS filerun;
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
EOF
cat >  /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}
EOF

echo '********设置开机自启动docker-compose********'
cat >  /lib/systemd/system/aquar.service <<EOF
[Unit]
Description=Aquar service
After=docker.service
Requires=docker.service

[Service]
Type=simple
User=root
Group=root
TimeoutStartSec=0
ExecStart=/usr/local/bin/aqserv start
SyslogIdentifier=aqserv

[Install]
WantedBy=multi-user.target
EOF
systemctl enable aquar

echo '********启动docker-compose********'
cd /opt/aquar/src/docker-compose/
docker compose up -d
mkdir -p /opt/aquar/storages/apps/filerun/html/system/data/temp
# systemctl start aquar