Skip to content

NAS Docker Compose分享

好久没写Blog了,忙着研究装修。最近极空间更新了Docker Compose,抽时间把原先跑的镜像都切换成了Docker Compose的形式运行,以后也方便更新和迁移。

YAML分享

openlist

  • 分享文件及webdav
yaml
services:
  openlist:
    image: openlistteam/openlist:latest
    container_name: openlist
    ports:
      - "11444:5244"
    user: '0:0'
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/OpenList/data:/opt/openlist/data
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/aria2-pro/temp/aria2:/opt/openlist/data/temp/aria2
    environment:
      - UMASK=022
      - TZ=Asia/Shanghai
    restart: unless-stopped
    networks:
      - defaultnet
    mem_limit: 1g
    cpus: 2
    depends_on:
      - aria2-pro
  
  # 单独部署aria2,因为据说后续没有aio后缀的镜像了。
  aria2-pro:
    image: p3terx/aria2-pro
    container_name: aria2-pro
    ports:
      - "11445:11445"
      # 不用BT所以注释
      # - '6888:6888'
      # - '6888:6888/udp'
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/aria2-pro/config:/config
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/aria2-pro/downloads:/downloads
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/aria2-pro/temp/aria2:/opt/openlist/data/temp/aria2
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
      - UMASK_SET=022
      # 设置密码
      - RPC_SECRET=123456
      - RPC_PORT=11445
      - LISTEN_PORT=6888
      - IPV6_MODE=true
      # 由于配置文件是从github拉取的,所以可以通过环境变量设置代理
      # - HTTP_PROXY=http://192.168.1.2:7890
      # - HTTPS_PROXY=http://192.168.1.2:7890
    restart: unless-stopped
    networks:
      - defaultnet
    mem_limit: 1g
    cpus: 2

  ariang:
    image: p3terx/ariang
    container_name: ariang
    network_mode: host
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
    command: ["--port", "11446", "--ipv6"]
    restart: unless-stopped
    mem_limit: 1g
    cpus: 2
    depends_on:
      - aria2-pro

networks:
  defaultnet:
    external: true

freshrss

  • 聚合RSS链接统一管理
yaml
services:
  freshrss:
    image: linuxserver/freshrss:latest
    container_name: freshrss
    ports:
      - "15222:80"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/FreshRSS/config:/config
    environment:
      - TZ=Asia/Shanghai
      - PUID=1000
      - PGID=1000
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

gitea

  • 代码仓库
yaml
services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    ports:
      - "11776:22"
      - "11777:3000"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/gitea/data:/data
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

home-assistant

  • 智能家居
yaml
services:
  home-assistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: home-assistant
    network_mode: host
    privileged: true
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/HomeAssistant/config:/config
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/HomeAssistant/ssh:/root/.ssh
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped

icloudpd

  • icloud照片备份
yaml
services:
  icloudpd:
    image: boredazfcuk/icloudpd:latest
    container_name: icloudpd
    network_mode: host
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/icloudpd/config:/config
      - /tmp/zfsv3/硬盘名/账号手机号/data/Goalonez/Photos/iCloud:/iCloud
    environment:
      - apple_id= #你的appid
      - download_path=/iCloud
      - icloud_china=true
      - auth_china=true
      - auto_delete=true
      - skip_check=true #跳过检测,处理全部文件,否则只有在有新的照片的时候才能触发删除
      - notification_type=Telegram #默认不需要,通知
      - telegram_token= #你的机器人token
      - telegram_chat_id= #你的tgid
      - telegram_polling=true
      - telegram_server= #反代tg api地址。当然你也可以直接HTTP_PROXY去走代理
      - telegram_http=false
      - TZ=Asia/Shanghai
    restart: unless-stopped

lucky

  • 反代
yaml
services:
  lucky:
    image: gdy666/lucky:latest
    container_name: lucky
    network_mode: host
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/lucky/luckyconf:/goodluck
    restart: unless-stopped

mihomo

yaml
services:
  mihomo:
    image: metacubex/mihomo:latest
    container_name: mihomo
    ports:
      - "7890:7890"
      - "11666:9090"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/mihomo/metacubexd:/metacubexd #默认不用,图形化界面需要单独去git拉代码映射
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/mihomo/config:/root/.config/mihomo
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

moviepilot

  • 媒体库管理
yaml
services:
  moviepilot:
    image: jxxghp/moviepilot-v2:latest
    container_name: moviepilot
    ports:
      - "11111:3000"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/tr/config/torrents:/tr
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/qb/qBittorrent/BT_backup:/qb
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/MoviePilot-v2/config:/config
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/MoviePilot-v2/core:/moviepilot/.cache/ms-playwright
      - # 剩下的自己加本地存储的映射
    environment:
      - PGID=0
      - PUID=0
      - UMASK=000
      - TZ=Asia/Shanghai
      - AUTH_SITE= #你的认证方式,现在似乎也可以不填,跑起来直接去网页里填
      - # 对应的认证密钥
      - PROXY_HOST=http://mihomo:7890
      - MOVIEPILOT_AUTO_UPDATE=release
      - PORT=3001
      - NGINX_PORT=3000
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

jellyfin

  • 媒体库
yaml
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    ports:
      - "8096:8096"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/jellyfin/path/to/config:/config
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/jellyfin/path/to/cache:/cache
      # :ro只读模式
      - /tmp/zfsv3/sata12/public/公共下载:/downloads:ro
      - /tmp/zfsv3/sata13/public/公共下载1:/downloads1:ro
    environment:
      # 外部访问地址
      - JELLYFIN_PublishedServerUrl=https://example.com
      # 为了刮削,添加代理
      - HTTP_PROXY=http://192.168.1.2:7890
      - HTTPS_PROXY=http://192.168.1.2:7890
    # 调用核心显卡  
    devices:
      - /dev/dri:/dev/dri
    restart: unless-stopped
    networks:
      - defaultnet
    mem_limit: 2g
    cpus: 2

networks:
  defaultnet:
    external: true

qbittorrent

  • 下载
yaml
services:
  qbittorrent:
    image: linuxserver/qbittorrent:4.6.7
    container_name: qbittorrent
    network_mode: host
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/qb:/config
      - # 剩下的自己加本地存储的映射
    environment:
      - WEBUI_PORT=11333
      - PGID=0
      - PUID=0
    restart: unless-stopped

transmission

  • 保种
yaml
services:
  transmission:
    image: linuxserver/transmission:4.0.4
    container_name: transmission
    network_mode: host
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/tr/watch:/watch
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/tr/web:/web #默认不用加,需要单独去下UI仓库的代码
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/tr/config:/config
      - # 剩下的自己加本地存储的映射
    environment:
      - PGID=0
      - PUID=0
      - TZ=Asia/Shanghai
      - PEERPORT=12345
      - USER= #账号
      - PASS= #密码
      - TRANSMISSION_WEB_HOME=/web #默认不用加,有UI才需要
    restart: unless-stopped

qinglong

  • 定时任务,配合dailycheckin签到
yaml
services:
  qinglong:
    image: whyour/qinglong:debian
    container_name: qinglong
    ports:
      - "11999:5700"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/qinglong/data:/ql/data
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

rss-to-telegram

  • 将RSS推送到Tg
yaml
services:
  rss-to-telegram:
    image: rongronggg9/rss-to-telegram:latest
    container_name: rss-to-telegram
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/rsstt/config:/app/config
    environment:
      - TOKEN= #你的机器人token
      - MANAGER= #你的tgid
      - T_PROXY=socks5://mihomo:7890
      - R_PROXY=socks5://mihomo:7890
      - MULTIUSER=0
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

rsshub

  • 万物皆可RSS
yaml
services:
  rsshub:
    image: diygod/rsshub:chromium-bundled
    container_name: rsshub
    ports:
      - "15111:1200"
    environment:
      - REDIS_URL=redis://redis:6379/
      - PROXY_URI=http://mihomo:7890
      - PUPPETEER_WS_ENDPOINT=ws://browserless:3000
      - ACCESS_KEY= #密钥
      - CACHE_TYPE=redis
    depends_on:
      - redis
      - browserless
    restart: unless-stopped
    networks:
      - defaultnet

  browserless:
    image: browserless/chrome:latest
    container_name: browserless
    ulimits:
      core:
        hard: 0
        soft: 0
    restart: unless-stopped
    networks:
      - defaultnet

  redis:
    image: redis:alpine
    container_name: redis
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/redis/data:/data
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

sun-panel

  • 导航页
  • 美化
yaml
services:
  sun-panel:
    image: hslr/sun-panel:latest
    container_name: sun-panel
    ports:
      - "11888:3002"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/sun-panel/conf:/app/conf
    restart: unless-stopped
    networks:
      - defaultnet

  sun-panel-helper:
    image: madrays/sun-panel-helper:latest
    container_name: sun-panel-helper
    ports:
      - "11887:80"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/sun-panel/sun-panel-helper/data:/app/backend/data
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/sun-panel/sun-panel-helper/backups:/app/backend/backups
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/sun-panel/conf/custom:/app/backend/custom
    environment:
      - BACKEND_PORT=3001
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

vaultwarden

  • 密码管理器
yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    ports:
      - "11555:80"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/vaultwarden/data:/data
    environment:
      - SIGNUPS_ALLOWED=false
      - INVITATIONS_ALLOWED=false
      - EXPERIMENTAL_CLIENT_FEATURE_FLAGS=ssh-key-vault-item,ssh-agent
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

syncthing

  • 同步,代替文档同步功能
yaml
services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    ports:
      - 8384:8384 # Web UI
      - 22000:22000/tcp # TCP file transfers
      - 22000:22000/udp # QUIC file transfers
      - 21027:21027/udp # Receive local discovery broadcasts
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/syncthing:/var/syncthing
    environment:
      - PUID=1000
      - PGID=1000
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

wewe-rss

  • 微信公众号RSS
yaml
services:
  wewe-rss:
    image: cooderl/wewe-rss-sqlite:latest
    container_name: wewe-rss
    ports:
      - "15333:4000"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/wewe-rss/data:/app/data
    environment:
      - SERVER_ORIGIN_URL= #你的域名
      - MAX_REQUEST_PER_MINUTE=60
      - AUTH_CODE= #你的密钥
      - DATABASE_URL=file:../data/wewe-rss.db
      - AUTH_DATABASE_TYPECODE=sqlite
      - FEED_MODE=fulltext
      - ENABLE_CLEAN_HTML=true
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

HowToCook

  • 菜谱
yaml
services:
  how-to-cook:
    image: ghcr.io/anduin2017/how-to-cook:latest
    container_name: how-to-cook
    ports:
      - "12333:5000"
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

duplicati

  • 跨盘备份、备份到云盘(代替备份中心,极空间的备份中心只能支持增量备份,不会同步删除)
yaml
services:
  duplicati:
    image: duplicati/duplicati:latest
    container_name: duplicati
    ports:
      - 8200:8200
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/duplicati/data:/data
      - /tmp/zfsv3/硬盘名/账号手机号/data/:/sourcessd
      - /tmp/zfsv3/硬盘名/账号手机号/data/backup:/backup
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

opengist

  • 自部署类似Github Gist
yaml
services:
  opengist:
    image: thomiceli/opengist:latest
    container_name: opengist
    ports:
      - "6157:6157"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/Opengist:/opengist
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

rustDesk

  • 远程桌面
yaml
services:
  hbbs:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbs
    command: hbbs
    ports:
      - "21115:21115"
      - "21116:21116/tcp"
      - "21116:21116/udp"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/rustdesk/data:/root
    restart: unless-stopped
    networks:
      - defaultnet
    depends_on:
      - hbbr

  hbbr:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbr
    command: hbbr
    ports:
      - "21117:21117"
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/rustdesk/data:/root
    restart: unless-stopped
    networks:
      - defaultnet

networks:
  defaultnet:
    external: true

immich

  • 照片管理
yaml
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich_server
    ports:
      - '2283:2283'
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/immich/data:/data
      # 中文地理编码https://github.com/ZingLix/immich-geodata-cn
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/immich/geodata:/build/geodata
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/immich/i18n-iso-countries/langs:/usr/src/app/server/node_modules/i18n-iso-countries/langs
      - /tmp/zfsv3/硬盘名/账号手机号/data/Goalonez/Photos:/Photos
    environment:
      - DB_HOSTNAME=immich_postgres
      - DB_PORT=5432
      - DB_USERNAME=postgres
      - DB_PASSWORD=123456
      - DB_DATABASE_NAME=immich
      # 我是复用了rsshub的redis,请自行参考上方rsshub中的redis镜像
      - REDIS_HOSTNAME=redis
      - REDIS_PORT=6379
      # 同实例不同库
      - REDIS_DBINDEX=1
      - TZ=Asia/Shanghai
    depends_on:
      - immich_postgres
    restart: unless-stopped
    networks:
      - defaultnet
    mem_limit: 2g
    cpus: 3

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: immich_machine_learning
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/immich/model-cache:/cache
    environment:
      # 代理
      - HTTP_PROXY=http://192.168.5.2:7890
      - HTTPS_PROXY=http://192.168.5.2:7890
      - NO_PROXY=localhost,127.0.0.1,immich
      - TZ=Asia/Shanghai
    restart: unless-stopped
    networks:
      - defaultnet
    mem_limit: 4g
    cpus: 4

  immich_postgres:
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
    container_name: immich_postgres
    ports:
      - '5432:5432'
    volumes:
      - /tmp/zfsv3/硬盘名/账号手机号/data/docker/immich/postgresql/data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=123456
      - POSTGRES_USER=postgres
      - POSTGRES_DB=immich
      - POSTGRES_INITDB_ARGS=--data-checksums
      - TZ=Asia/Shanghai
    restart: unless-stopped
    networks:
      - defaultnet
    shm_size: 128mb
    mem_limit: 3g
    cpus: 2

networks:
  defaultnet:
    external: true

portainer

  • docker管理面板
yaml
services:
  portainer:
    image: 6053537/portainer-ce:latest
    container_name: portainer
    ports:
      - "9000:9000"
    volumes:
      - /tmp/zfsv3/硬盘名/手机号/data/docker/portainer/data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - HTTP_PROXY=http://192.168.1.2:7890
      - HTTPS_PROXY=http://192.168.1.2:7890
      - NO_PROXY=localhost,127.0.0.1,::1,docker.internal
    restart: unless-stopped
    networks:
      - defaultnet
    mem_limit: 1g
    cpus: 2

networks:
  defaultnet:
    external: true