From 9788c328c3bb2336d5f40a93e441dfbb13a53796 Mon Sep 17 00:00:00 2001 From: Stille Date: Thu, 6 Jan 2022 13:53:07 +0800 Subject: [PATCH] Update for support freshrss --- .env | 5 + compose_files/arm/freshrss-http.yml | 63 +++ compose_files/arm/freshrss-https.yml | 74 ++++ compose_files/arm/freshrss-rsshub-http.yml | 107 +++++ compose_files/arm/freshrss-rsshub-https.yml | 119 ++++++ compose_files/arm/ttrss-http.yml | 62 +++ compose_files/arm/ttrss-https.yml | 73 ++++ compose_files/arm/ttrss-rsshub-http.yml | 106 +++++ compose_files/arm/ttrss-rsshub-https.yml | 118 ++++++ compose_files/x86/freshrss-http.yml | 63 +++ compose_files/x86/freshrss-https.yml | 74 ++++ compose_files/x86/freshrss-rsshub-http.yml | 116 ++++++ compose_files/x86/freshrss-rsshub-https.yml | 128 ++++++ compose_files/x86/ttrss-http.yml | 78 ++++ compose_files/x86/ttrss-https.yml | 90 ++++ compose_files/x86/ttrss-rsshub-http.yml | 130 ++++++ .../x86/ttrss-rsshub-https.yml | 2 +- install.sh | 391 ++++++++++-------- 18 files changed, 1636 insertions(+), 163 deletions(-) create mode 100644 compose_files/arm/freshrss-http.yml create mode 100644 compose_files/arm/freshrss-https.yml create mode 100644 compose_files/arm/freshrss-rsshub-http.yml create mode 100644 compose_files/arm/freshrss-rsshub-https.yml create mode 100644 compose_files/arm/ttrss-http.yml create mode 100644 compose_files/arm/ttrss-https.yml create mode 100644 compose_files/arm/ttrss-rsshub-http.yml create mode 100644 compose_files/arm/ttrss-rsshub-https.yml create mode 100644 compose_files/x86/freshrss-http.yml create mode 100644 compose_files/x86/freshrss-https.yml create mode 100644 compose_files/x86/freshrss-rsshub-http.yml create mode 100644 compose_files/x86/freshrss-rsshub-https.yml create mode 100644 compose_files/x86/ttrss-http.yml create mode 100644 compose_files/x86/ttrss-https.yml create mode 100644 compose_files/x86/ttrss-rsshub-http.yml rename docker-compose.yml => compose_files/x86/ttrss-rsshub-https.yml (96%) diff --git a/.env b/.env index a41c9ea..98a5de0 100644 --- a/.env +++ b/.env @@ -29,3 +29,8 @@ RSSHUB_DOMAIN_KEY=yourdomain.com.key NGINX_VERSION=stable TTRSS_IMAGE=wangqiru/ttrss TTRSS_VERSION=latest-2021-05-19 + +# ------------------------------------- FreshRSS ------------------------------------- # +POSTGRES_DB=freshrss +POSTGRES_USER=freshrss +EXPOSED_PORT=30001 \ No newline at end of file diff --git a/compose_files/arm/freshrss-http.yml b/compose_files/arm/freshrss-http.yml new file mode 100644 index 0000000..40b9d17 --- /dev/null +++ b/compose_files/arm/freshrss-http.yml @@ -0,0 +1,63 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest-arm + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + diff --git a/compose_files/arm/freshrss-https.yml b/compose_files/arm/freshrss-https.yml new file mode 100644 index 0000000..1c1228b --- /dev/null +++ b/compose_files/arm/freshrss-https.yml @@ -0,0 +1,74 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest-arm + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/arm/freshrss-rsshub-http.yml b/compose_files/arm/freshrss-rsshub-http.yml new file mode 100644 index 0000000..0db9c89 --- /dev/null +++ b/compose_files/arm/freshrss-rsshub-http.yml @@ -0,0 +1,107 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest-arm + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + depends_on: + - redis + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever + diff --git a/compose_files/arm/freshrss-rsshub-https.yml b/compose_files/arm/freshrss-rsshub-https.yml new file mode 100644 index 0000000..7b8baf4 --- /dev/null +++ b/compose_files/arm/freshrss-rsshub-https.yml @@ -0,0 +1,119 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest-arm + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + depends_on: + - redis + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever + + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/arm/ttrss-http.yml b/compose_files/arm/ttrss-http.yml new file mode 100644 index 0000000..b16f49e --- /dev/null +++ b/compose_files/arm/ttrss-http.yml @@ -0,0 +1,62 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + diff --git a/compose_files/arm/ttrss-https.yml b/compose_files/arm/ttrss-https.yml new file mode 100644 index 0000000..517357d --- /dev/null +++ b/compose_files/arm/ttrss-https.yml @@ -0,0 +1,73 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/arm/ttrss-rsshub-http.yml b/compose_files/arm/ttrss-rsshub-http.yml new file mode 100644 index 0000000..2a38a1a --- /dev/null +++ b/compose_files/arm/ttrss-rsshub-http.yml @@ -0,0 +1,106 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + depends_on: + - redis + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever + diff --git a/compose_files/arm/ttrss-rsshub-https.yml b/compose_files/arm/ttrss-rsshub-https.yml new file mode 100644 index 0000000..5150a9f --- /dev/null +++ b/compose_files/arm/ttrss-rsshub-https.yml @@ -0,0 +1,118 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + depends_on: + - redis + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever + + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/x86/freshrss-http.yml b/compose_files/x86/freshrss-http.yml new file mode 100644 index 0000000..a4d7c29 --- /dev/null +++ b/compose_files/x86/freshrss-http.yml @@ -0,0 +1,63 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + diff --git a/compose_files/x86/freshrss-https.yml b/compose_files/x86/freshrss-https.yml new file mode 100644 index 0000000..0596d06 --- /dev/null +++ b/compose_files/x86/freshrss-https.yml @@ -0,0 +1,74 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/x86/freshrss-rsshub-http.yml b/compose_files/x86/freshrss-rsshub-http.yml new file mode 100644 index 0000000..134099d --- /dev/null +++ b/compose_files/x86/freshrss-rsshub-http.yml @@ -0,0 +1,116 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' + depends_on: + - redis + - browserless + networks: + - rssforever + + + browserless: + image: browserless/chrome + restart: always + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever + diff --git a/compose_files/x86/freshrss-rsshub-https.yml b/compose_files/x86/freshrss-rsshub-https.yml new file mode 100644 index 0000000..cf8160b --- /dev/null +++ b/compose_files/x86/freshrss-rsshub-https.yml @@ -0,0 +1,128 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + freshrss-db: + image: postgres:12-alpine + # container_name: freshrss-db + hostname: freshrss-db + restart: unless-stopped + volumes: + - ./db:/var/lib/postgresql/data + environment: + POSTGRES_USER: ${POSTGRES_USER:-freshrss} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-freshrss} + POSTGRES_DB: ${POSTGRES_DB:-freshrss} + + service.rss: + image: freshrss/freshrss:latest + # container_name: freshrss-app + hostname: freshrss-app + restart: unless-stopped + depends_on: + - freshrss-db + volumes: + - ./data:/var/www/FreshRSS/data + - ./extensions:/var/www/FreshRSS/extensions + environment: + CRON_MIN: '*/20' + TZ: Asia/Shanghai + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' + depends_on: + - redis + - browserless + networks: + - rssforever + + + browserless: + image: browserless/chrome + restart: always + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever + + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/x86/ttrss-http.yml b/compose_files/x86/ttrss-http.yml new file mode 100644 index 0000000..cab5560 --- /dev/null +++ b/compose_files/x86/ttrss-http.yml @@ -0,0 +1,78 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + service.mercury: + image: wangqiru/mercury-parser-api:latest + networks: + - rssforever + restart: always + + + service.opencc: + image: wangqiru/opencc-api-server:latest + environment: + - NODE_ENV=production + networks: + - rssforever + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + diff --git a/compose_files/x86/ttrss-https.yml b/compose_files/x86/ttrss-https.yml new file mode 100644 index 0000000..3a14ccb --- /dev/null +++ b/compose_files/x86/ttrss-https.yml @@ -0,0 +1,90 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + service.mercury: + image: wangqiru/mercury-parser-api:latest + networks: + - rssforever + restart: always + + + service.opencc: + image: wangqiru/opencc-api-server:latest + environment: + - NODE_ENV=production + networks: + - rssforever + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + + +# ---------------------------------------- acme.sh ---------------------------------------- # + acme: + image: neilpang/acme.sh + # container_name: acme + volumes: + - ./acme:/conf + - ./nginx/ssl:/ssl + restart: always + network_mode: host + command: ["sh", "-c", "/conf/start.sh"] + diff --git a/compose_files/x86/ttrss-rsshub-http.yml b/compose_files/x86/ttrss-rsshub-http.yml new file mode 100644 index 0000000..95df17e --- /dev/null +++ b/compose_files/x86/ttrss-rsshub-http.yml @@ -0,0 +1,130 @@ +version: "3" + + +networks: + rssforever: + + +# ---------------------------------------- nginx ---------------------------------------- # +services: + nginx: + image: nginx:${NGINX_VERSION} + restart: always + ports: + - 80:80 + - 443:443 + volumes: + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/conf/nginx.sh:/nginx.sh + - ./nginx/vhost:/etc/nginx/conf.d/vhost + - ./nginx/ssl:/etc/nginx/ssl + - ./nginx/html:/usr/share/nginx/html + environment: + - PROTOCOL=${PROTOCOL} + - RSS_DOMAIN=${RSS_DOMAIN} + - RSS_DOAMIN_CERT=${RSS_DOAMIN_CERT} + - RSS_DOMAIN_KEY=${RSS_DOMAIN_KEY} + - RSSHUB_DOMAIN=${RSSHUB_DOMAIN} + - RSSHUB_DOAMIN_CERT=${RSSHUB_DOAMIN_CERT} + - RSSHUB_DOMAIN_KEY=${RSSHUB_DOMAIN_KEY} + networks: + - rssforever + depends_on: + - service.rss + - rsshub + command: ["sh", "-c", "/nginx.sh"] + + +# ---------------------------------------- ttrss ---------------------------------------- # + service.rss: + image: ${TTRSS_IMAGE}:${TTRSS_VERSION} + environment: + - SELF_URL_PATH=${PROTOCOL}://${RSS_DOMAIN} + - DB_PASS=${POSTGRES_PASSWORD} + - PUID=1000 + - PGID=1000 + - ENABLE_PLUGINS=auth_internal,remove_iframe_sandbox + networks: + - rssforever + stdin_open: true + tty: true + restart: always + + + service.mercury: + image: wangqiru/mercury-parser-api:latest + networks: + - rssforever + restart: always + + + service.opencc: + image: wangqiru/opencc-api-server:latest + environment: + - NODE_ENV=production + networks: + - rssforever + restart: always + + + database.postgres: + image: postgres:13-alpine + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + volumes: + - ./rss/postgres/data/:/var/lib/postgresql/data + networks: + - rssforever + restart: always + + +# ---------------------------------------- rsshub ---------------------------------------- # + rsshub: + image: diygod/rsshub + restart: always + ports: + - 1200:1200 + environment: + NODE_ENV: production + CACHE_TYPE: redis + REDIS_URL: 'redis://redis:6379/' + PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' + depends_on: + - redis + - browserless + networks: + - rssforever + + + browserless: + image: browserless/chrome + restart: always + networks: + - rssforever + + + redis: + image: redis:alpine + restart: always + environment: + - TZ=Asia/Shanghai + volumes: + - ./rsshub/redis-data:/data + networks: + - rssforever + + +# ---------------------------------------- watchtower ---------------------------------------- # +# 每天早上 10 点定时更新 RSSHub , 如无需可注释或删除本段. + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_SCHEDULE=0 0 10 * * * + restart: always + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 + networks: + - rssforever diff --git a/docker-compose.yml b/compose_files/x86/ttrss-rsshub-https.yml similarity index 96% rename from docker-compose.yml rename to compose_files/x86/ttrss-rsshub-https.yml index 12688f6..cb2dce4 100644 --- a/docker-compose.yml +++ b/compose_files/x86/ttrss-rsshub-https.yml @@ -125,7 +125,7 @@ services: - WATCHTOWER_CLEANUP=true - WATCHTOWER_SCHEDULE=0 0 10 * * * restart: always - command: rssforever_watchtower_1 rssforever_rsshub_1 rssforever_redis_1 rssforever_browserless_1 rssforever_acme_1 + command: rssforever-watchtower-1 rssforever_rsshub-1 rssforever_redis-1 rssforever_browserless-1 rssforever_acme-1 networks: - rssforever diff --git a/install.sh b/install.sh index fb32177..d357fff 100644 --- a/install.sh +++ b/install.sh @@ -13,26 +13,22 @@ Font="\033[0m" WORK_PATH=$(dirname $(readlink -f $0)) UNAME=$(uname -m) - -menu (){ +welcome (){ clear echo -e "${Green}=========================================================================================${Font}" - echo -e "${Green}欢迎使用 nginx + ttrss + rsshub + watchtower 一键安装脚本${Font}" + echo -e "${Green}欢迎使用 TTRSS / FreshRSS / RSSHub 一键安装脚本${Font}" echo -e "${Red}注意:本脚本需要服务器有 docker 和 docker compose 环境${Font}" - echo -e "${Green}2021-07-01 更新同时支持 X86 和 ARM 架构${Font}" + echo -e "${Green}更新支持 FreshRSS 服务${Font}" + echo -e "${Green}更新同时支持 X86 和 ARM 架构${Font}" echo -e "${Green}=========================================================================================${Font}" - echo "1) nginx + ttrss + rsshub + watchtower" - echo "2) nginx + ttrss" - echo "3) 退出脚本" + echo "1) 开始执行环境检查,确保本服务器满足安装条件." + echo "2) 退出脚本" read -p "请输入:" CHOICE_INPUT case "$CHOICE_INPUT" in 1) - choice1 + check_env ;; 2) - choice2 - ;; - 3) echo -e "${Red}已退出脚本.${Font}" exit 0 ;; @@ -42,108 +38,141 @@ menu (){ esac } - -choice1 (){ - echo -e "${Green}当前选择 nginx + ttrss + rsshub + watchtower${Font}" - echo "1) 全自动申请和续签泛域名证书" - echo "2) 无需 SSL 证书" - echo "3) 退出脚本" +check_env (){ echo -e "${Green}=========================================================================================${Font}" - read -p "请输入:" CHOICE1_INPUT - case "$CHOICE1_INPUT" in - 1) - confirm_domain - conf_ssl $* - git_clone - conf_env - arm_x86_all - conf_auto_acme - up - ;; - 2) - confirm_domain - git_clone - conf_env - remove_acme - arm_x86_all - up - ;; - 3) - echo -e "${Red}已退出脚本.${Font}" + echo -e "${Green}开始检查服务器环境${Font}" + # if ! type docker >/dev/null 2>&1 ; then + # echo -e "${Red}当前系统 docker 未安装,已退出脚本.${Font}" + # exit 0 + # fi + # if ! type docker-compose >/dev/null 2>&1 ; then + # echo -e "${Red}当前系统 docker-compose 未安装,已退出脚本.${Font}" + # exit 0 + # fi + # if ! type git >/dev/null 2>&1 ; then + # echo -e "${Red}当前系统 git 未安装,已退出脚本.${Font}" + # exit 0 + # fi + if [ -d "${WORK_PATH}/rssforever" ] ; then + echo -e "${Red}当前目录存在 rssforever 项目.请更换目录,或删除后再次执行脚本.${Font}" exit 0 - ;; - *) - echo -e "${Red}输入有误,请重新运行脚本.${Font}" - exit 0 - esac -} - -choice2 (){ - echo -e "${Green}当前选择 nginx + ttrss${Font}" - echo "1) 全自动申请和续签泛域名证书" - echo "2) 无需 SSL 证书" - echo "3) 退出脚本" - echo -e "${Green}=========================================================================================${Font}" - read -p "请输入:" CHOICE2_INPUT - case "$CHOICE2_INPUT" in - 1) - confirm_domain - conf_ssl $* - git_clone - conf_env - remove_rsshub - arm_x86_ttrss_only - conf_auto_acme - up - ;; - 2) - confirm_domain - git_clone - conf_env - remove_acme - remove_rsshub - arm_x86_ttrss_only - up - ;; - 3) - echo -e "${Red}已退出脚本.${Font}" - exit 0 - ;; - *) - echo -e "${Red}输入有误,请重新运行脚本.${Font}" - exit 0 - esac -} - - -confirm_domain (){ - clear - if [ "${CHOICE1_INPUT}" == "1" ] || [ "${CHOICE2_INPUT}" == "1" ]; then - echo -e "${Green}请输入需要申请泛域名证书的根域名(例如:ioiox.com):${Font}" - read -p "请输入:" DOMAIN_INPUT - if [ ! -n "${DOMAIN_INPUT}" ]; then - echo -e "${Red}输入错误,请重新运行脚本.${Font}" - exit 0 - fi fi - DOMAIN=$DOMAIN_INPUT - echo -e "${Green}请输入 ttrss 使用的域名(例如:rss.ioiox.com):${Font}" + + echo -e "${Green}服务器完成检查,开始执行脚本.${Font}" + echo -e "${Green}=========================================================================================${Font}" + get_info +} + +get_info () { + # 选择 RSS 服务 + echo -e "${Green}选择 RSS 服务${Font}" + echo "1) TTRSS" + echo "2) FreshRSS" + echo "3) 退出脚本" + read -p "请输入:" CHOICE_RSS_INPUT + case "$CHOICE_RSS_INPUT" in + 1) + RSS="TTRSS" + ;; + 2) + RSS="FreshRSS" + ;; + 3) + echo -e "${Red}已退出脚本.${Font}" + exit 0 + ;; + *) + echo -e "${Red}输入有误,请重新运行脚本.${Font}" + exit 0 + esac + + # 选择 RSSHub 服务 + echo -e "${Green}选择 RSSHub 服务${Font}" + echo "1) 添加 RSSHub 服务" + echo "2) 无需添加 RSSHub 服务" + echo "3) 退出脚本" + read -p "请输入:" CHOICE_RSSHUB_INPUT + case "$CHOICE_RSSHUB_INPUT" in + 1) + RSSHUB="yes" + RSSHUB_SHOW_INFO="已添加" + ;; + 2) + RSSHUB="no" + RSSHUB_SHOW_INFO="未添加" + ;; + 3) + echo -e "${Red}已退出脚本.${Font}" + exit 0 + ;; + *) + echo -e "${Red}输入有误,请重新运行脚本.${Font}" + exit 0 + esac + + # 选择 HTTP 协议 + echo -e "${Green}选择是否开启 HTTPS 支持${Font}" + echo "1) HTTPS 协议" + echo "2) HTTP 协议" + echo "3) 退出脚本" + read -p "请输入:" CHOICE_PROTOCOL_INPUT + case "$CHOICE_PROTOCOL_INPUT" in + 1) + PROTOCOL="https" + ;; + 2) + PROTOCOL="http" + ;; + 3) + echo -e "${Red}已退出脚本.${Font}" + exit 0 + ;; + *) + echo -e "${Red}输入有误,请重新运行脚本.${Font}" + exit 0 + esac + + if [ "${RSSHUB}" == "yes" ] && [ "${PROTOCOL}" == "https" ]; then + echo -e "${Green}注意:本脚本自带申请域名证书功能. RSS 和 RSSHub 必须为同一域名的子域名.${Font}" + fi + + # 输入 RSS 域名信息 + echo -e "${Green}请输入 RSS 使用的域名(例如:rss.ioiox.com):${Font}" read -p "请输入:" RSS_DOMAIN_INPUT if [ ! -n "${RSS_DOMAIN_INPUT}" ]; then echo -e "${Red}输入错误,请重新运行脚本.${Font}" exit 0 fi - if [ "${CHOICE_INPUT}" == "1" ] ; then - echo -e "${Green}请输入 rsshub 使用的域名(例如:rsshub.ioiox.com):${Font}" + RSS_DOMAIN=$RSS_DOMAIN_INPUT + + # 输入 RSSHub 域名信息 + if [ "${RSSHUB}" == "yes" ] ; then + echo -e "${Green}请输入 RSSHub 使用的域名(例如:rsshub.ioiox.com):${Font}" read -p "请输入:" RSSHUB_DOMAIN_INPUT if [ ! -n "${RSSHUB_DOMAIN_INPUT}" ]; then echo -e "${Red}输入错误,请重新运行脚本.${Font}" exit 0 fi + RSSHUB_DOMAIN=$RSSHUB_DOMAIN_INPUT + fi + + if [ "${PROTOCOL}" == "https" ] ; then + get_acme_info + else + show_info fi } -conf_ssl (){ +get_acme_info () { + echo -e "${Green}输入主域名用于部署和申请证书${Font}" + echo -e "${Green}请输入需要申请泛域名证书的根域名(例如:ioiox.com):${Font}" + read -p "请输入:" DOMAIN_INPUT + if [ ! -n "${DOMAIN_INPUT}" ]; then + echo -e "${Red}输入错误,请重新运行脚本.${Font}" + exit 0 + fi + DOMAIN=$DOMAIN_INPUT + # 输入域名服务商信息 echo -e "${Green}请选择域名服务商:${Font}" echo -e "1) 腾讯云 dnspod.cn" echo -e "2) 阿里云 aliyun" @@ -151,13 +180,13 @@ conf_ssl (){ read -p "请选择:" DNSAPI_INPUT case "$DNSAPI_INPUT" in 1) - PLATFORM_NAME='dnspod.cn' + PLATFORM_NAME='腾讯云' DNSAPI='dns_dp' API_ID_HEADER='DP_Id' API_KEY_HEADER='DP_Key' ;; 2) - PLATFORM_NAME='aliyun' + PLATFORM_NAME='阿里云' DNSAPI='dns_ali' API_ID_HEADER='Ali_Key' API_KEY_HEADER='Ali_Secret' @@ -173,6 +202,7 @@ conf_ssl (){ echo -e "${Green}=========================================================================================${Font}" echo -e "${Red}注意: Cloudflare API 有三种:${Font}" echo -e "${Red}请参考 https://github.com/acmesh-official/acme.sh/wiki/dnsapi#1-cloudflare-option 选择.${Font}" + echo -e "${Red}推荐使用第二种: 可参考 https://ssl.ioiox.com/dnsapi.html 获取:${Font}" echo "1) Using the global API key" echo "2) Using the new cloudflare api token" echo "3) Using the new cloudflare api token for Single Zone" @@ -210,15 +240,29 @@ conf_ssl (){ read -p "请输入 $API_ZONE_HEADER :" API_ZONE_HEADER_INPUT fi + show_info +} + + +show_info (){ echo -e "${Green}=========================================================================================${Font}" echo -e "${Red}请确认以下信息正确无误!${Font}" - echo -e "${Green}域名: ${Font}${Red}${DOMAIN}${Font}" - echo -e "${Green}域名服务商: ${Font}${Red}${PLATFORM_NAME}${Font}" - echo -e "${Green}${API_ID_HEADER}:${Font} ${Red}${API_ID_INPUT}${Font}" - echo -e "${Green}${API_KEY_HEADER}:${Font} ${Red}${API_KEY_INPUT}${Font}" - if [ "$CHOICE_CLOUDFLARE_INPUT" == "3" ]; then - echo -e "${Green}${API_ZONE_HEADER}:${Font} ${Red}${API_ZONE_HEADER_INPUT}${Font}" + echo -e "${Green}当前服务器架构为${Font} ${Red}$UNAME${Font}" + echo -e "${Green}RSS 服务为${Font} ${Red}${RSS}${Font}" + echo -e "${Green}RSSHub 服务${Font} ${Red}${RSSHUB_SHOW_INFO}${Font}" + echo -e "${Green}RSS 域名为${Font} ${Red} ${RSS_DOMAIN}${Font}" + if [ "${RSSHUB}" == "yes" ] ; then + echo -e "${Green}RSSHub 域名为${Font} ${Red}${RSSHUB_DOMAIN}${Font}" + fi + if [ "${PROTOCOL}" == "https" ] ; then + echo -e "${Green}申请泛域名证书${Font} ${Red}$DOMAIN${Font}" + echo -e "${Green}域名服务商: ${Font}${Red}${PLATFORM_NAME}${Font}" + echo -e "${Green}${API_ID_HEADER}:${Font} ${Red}${API_ID_INPUT}${Font}" + echo -e "${Green}${API_KEY_HEADER}:${Font} ${Red}${API_KEY_INPUT}${Font}" + if [ "$CHOICE_CLOUDFLARE_INPUT" == "3" ]; then + echo -e "${Green}${API_ZONE_HEADER}:${Font} ${Red}${API_ZONE_HEADER_INPUT}${Font}" + fi fi echo -e "${Red}请再次确认以上信息正确无误!${Font}" echo -e "${Green}=========================================================================================${Font}" @@ -228,7 +272,7 @@ conf_ssl (){ case "$START_INPUT" in 1) echo -e "${Green}开始部署中......${Font}" - acme $* + start ;; 2) exit 0 @@ -239,7 +283,16 @@ conf_ssl (){ esac } -acme (){ +start () { + if [ "${PROTOCOL}" == "https" ]; then + acme + else + git_clone + fi +} + + +acme () { TEMP=${RANDOM} mkdir -p ${WORK_PATH}/${TEMP} cat >${WORK_PATH}/${TEMP}/account.conf</dev/null 2>&1 ; then - echo -e "${Red}本机未安装 docker compose 已退出脚本.${Font}"; - exit 0 -fi - -if ! type git >/dev/null 2>&1 ; then - echo -e "${Red}本机未安装 git 已退出脚本.${Font}" - exit -fi - -if [ -d "${WORK_PATH}/rssforever" ] ; then - echo -e "${Green}当前目录存在 rssforever 项目.请更换目录,或删除后再次执行脚本.${Font}" - exit 0 -fi - -menu $* -rm $0 +welcome