Files
aquar-build-helper/files/setup_aquar.sh
2024-04-03 12:20:38 +08:00

323 lines
9.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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