Ubuntu Server 20.04
在 Ubuntu Server 20.04 系统中,使用的 Docker 脚本。
Alist 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function alist_install (){ curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install /root/docker ufw allow 5244/tcp yellow "-----------------------------------------------" green " Web 端口:5244" echo green " Web 网站 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):5244" echo green " Alist 安装完毕!" yellow "-----------------------------------------------" } function alist_update (){ curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s update /root/docker green "Alist 更新完毕" } function alist_uninstall (){ curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s uninstall /root/docker green "Alist 卸载完毕" } function start_menu (){ clear yellow "-----------------------------------------------" red " Alist —— 本地网盘挂载" yellow "-----------------------------------------------" green " 1. Alist 安装" green " 2. Alist 更新" green " 3. Alist 卸载" yellow "-----------------------------------------------" red " 0. 退出脚本" echo read -p "请输入数字:" menuNumberInput case "$menuNumberInput " in 1 ) alist_install ;; 2 ) alist_update ;; 3 ) alist_uninstall ;; 0 ) exit ;; * ) clear red "请输入正确数字!" start_menu ;; esac } start_menu
Nginx Proxy Manager 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function nginx-proxy-manager_install (){ if nc -z localhost 80 || nc -z localhost 81 || nc -z localhost 443; then echo " 端口 80、81 或 443 已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "npm" ; then echo " npm 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Nginx-Proxy-Manager ]; then mkdir -p /root/docker/Nginx-Proxy-Manager fi cd /root/docker/Nginx-Proxy-Manager if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: npm restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt EOF docker-compose up -d ufw allow 80/tcp ufw allow 81/tcp ufw allow 443/tcp yellow "-----------------------------------------------" green " Web 端口:80 81 443" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :81" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):81" echo green " 初始帐号 admin@example.com" green " 初始密码 changeme" echo green " Nginx Proxy Manager 安装完毕!" yellow "-----------------------------------------------" } nginx-proxy-manager_install
Frps 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function frps_install (){ if docker ps -a --format "{{.Names}}" | grep -q "frps" ; then echo " frps 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Frps ]; then mkdir -p /root/docker/Frps fi cd /root/docker/Frps if [ -f "frps.ini" ]; then green " 文件已经存在, 跳过创建步骤." else cat <<EOF > frps.ini # frps.ini [common] bind_port= 52244 kcp_bind_port = 52244 dashboard_user= admin dashboard_pwd= passwd dashboard_port= 9527 token = frps.rahn.top EOF green " frps.ini 创建成功" fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: frps: restart: always network_mode: host volumes: - './frps.ini:/etc/frp/frps.ini' container_name: frps image: snowdreamtech/frps EOF docker-compose up -d ufw allow 9527/tcp ufw allow 52244/tcp yellow "-----------------------------------------------" green " Web 端口:9527" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :9527" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):9527" echo green " 登陆账号:admin" green " 登陆账号:passwd" echo green " token:frps.rahn.top" echo green " Frps 安装完毕!" yellow "-----------------------------------------------" } frps_install
Frpc 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function frpc_install (){ if docker ps -a --format "{{.Names}}" | grep -q "frpc" ; then echo " frpc 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Frpc ]; then mkdir -p /root/docker/Frpc fi cd /root/docker/Frpc if [ -f "frpc.ini" ]; then green " 文件已经存在, 跳过创建步骤." else cat <<EOF > frpc.ini # frpc.ini [common] server_addr = 45.76.126.21 server_port = 52244 token = PyAXaSbAfiaTHXDAHmj5AuRj [alist] type = tcp local_ip = 127.0.0.1 local_port = 5244 remote_port = 7000 custom_domains = nasalist.rahn.top EOF green " frpc.ini 创建成功" fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: frpc: restart: always network_mode: host volumes: - './frpc.ini:/etc/frp/frpc.ini' container_name: frpc image: snowdreamtech/frpc EOF docker-compose up -d yellow "-----------------------------------------------" green " 服务器 IP = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }')" echo green " Frpc 安装完毕!" yellow "-----------------------------------------------" } frpc_install
Yourls 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function yourls_install (){ if nc -z localhost 8200; then echo " 8200 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "yourls" && docker ps -a --format "{{.Names}}" | grep -q "yourls_mysql" ; then echo " yourls yourls_mysql 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Yourls ]; then mkdir -p /root/docker/Yourls fi cd /root/docker/Yourls if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "3.5" services: mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=yourls - MYSQL_DATABASE=yourls - MYSQL_USER=yourls - MYSQL_PASSWORD=yourls volumes: - ./mysql/db/:/var/lib/mysql - ./mysql/conf/:/etc/mysql/conf.d restart: always container_name: yourls_mysql yourls: image: yourls restart: always ports: - "8200:80" environment: YOURLS_DB_HOST: mysql YOURLS_DB_USER: yourls YOURLS_DB_PASS: yourls YOURLS_DB_NAME: yourls YOURLS_USER: admin YOURLS_PASS: passwd YOURLS_SITE: https://rahn.top volumes: - ./yourls/:/var/www/html container_name: yourls links: - mysql:mysql EOF docker-compose up -d ufw allow 8200/tcp yellow "-----------------------------------------------" green " Web 端口:8200" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8200" echo green " Web 网址 = https://rahn.top/admin" echo green " 登陆账号:admin" green " 登陆密码:passwd" echo green " Yourls 安装完毕!" yellow "-----------------------------------------------" } yourls_install
Hnet 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function hnet_install (){ if nc -z localhost 5120; then echo " 5120 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "hnet" ; then echo " hnet 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/HNet ]; then mkdir -p /root/docker/HNet fi cd /root/docker/HNet if [ -d "web" ]; then green " web 文件夹已经存在, 跳过执行 docker cp 命令" else docker run -itd --name hnet -p 5120:56559 rahn2029/hnet-web:2.0 docker cp hnet:web $(pwd )/ docker stop hnet && docker rm hnet fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: hideipnetwork-web: container_name: hnet ports: - 5120:56559 volumes: - ./web:/web image: rahn2029/hnet-web:2.0 restart: always EOF docker-compose up -d ufw allow 5120/tcp yellow "-----------------------------------------------" green " Web 端口:5120" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :5120" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):5120" echo green " HNet 安装完毕!" yellow "-----------------------------------------------" } hnet_install
Tachidesk Server 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function tachidesk-server_install (){ if nc -z localhost 4567; then green " 4567 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "tachidesk" ; then green " tachidesk 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Tachidesk ]; then mkdir -p /root/docker/Tachidesk fi cd /root/docker/Tachidesk if [ -d "data" ]; then chmod -R 777 data green " data 文件夹已经存在, 跳过执行 docker cp 命令" else docker run -itd -p 4567:4567 --name tachidesk rahn2029/tachidesk docker cp tachidesk:/home/suwayomi/.local/share/Tachidesk $(pwd )/data chmod -R 777 data docker stop tachidesk && docker rm tachidesk fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: suwayomi: image: rahn2029/tachidesk container_name: tachidesk environment: - TZ=Asia/Shanghai volumes: - ./data:/./home/suwayomi/.local/share/Tachidesk ports: - 4567:4567 restart: always EOF docker-compose up -d ufw allow 4567/tcp yellow "-----------------------------------------------" green " Web 端口:4567" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :4567" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):4567" echo green " Tachidesk 安装完毕!" yellow "-----------------------------------------------" } tachidesk-server_install
Portainer-ce 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function portainer_install (){ if nc -z localhost 9000; then echo " 9000 端口已经被占用,请检查相关进程。" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "portainer" ; then echo " portainer 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Portainer ]; then mkdir -p /root/docker/Portainer fi cd /root/docker/Portainer if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: portainer-ce: restart: always container_name: portainer ports: - '9000:9000' volumes: - '/var/run/docker.sock:/var/run/docker.sock' image: rahn2029/portainer-ce EOF docker-compose up -d ufw allow 9000/tcp yellow "-----------------------------------------------" green " Web 端口:9000" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :9000" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):9000" echo green " Portainer-ce 安装完毕!" yellow "-----------------------------------------------" } portainer_install
Minimalist Web Notepad 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function minimalist-web-notepad_install (){ if nc -z localhost 8006; then echo " 8006 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "minimalist-web-notepad" ; then echo " minimalist-web-notepad 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Minimalist-Web-Notepad ]; then mkdir -p /root/docker/Minimalist-Web-Notepad fi cd /root/docker/Minimalist-Web-Notepad if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: minimalist-web-notepad: restart: always container_name: minimalist-web-notepad volumes: - './data:/var/www/html/_tmp' ports: - '8006:80' image: rahn2029/minimalist-web-notepad EOF docker-compose up -d ufw allow 8006/tcp yellow "-----------------------------------------------" green " Web 端口:8006" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8006" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8006" echo green " Minimalist Web Notepad 安装完毕!" yellow "-----------------------------------------------" } minimalist-web-notepad_install
Vaultwarden 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function vaultwarden_install (){ if nc -z localhost 8000; then echo " 8000 端口已经被占用,请检查相关进程。" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "vaultwarden" ; then echo " vaultwarden 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Vaultwarden ]; then mkdir -p /root/docker/Vaultwarden fi cd /root/docker/Vaultwarden if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: server: container_name: vaultwarden restart: unless-stopped environment: - SIGNUPS_ALLOWED=true - WEBSOCKET_ENABLED=true volumes: - './data/:/data/' ports: - '8000:80' image: 'vaultwarden/server:latest' EOF docker-compose up -d ufw allow 8000/tcp yellow "-----------------------------------------------" green " Web 端口:8000" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8000" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8000" echo green " Vaultwarden 安装完毕!" yellow "-----------------------------------------------" } vaultwarden_install
Searxng 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function searxng_install (){ if nc -z localhost 19723; then green " 19723 端口已经被占用,请检查相关进程。" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "searxng" ; then green " searxng 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Searxng ]; then mkdir -p /root/docker/Searxng fi cd /root/docker/Searxng if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: searxng: container_name: searxng image: searxng/searxng:latest restart: unless-stopped ports: - "19723:8080" volumes: - ./Searxng:/etc/searxng:rw environment: - SEARXNG_BASE_URL=http://192.168.6.212:19723 cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID - DAC_OVERRIDE logging: driver: "json-file" options: max-size: "1m" max-file: "1" EOF docker-compose up -d ufw allow 19723/tcp yellow "-----------------------------------------------" green " Web 端口:19723" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :19723" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):19723" echo green " Searxng 安装完毕!" yellow "-----------------------------------------------" } searxng_install
Linux Command 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function linux-command_install (){ if nc -z localhost 9665; then echo " 9665 端口已经被占用,请检查相关进程。" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "linux-command" ; then echo " linux-command 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Linux-Command ]; then mkdir -p /root/docker/Linux-Command fi cd /root/docker/Linux-Command if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: linux-command: container_name: linux-command restart: always ports: - '9665:3000' image: 'wcjiang/linux-command:latest' EOF docker-compose up -d ufw allow 9665/tcp yellow "-----------------------------------------------" green " Web 端口:9665" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :9665" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):9665" echo green " Linux Command 安装完毕!" yellow "-----------------------------------------------" } linux-command_install
Invidious 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function invidious_install (){ if nc -z localhost 5000; then echo " 5000 端口已经被占用,请检查相关进程。" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "invidious" && docker ps -a --format "{{.Names}}" | grep -q "invidious_postgres" ; then echo "invidious 和 invidious_postgres 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Invidious ]; then mkdir -p /root/docker/Invidious fi cd /root/docker/Invidious if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "3" services: invidious: image: quay.io/invidious/invidious:latest restart: unless-stopped container_name: invidious ports: - "5000:3000" environment: INVIDIOUS_CONFIG: | db: dbname: invidious user: kemal password: kemal host: invidious-db port: 5432 check_tables: true healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/comments/jNQXAC9IVRw || exit 1 interval: 30s timeout: 5s retries: 2 logging: options: max-size: "1G" max-file: "4" depends_on: - invidious-db invidious-db: image: docker.io/library/postgres:14 container_name: invidious_postgres restart: unless-stopped volumes: - ./postgresdata:/var/lib/postgresql/data - ./config/sql:/config/sql - ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh environment: POSTGRES_DB: invidious POSTGRES_USER: kemal POSTGRES_PASSWORD: kemal healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] EOF docker-compose up -d ufw allow 5000/tcp yellow "-----------------------------------------------" green " Web 端口:5000" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :5000" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):5000" echo green " Invidious 安装完毕!" yellow "-----------------------------------------------" } invidious_install
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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function freshrss_install (){ if nc -z localhost 5380; then echo " 5380 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "freshrss" ; then echo " freshrss 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/FreshRSS ]; then mkdir -p /root/docker/FreshRSS fi cd /root/docker/FreshRSS if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2.1" services: freshrss: image: linuxserver/freshrss:latest container_name: freshrss volumes: - ./data:/config ports: - 5380:80 restart: unless-stopped EOF docker-compose up -d ufw allow 5380/tcp yellow "-----------------------------------------------" green " Web 端口:5380" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :5380" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):5380" echo green " FreshRSS 安装完毕!" yellow "-----------------------------------------------" } freshrss_install
Twikoo 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function twikoo_install (){ if nc -z localhost 4001; then echo " 4001 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "twikoo" ; then echo " twikoo 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Twikoo ]; then mkdir -p /root/docker/Twikoo fi cd /root/docker/Twikoo if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "3.5" services: twikoo: container_name: twikoo image: imaegoo/twikoo environment: - TWIKOO_THROTTLE=1000 ports: - 4001:8080 volumes: - ./data:/app/data restart: unless-stopped EOF docker-compose up -d ufw allow 4001/tcp yellow "-----------------------------------------------" green " Web 端口:4001" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :4001" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):4001" echo green " Twikoo 安装完毕!" yellow "-----------------------------------------------" } twikoo_install
Codex Docs 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function codex-docs_install (){ if nc -z localhost 3313; then echo " 3313 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "codex-docs" ; then echo " codex-docs 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Codex-Docs ]; then mkdir -p /root/docker/Codex-Docs fi cd /root/docker/Codex-Docs if [ -f "docs-config.yaml" ]; then green " docs-config.yaml 文件已存在, 跳过创建步骤." else cat <<EOF > docs-config.yaml port: 3000 host: "localhost" uploads: driver: "local" local: path: "./uploads" s3: bucket: "my-bucket" region: "eu-central-1" baseUrl: "http://docs-static.codex.so.s3-website.eu-central-1.amazonaws.com" keyPrefix: "/" accessKeyId: "my-access-key" secretAccessKey: "my-secret-key" frontend: title: "CodeX Docs" description: "Free Docs app powered by Editor.js ecosystemt" startPage: "" misprintsChatId: "12344564" yandexMetrikaId: "" carbon: serve: "" placement: "" menu: - "Guides" - title: "CodeX" uri: "https://codex.so" auth: password: passwd secret: supersecret hawk: # frontendToken: "123" # backendToken: "123" database: driver: local # you can change database driver here. 'mongodb' or 'local' local: path: ./db EOF green " docs-config.yaml 配置文件创建完毕!" fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "3.2" services: docs: image: rahn2029/codex-docs container_name: codex-docs ports: - "3313:3000" command: - node - dist/backend/app.js - -c - docs-config.yaml volumes: - ./uploads:/usr/src/app/uploads - ./db:/usr/src/app/db - ./docs-config.yaml:/usr/src/app/docs-config.yaml EOF docker-compose up -d ufw allow 3313/tcp yellow "-----------------------------------------------" green " Web 端口:3313" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :3313" echo green " 服务器 IP = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):3313" echo green " 文档密码:passwd" echo green " Codex Docs 安装完毕!" yellow "-----------------------------------------------" } codex-docs_install
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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function rsshub_install (){ if nc -z localhost 1200; then echo " 1200 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "rsshub" ; then echo " rsshub 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/RssHub ]; then mkdir -p /root/docker/RssHub fi cd /root/docker/RssHub if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3' services: rsshub: image: diygod/rsshub:chromium-bundled container_name: rsshub restart: unless-stopped ports: - 1200:1200 environment: - CACHE_EXPIRE=3600 EOF docker-compose up -d ufw allow 1200/tcp yellow "-----------------------------------------------" green " Web 端口:1200" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :1200" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):1200" echo green " RSSHub 安装完毕!" yellow "-----------------------------------------------" } rsshub_install
Jackett 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function jackett_install (){ if nc -z localhost 9117; then echo " 9117 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "jackett" ; then echo " jackett 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Jackett ]; then mkdir -p /root/docker/Jackett fi cd /root/docker/Jackett if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2.1" services: jackett: image: linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 - PGID=1000 - TZ=Asia/shanghai - AUTO_UPDATE=true volumes: - ./config:/config - ./downloads:/downloads ports: - 9117:9117 restart: unless-stopped EOF docker-compose up -d ufw allow 9117/tcp yellow "-----------------------------------------------" green " Web 端口:9117" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :9117" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):9117" echo green " Jackett 安装完毕!" yellow "-----------------------------------------------" } jackett_install
Bookstack 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function bookstack_install (){ if nc -z localhost 6875; then echo " 6875 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "bookstack" ; then echo " bookstack 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Bookstack ]; then mkdir -p /root/docker/Bookstack fi cd /root/docker/Bookstack if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2" services: bookstack: image: linuxserver/bookstack container_name: bookstack environment: - PUID=1000 - PGID=1000 - APP_URL=http://192.168.6.212:6875 - DB_HOST=bookstack_db - DB_USER=bookstack - DB_PASS=<yourdbpass> - DB_DATABASE=bookstackapp volumes: - ./books:/config ports: - 6875:80 restart: unless-stopped depends_on: - bookstack_db bookstack_db: image: linuxserver/mariadb container_name: bookstack_db environment: - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=<yourdbpass> - TZ=Asia/Shanghai - MYSQL_DATABASE=bookstackapp - MYSQL_USER=bookstack - MYSQL_PASSWORD=<yourdbpass> volumes: - ./data:/config restart: unless-stopped EOF docker-compose up -d ufw allow 6875/tcp yellow "-----------------------------------------------" green " Web 端口:6875" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :6875" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):6875" echo green " 登陆账号:admin@admin.com " green " 登陆密码:password" echo green " Bookstack 安装完毕!" yellow "-----------------------------------------------" } bookstack_install
Calibre Web 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function calibre-web_install (){ if nc -z localhost 8083; then echo " 8083 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "calibre-web" ; then echo " calibre-web 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Calibre-Web ]; then mkdir -p /root/docker/Calibre-Web fi cd /root/docker/Calibre-Web if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2.1" services: calibre-web: image: linuxserver/calibre-web:latest container_name: calibre-web environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai - DOCKER_MODS=linuxserver/mods:universal-calibre - OAUTHLIB_RELAX_TOKEN_SCOPE=1 volumes: - ./config:/config - ./books:/books ports: - 8083:8083 restart: unless-stopped EOF docker-compose up -d ufw allow 8083/tcp chmod 777 books yellow "-----------------------------------------------" green " Web 端口:8083" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8083" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8083" echo green " 第一次安装需要进入容器内部生成 metadata.db 数据库,步骤如下:" green " cd: can't cd to app/calibre/bin 报错,需要等待容器初始化完毕!" green " 大概等待 3 分钟左右!" echo green " docker exec -it calibre-web sh" green " cd app/calibre/bin" green " calibredb restore_database --really-do-it --with-library /books" green " chmod a+w /books/metadata.db" green " exit" echo green " 登陆账号:admin " green " 登陆密码:admin123" echo green " Calibre Web 安装完毕!" yellow "-----------------------------------------------" } calibre-web_install
Memos 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function memos_install (){ if nc -z localhost 5230; then echo " 5230 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "memos" ; then echo " memos 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Memos ]; then mkdir -p /root/docker/Memos fi cd /root/docker/Memos if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: usememos: container_name: memos ports: - '5230:5230' restart: always volumes: - './memos/:/var/opt/memos' image: 'neosmemo/memos' EOF docker-compose up -d ufw allow 5230/tcp yellow "-----------------------------------------------" green " Web 端口:5230" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :5230" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):5230" echo green " Memos 安装完毕!" yellow "-----------------------------------------------" } memos_install
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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function morss_install (){ if nc -z localhost 8887; then echo " 8887 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "morss" ; then echo " morss 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/MoRSS ]; then mkdir -p /root/docker/MoRSS fi cd /root/docker/MoRSS if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3' services: morss: image: pictuga/morss container_name: morss restart: unless-stopped ports: - 8887:8000 EOF docker-compose up -d ufw allow 8887/tcp yellow "-----------------------------------------------" green " Web 端口:8887" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8887" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8887" echo green " MoRSS 安装完毕!" yellow "-----------------------------------------------" } morss_install
Reader 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function reader_install (){ if nc -z localhost 4396; then echo " 4396 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "reader" ; then echo " reader 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Reader ]; then mkdir -p /root/docker/Reader fi cd /root/docker/Reader if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.1' services: reader: image: hectorqin/reader container_name: reader restart: always ports: - 4396:8080 volumes: - ./logs:/logs - ./storage:/storage environment: - SPRING_PROFILES_ACTIVE=prod - READER_APP_USERBOOKLIMIT=500 - READER_APP_CACHECHAPTERCONTENT=true EOF docker-compose up -d ufw allow 4396/tcp yellow "-----------------------------------------------" green " Web 端口:4396" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :4396" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):4396" echo green " Reader 安装完毕!" yellow "-----------------------------------------------" } reader_install
WeChat Markdown Editor 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function wechat-markdown-editor_install (){ if nc -z localhost 13480; then echo " 13480 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "wechat" ; then echo " wechat 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/WeChat-Markdown-Editor ]; then mkdir -p /root/docker/WeChat-Markdown-Editor fi cd /root/docker/WeChat-Markdown-Editor if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: md: restart: always container_name: wechat ports: - '13480:80' image: 'doocs/md:latest' EOF docker-compose up -d ufw allow 13480/tcp yellow "-----------------------------------------------" green " Web 端口:13480" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :13480" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):13480" echo green " WeChat Markdown Editor 安装完毕!" yellow "-----------------------------------------------" } wechat-markdown-editor_install
ZFile 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function zfile_install (){ if nc -z localhost 9180; then echo " 9180 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "zfile" ; then echo " zfile 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/ZFile ]; then mkdir -p /root/docker/ZFile fi cd /root/docker/ZFile if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: zfile: container_name: zfile restart: always ports: - '9180:8080' volumes: - './db:/root/.zfile-v4/db' - './logs:/root/.zfile-v4/logs' - './file:/data/file' image: zhaojun1998/zfile EOF docker-compose up -d ufw allow 9180/tcp yellow "-----------------------------------------------" green " Web 端口:9180" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :9180" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):9180" echo green " ZFile 安装完毕!" yellow "-----------------------------------------------" } zfile_install
WordPress 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function wordpress_install (){ if nc -z localhost 7080 && nc -z localhost 7081; then echo " 7080 7081 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "wordpress" && docker ps -a --format "{{.Names}}" | grep -q "wordpress_mysql" && docker ps -a --format "{{.Names}}" | grep -q "wordpress_phpmyadmin" ; then echo " wordpress wordpress_mysql wordpress_phpmyadmin 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/WordPress ]; then mkdir -p /root/docker/WordPress fi cd /root/docker/WordPress if [ -f "uploads.ini" ]; then green " uploads.ini 文件已经存在, 跳过创建步骤." else cat <<EOF > uploads.ini file_uploads = On upload_max_filesize = 256M post_max_size = 256M EOF green " uploads.ini 创建成功,用于设置上传大小。" fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.1' services: wordpress: container_name: wordpress image: wordpress restart: always ports: - 7080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress_user WORDPRESS_DB_PASSWORD: wordpress_password WORDPRESS_DB_NAME: wordpress_db volumes: - ./html:/var/www/html - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini db: container_name: wordpress_mysql image: mysql:5.7 restart: always environment: MYSQL_DATABASE: wordpress_db MYSQL_USER: wordpress_user MYSQL_PASSWORD: wordpress_password MYSQL_RANDOM_ROOT_PASSWORD: rootpassword volumes: - ./mysql:/var/lib/mysql phpmyadmin: container_name: wordpress_phpmyadmin image: phpmyadmin restart: always ports: - 7081:80 environment: PMA_HOST: db MYSQL_ROOT_PASSWORD : rootpassword EOF docker-compose up -d ufw allow 7080/tcp ufw allow 7081/tcp yellow "-----------------------------------------------" green " Web 端口:7080 7081" echo green " WordPress" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :7080" echo green " PHPMyAdmin" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :7081" echo green " WordPress" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):7080" echo green " PHPMyAdmin" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):7081" echo green " WordPress 安装完毕!" yellow "-----------------------------------------------" } wordpress_install
qBittorrent 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function qbittorrent_install (){ if nc -z localhost 6881 && nc -z localhost 8081; then echo " 6881 8081 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "qbittorrent" ; then echo " qbittorrent 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/qBittorrent ]; then mkdir -p /root/docker/qBittorrent fi cd /root/docker/qBittorrent if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2" services: qbittorrent: image: linuxserver/qbittorrent container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai - UMASK_SET=022 - WEBUI_PORT=8081 volumes: - ./config:/config - ./downloads:/downloads ports: - 6881:6881 - 6881:6881/udp - 8081:8081 restart: unless-stopped EOF docker-compose up -d ufw allow 6881/tcp ufw allow 6881/udp ufw allow 8081/tcp yellow "-----------------------------------------------" green " Web 端口:8081" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8081" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8081" echo green " 初始账号:admin" green " 初始密码:adminadmin" echo green " qBittorrent 安装完毕!" yellow "-----------------------------------------------" } qbittorrent_install
Halo 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function halo_install (){ if nc -z localhost 8040; then echo " 8040 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "halo" ; then echo " halo 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Halo ]; then mkdir -p /root/docker/Halo fi cd /root/docker/Halo if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: halo: container_name: halo restart: always ports: - '8040:8090' volumes: - './halo:/root/.halo' image: 'halohub/halo:1.5.4' EOF docker-compose up -d ufw allow 8040/tcp yellow "-----------------------------------------------" green " Web 端口:8040" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8040" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8040" echo green " Halo 安装完毕!" yellow "-----------------------------------------------" } halo_install
Stirling PDF 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function stirling-pdf_install (){ if nc -z localhost 8077; then echo " 8077 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "spdf" ; then echo " spdf 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Stirling-PDF ]; then mkdir -p /root/docker/Stirling-PDF fi cd /root/docker/Stirling-PDF if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3' services: s-pdf: image: frooodle/s-pdf container_name: spdf restart: unless-stopped ports: - 8077:8080 EOF docker-compose up -d ufw allow 8077/tcp yellow "-----------------------------------------------" green " Web 端口:8077" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8077" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8077" echo green " Stirling PDF 安装完毕!" yellow "-----------------------------------------------" } stirling-pdf_install
Sshwifty 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function sshwifty_install (){ if nc -z localhost 8090; then echo " 8090 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "sshwifty" ; then echo " sshwifty 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Sshwifty ]; then mkdir -p /root/docker/Sshwifty fi cd /root/docker/Sshwifty if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: sshwifty: restart: always ports: - '8090:8182' container_name: sshwifty image: 'niruix/sshwifty:latest' EOF docker-compose up -d ufw allow 8090/tcp yellow "-----------------------------------------------" green " Web 端口:8090" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8090" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8090" echo green " Sshwifty 安装完毕!" yellow "-----------------------------------------------" } sshwifty_install
RustDesk 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function rustdesk_install (){ if nc -z localhost 21115 && nc -z localhost 21116 && nc -z localhost 21117 && nc -z localhost 21118 && nc -z localhost 21119; then echo " 21115 21116 21117 21118 21119 中的端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "hbbs" && docker ps -a --format "{{.Names}}" | grep -q "hbbr" ; then echo " hbbs hbbr 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/RustDesk ]; then mkdir -p /root/docker/RustDesk fi cd /root/docker/RustDesk if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3' networks: rustdesk-net: external: false services: hbbs: container_name: hbbs ports: - 21115:21115 - 21116:21116 - 21116:21116/udp - 21118:21118 image: rustdesk/rustdesk-server:latest command: hbbs -r https://rustdesk.rahn.top volumes: - ./hbbs:/root networks: - rustdesk-net depends_on: - hbbr restart: unless-stopped hbbr: container_name: hbbr ports: - 21117:21117 - 21119:21119 image: rustdesk/rustdesk-server:latest command: hbbr volumes: - ./hbbr:/root networks: - rustdesk-net restart: unless-stopped EOF docker-compose up -d ufw allow 21115/tcp ufw allow 21116/udp ufw allow 21116/tcp ufw allow 21117/tcp ufw allow 21118/tcp ufw allow 21119/tcp yellow "-----------------------------------------------" green " Web 端口:21117" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :21117" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):21117" echo green " ID 服务器 = https://rustdesk.rahn.top" echo cd /root/docker/RustDesk/hbbs green " Key = $(cat id_ed25519.pub) " echo green " RustDesk 安装完毕!" yellow "-----------------------------------------------" } rustdesk_install
Weserv 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function weserv_install (){ if nc -z localhost 9999; then echo " 9999 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "weserv" ; then echo " weserv 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Weserv ]; then mkdir -p /root/docker/Weserv fi cd /root/docker/Weserv if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: weserv: ports: - '9999:80' container_name: weserv restart: always image: 'ghcr.io/weserv/images:5.x' EOF docker-compose up -d ufw allow 9999/tcp yellow "-----------------------------------------------" green " Web 端口:9999" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :9999" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):9999" echo green " Weserv 安装完毕!" yellow "-----------------------------------------------" } weserv_install
Jellyfin 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function jellyfin_install (){ if nc -z localhost 8096; then echo " 8096 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "jellyfin" ; then echo " jellyfin 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Jellyfin ]; then mkdir -p /root/docker/Jellyfin fi cd /root/docker/Jellyfin if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: jellyfin: container_name: jellyfin ports: - '8096:8096' volumes: - './config:/config' - './cache:/cache' - './media:/media' - './movies:/movies' - './tvshows:/tvshows' - './animation:/animation' environment: - TZ=Asia/Shanghai restart: always image: rahn2029/jellyfin EOF docker-compose up -d ufw allow 8096/tcp yellow "-----------------------------------------------" green " Web 端口:8096" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8096" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8096" echo green " Jellyfin 安装完毕!" yellow "-----------------------------------------------" } jellyfin_install
Homepage 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function homepage_install (){ if nc -z localhost 3344; then echo " 3344 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "homepage" ; then echo " homepage 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Homepage ]; then mkdir -p /root/docker/Homepage fi cd /root/docker/Homepage if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "3.3" services: homepage: image: rahn2029/homepage container_name: homepage ports: - 3344:3000 volumes: - ./config:/app/config - ./images:/app/public/images - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped EOF docker-compose up -d ufw allow 3344/tcp yellow "-----------------------------------------------" green " Web 端口:3344" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :3344" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):3344" echo green " Homepage 安装完毕!" yellow "-----------------------------------------------" } homepage_install
Hexo 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function hexo_install (){ if nc -z localhost 4000; then echo " 4000 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "hexo" ; then echo " hexo 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Hexo ]; then mkdir -p /root/docker/Hexo fi cd /root/docker/Hexo if [ -d "blog" ]; then green " blog 文件夹已经存在, 跳过执行 docker cp 命令" else docker run -itd --name hexo -p 4000:4000 rahn2029/hexo-github docker cp hexo:blog $(pwd )/blog docker stop hexo && docker rm hexo fi if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: hexo-butterfly: container_name: hexo restart: always ports: - '4000:4000' volumes: - './blog:/blog' image: 'rahn2029/hexo-github' EOF docker-compose up -d ufw allow 4000/tcp yellow "-----------------------------------------------" green " Web 端口:4000" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :4000" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):4000" echo green " Hexo 安装完毕!" yellow "-----------------------------------------------" } hexo_install
Duplicati 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function duplicati_install (){ if nc -z localhost 8050; then echo " 8050 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "duplicati" ; then echo " duplicati 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Duplicati ]; then mkdir -p /root/docker/Duplicati fi cd /root/docker/Duplicati if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2.1" services: duplicati: image: lscr.io/linuxserver/duplicati container_name: duplicati environment: - PUID=0 - PGID=0 - TZ=Asia/Shanghai volumes: - ./config:/config - ./backups:/backups - /root/docker:/source ports: - 8050:8200 restart: unless-stopped EOF docker-compose up -d ufw allow 8050/tcp yellow "-----------------------------------------------" green " Web 端口:8050" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8050" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8050" echo green " Duplicati 安装完毕!" yellow "-----------------------------------------------" } duplicati_install
Syncthing 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function syncthing_install (){ if nc -z localhost 8384; then echo " 8384 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "syncthing" ; then echo " syncthing 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Syncthing ]; then mkdir -p /root/docker/Syncthing fi cd /root/docker/Syncthing if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: "2.1" services: syncthing: image: lscr.io/linuxserver/syncthing container_name: syncthing hostname: syncthing environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./config:/config ports: - 8384:8384 - 22000:22000/tcp - 22000:22000/udp - 21027:21027/udp restart: unless-stopped EOF docker-compose up -d ufw allow 8384/tcp ufw allow 22000/tcp ufw allow 22000/udp ufw allow 21027/udp yellow "-----------------------------------------------" green " Web 端口:8384" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :8384" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):8384" echo green " Syncthing 安装完毕!" yellow "-----------------------------------------------" } syncthing_install
V2RayA 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function v2raya_install (){ if docker ps -a --format "{{.Names}}" | grep -q "v2raya" ; then echo " v2raya 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/V2RayA ]; then mkdir -p /root/docker/V2RayA fi cd /root/docker/V2RayA if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: v2raya: image: mzz2017/v2raya container_name: v2raya restart: always privileged: true network_mode: host environment: - V2RAYA_LOG_FILE=/tmp/v2raya.log volumes: - /lib/modules:/lib/modules:ro - /etc/resolv.conf:/etc/resolv.conf - /etc/v2raya:/etc/v2raya EOF docker-compose up -d yellow "-----------------------------------------------" green " Web 端口:2017" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :2017" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):2017" echo green " V2RayA 安装完毕!" yellow "-----------------------------------------------" } v2raya_install
X-UI 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function x-ui_install (){ if nc -z localhost 52441 && nc -z localhost 52442 ; then echo " 52441 52442 端口已经被占用,请检查相关进程" exit 1 fi bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) ufw allow 52441/tcp ufw allow 52442/tcp yellow "-----------------------------------------------" green " Web 端口:52441" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :52441" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):52441" yellow "-----------------------------------------------" green " location:/docs" echo green " http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):52441/docs" yellow "-----------------------------------------------" green " 节点端口:52442" echo green " Advanced" yellow "-----------------------------------------------" echo "location /docs { proxy_redirect off; proxy_pass http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):52442; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection " upgrade"; proxy_set_header Host $http_host ; proxy_read_timeout 300s; # Show realip in v2ray access.log proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; }" yellow "-----------------------------------------------" green " X-UI 安装完毕!" yellow "-----------------------------------------------" } x-ui_install
SwapFile 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } add_swap (){if [[ $EUID -ne 0 ]]; then red "Error:This script must be run as root!" exit 1 fi if [[ -d "/proc/vz" ]]; then red "Your VPS is based on OpenVZ,not supported!" exit 1 fi yellow "-----------------------------------------------" green "请输入需要添加的 swap 大小,建议为内存的 2 倍!" yellow "-----------------------------------------------" read -p "请输入 swap 的数值: " swapsizegrep -q "swapfile" /etc/fstab if [ $? -ne 0 ]; then yellow "-----------------------------------------------" green "并未发现 swapfile 文件,正在为您创建 swapfile 文件" yellow "-----------------------------------------------" fallocate -l ${swapsize} M /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap defaults 0 0' >> /etc/fstab yellow "-----------------------------------------------" green "swapfile 文件创建成功,swap 信息如下:" yellow "-----------------------------------------------" cat /proc/swaps yellow "-----------------------------------------------" cat /proc/meminfo | grep Swap yellow "-----------------------------------------------" else yellow "-----------------------------------------------" red "swapfile 文件已经存在!" yellow "-----------------------------------------------" fi } del_swap (){if [[ $EUID -ne 0 ]]; then red "Error:This script must be run as root!" exit 1 fi if [[ -d "/proc/vz" ]]; then red "Your VPS is based on OpenVZ,not supported!" exit 1 fi grep -q "swapfile" /etc/fstab if [ $? -eq 0 ]; then yellow "-----------------------------------------------" green "发现 swapfile 文件,正在将其删除..." yellow "-----------------------------------------------" sed -i '/swapfile/d' /etc/fstab echo "3" > /proc/sys/vm/drop_caches swapoff -a rm -f /swapfile yellow "-----------------------------------------------" green "swapfile 文件删除完毕!" yellow "-----------------------------------------------" else yellow "-----------------------------------------------" red "并未发现 swapfile 文件,删除失败!" yellow "-----------------------------------------------" fi } function start_menu (){ clear yellow "-----------------------------------------------" red " SwapFile —— 交换空间" yellow "-----------------------------------------------" green " 1. 添加 swapfile" green " 2. 删除 swapfile" yellow "-----------------------------------------------" red " 0. 退出脚本" echo read -p "请输入数字:" menuNumberInput case "$menuNumberInput " in 1 ) add_swap ;; 2 ) del_swap ;; 0 ) exit ;; * ) clear red "请输入正确数字!" start_menu ;; esac } start_menu
Clear 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function imageprune (){ docker image prune --force --all yellow "--------------------------------------------------" green " docker image prune --force --all" echo green " 删除所有不使用的镜像 完毕!" yellow "--------------------------------------------------" } function containerprune (){ docker container prune -f yellow "--------------------------------------------------" green " docker container prune -f" echo green " 删除所有停止的容器 完毕!" yellow "--------------------------------------------------" } function tachidesk_clear (){ cd /root/docker/Tachidesk/data/thumbnails rm -rf * yellow "--------------------------------------------------" green " Tachidesk thumbnails 清空完毕!" yellow "--------------------------------------------------" } function diskcondition (){ yellow "--------------------------------------------------" green "磁盘使用信息如下:" yellow "--------------------------------------------------" df -h /dev/vda1 yellow "--------------------------------------------------" } function freememory (){ yellow "--------------------------------------------------" green "内存使用信息如下:" yellow "--------------------------------------------------" free -m yellow "--------------------------------------------------" } function start_menu (){ clear yellow "-----------------------------------------------" red " SwapFile —— 交换空间" yellow "-----------------------------------------------" green " 1. 查看磁盘信息" green " 2. 查看内存信息" green " 3. 删除所有停止的容器" green " 4. 删除所有不使用的镜像" green " 5. Tachidesk thumbnails 文件夹清空" yellow "-----------------------------------------------" red " 0. 退出脚本" echo read -p "请输入数字:" menuNumberInput case "$menuNumberInput " in 1 ) diskcondition ;; 2 ) freememory ;; 3 ) containerprune ;; 4 ) imageprune ;; 5 ) tachidesk_clear ;; 0 ) exit ;; * ) clear red "请输入正确数字!" start_menu ;; esac } start_menu
Coder 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 #! /bin/bash red (){ echo -e "\033[31m\033[01m$1 \033[0m" } green (){ echo -e "\033[32m\033[01m$1 \033[0m" } yellow (){ echo -e "\033[33m\033[01m$1 \033[0m" } function coder_install (){ if nc -z localhost 10000; then echo " 10000 端口已经被占用,请检查相关进程" exit 1 fi if docker ps -a --format "{{.Names}}" | grep -q "coder" ; then echo " coder 容器名已经被占用" exit 1 fi if [ ! -d /root/docker/Coder ]; then mkdir -p /root/docker/Coder fi cd /root/docker/Coder if [ -f "docker-compose.yml" ]; then rm docker-compose.yml fi cat <<EOF > docker-compose.yml version: '3.3' services: code-server: user: root ports: - '10000:8080' container_name: coder volumes: - '/root/docker:/home/code' #- './config.yaml:/root/.config/code-server/config.yaml' image: rahn2029/vscode:1.0 EOF docker-compose up -d ufw allow 10000/tcp yellow "-----------------------------------------------" green " Web 端口:10000" echo green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1) :10000" echo green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2 }'):10000" echo green " 将 config.yaml 文件拷贝到当前文件夹下" green " docker cp code-server:/root/.config/code-server/config.yaml /root/docker/Coder/config.yaml" echo green " 查看 Web 登陆密码" green " docker exec code-server cat /root/.config/code-server/config.yaml" echo green " Coder 安装完毕!" yellow "-----------------------------------------------" } coder_install