常常使用docker,容器太多,记录太杂,索性扔博客上,方便自己查看与使用。

docker一键安装脚本

wget -qO- get.docker.com | bash

境内机器,安装 docker 并且指定镜像地址为 Aliyun

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

Watchtower 自动更新镜像,并且保持最初部署时的参数,其中 chatgpt-web moviepilot memos filecodebox 为需要自动更新镜像的容器。【参考此处

docker run -d \
    --name watchtower \
    --restart unless-stopped \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -c \
    chatgpt-web moviepilot memos filecodebox

仅仅运行一次

docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower -cR \
    moviepilot

docker系列教程1.使用 VPS 下载 Docker 镜像并导入到本地服务器的过程

alist

docker run -d \
    --restart=always \
    -v /etc/alist:/opt/alist/data \
    -p 54644:5244 \
    -e PUID=0 \
    -e PGID=0 \
    -e UMASK=022 \
    --name="alist" \
    xhofe/alist:latest

安装、使用、美化等教程,参考安安稳稳
获取随机密码

docker exec -it alist ./alist admin random

aliyundrive-subscribe

默认账号密码:admin admin

docker run -d \
    --name aliyun \
    -p 8002:8002 \
    --restart=always \
    looby/aliyundrive-subscribe:latest

audiobooks

docker run -d \
    -p 8378:80 \
    -v /root/audiobooks/book:/audiobooks \
    -v /root/audiobooks/config:/config \
    -v /root/audiobooks/metadata:/metadata \
    --name audiobookshelf \
    advplyr/audiobookshelf

chatgpt

推测

docker run -d \
  -p 56122:3000 \
  --restart=always \
  -e BASE_URL="https://xxx.com" `# 自定义接口地址`\
  -e OPENAI_API_KEY="xxx" \
  -e CODE="passwd" \
  yidadaa/chatgpt-next-web
docker run -d \
    --restart=always \
    --name=chatgpt \
    -p 3002:3002 \
    -e OPENAI_API_KEY: xxxxxx \
    chenzhaoyu94/chatgpt-web:main
docker run -d \
    --name chatgpt-web \
    --restart=always \
    -p 56122:3002 \
    --env OPENAI_API_KEY=<api_key> \
    --env AUTH_SECRET_KEY=<password> \
    chenzhaoyu94/chatgpt-web:latest
docker run -d \
    --name openai \
    --restart always \
    -p 42356:18080 \
    -e MAX_TOKENS=300 \
    -e TEMPERATURE=0.6 \
    -e KEYS=<api_key> \
    dqjdda/openai-java

chinesesubfinder

 docker run -d \
     --restart=always \
     -v /home/cnsub/config:/config \
     -v /home/nastools/media/storage:/media/storage \
     -v /home/cnsub/browser:/root/.cache/rod/browser \
     -e PUID=0 \
     -e PGID=0 \
     -e TZ=Asia/Shanghai \
     -e UMASK=000 \
     -p 19035:19035 \
     -p 19037:19037 `# webui 的视频列表读取图片用,务必设置不要暴露到外网` \
     --name cnsub \
     --hostname chinesesubfinder \
     --log-driver "json-file" \
     --log-opt "max-size=100m" `# 限制docker控制台日志大小,可自行调整` \
     allanpk716/chinesesubfinder

emby

官方原版

docker run -d \
    --name=emby \
    --restart=always \
    -v /root/emby/config:/config \
    -v /root/emby/share1:/mnt/share1 \
    -v /root/emby/share2:/mnt/share2 \
    -v /root/emby/share3:/mnt/share3 \
    -p 8096:8096 \
    -p 8920:8920 \
    -e UID=1000 \
    -e GID=100 \
    -e GIDLIST=100 \
    linuxserver/emby:latest

开心体验版1

docker run -d \
    -e PUID=1000 \
    -e PGID=1000 \
    -v /mnt/nas/storages:/media/nas \
    -v /mnt/nas/emby/config:/config \
    -p 8096:8096 \
    --name=emby \
    --restart unless-stopped \
    xinjiawei1/emby_unlockd:latest

开心体验版2
软链接要把原始文件也映射进去,并且保持目录一样
注意修改配置文件位置

docker run -d \
    --network=bridge \
    -p '80:8096' \
    -v /root/emby/config:/config \
    -v /home/emby/config:/config \
    -v /root/emby/share1:/root/emby/share1 \
    -v /root/emby/share2:/root/emby/share2 \
    -v /root/emby/share3:/root/emby/share3 \
    -v /root/emby/share1-link:/root/emby/share1-link \
    -v /root/emby/share2-link:/root/emby/share2-link \
    -v /root/emby/share3-link:/root/emby/share3-link \
    -e TZ="Asia/Shanghai" \
    -e UID=0 \
    -e GID=0 \
    -e GIDLIST=0 \
    --restart always \
    --name emby \
    lovechen/embyserver:latest

fileCodeBox

docker run -d \
    --restart=always \
    -p 41365:12345 \
    -v /opt/FileCodeBox/:/app/data \
    --name filecodebox \
    lanol/filecodebox:latest

firefox

docker run -d \
    --name=firefox \
    -e TZ=Asia/Hong_Kong \
    -e DISPLAY_WIDTH=1920 \
    -e DISPLAY_HEIGHT=1080 \
    -e KEEP_APP_RUNNING=1 \
    -e ENABLE_CJK_FONT=1 \
    -e SECURE_CONNECTION=0 \
    -e VNC_PASSWORD=<密码> \
    -p 5800:5800 \
    -v /www/firefox:/config:rw \
    --security-opt seccomp=unconfined \
    --shm-size 1500m \
    jlesage/firefox

jellyfin

docker run -d \
    --name=jellyfin \
    -e PUID=0 \
    -e PGID=0 \
    -e TZ=Asia/Shanghai \
    -p 8096:8096 \
    -v /mnt/nas/jellyfin/config:/config \
    -v /mnt/nas/storage:/data/storage \
    --restart unless-stopped \
    lscr.io/linuxserver/jellyfin:latest

jellyseerr

docker run -d \
    --restart=always \
    --name jellyseerr \
    -e LOG_LEVEL=debug \
    -e TZ=Asia/Tashkent \
    -e JELLYFIN_TYPE=emby \
    -p 5055:5055 \
    -v /home/ubuntu/jellyseer/config:/app/config \
    --restart unless-stopped \
    fallenbagel/jellyseerr:latest

lan-clip

docker run -d \
    -p 9501:9501 \
    --name lan-clip \
    --restart always \
    csmayi/lan-clip:latest

lucky

端口转发程序,未开源;host模式, 同时支持IPv4/IPv6

docker run -d --name lucky --restart=always --net=host gdy666/lucky

容器内配置文件夹:/goodluck
默认登陆地址 : http://{IP地址}:16601
默认账号:666
默认密码:666

memos

最美观的版本 0.14.4,美化完美,但功能少
功能最全面的版本 0.18.1 支持多种数据库、webhook、评论等
美化&使用,差不多
官方讨论区木木木木木你是人间的四月天使用指南 进阶版
缘生笔记
自定义字体 霞鹜文楷、支持私有统计Umami、自定义背景、配置对象存储

nginx子路径无法反代memos

docker run -d \
    --name memos \
    --restart=always \
    -p 43659:5230 \
    -v /home/memos:/var/opt/memos \
    neosmemo/memos:0.14.4

nas-tools

nastools官方最新闭源版本

docker run -d \
    --restart=always \
    --name nas-tools \
    --hostname nas-tools \
    -p 3000:3000 \
    -v /home/nastools/config:/config \
    -v /home/nastools/media:/media \
    -e PUID=0 \
    -e PGID=0 \
    -e UMASK=000  `# 掩码权限,默认000,可以考虑设置为022` \
    -e NASTOOL_AUTO_UPDATE=false \
    nastool/nas-tools:latest 

nastools最后一个带有BT索引的版本!

docker run -d \
    --restart=always \
    --name nas-tools \
    --hostname nas-tools \
    -p 3000:3000 \
    -v /home/nastools/config:/config \
    -v /home/nastools/media:/media \
    -e PUID=0 \
    -e PGID=0 \
    -e UMASK=000  `# 掩码权限,默认000,可以考虑设置为022` \
    -e NASTOOL_AUTO_UPDATE=false \
    19970688/nastools-bt:latest

hsuyelin非官方维护版

docker run -d \
    --restart=always \
    --name nas-tools \
    --hostname nas-tools \
    -p 3000:3000 \
    -v /home/nastools/config:/config \
    -v /home/nastools/media:/media \
    -e PUID=0 \
    -e PGID=0 \
    -e UMASK=000  `# 掩码权限,默认000,可以考虑设置为022` \
    -e NASTOOL_AUTO_UPDATE=false \
    hsuyelin/nas-tools:latest 

navidrome

音乐服务器

docker run -d \
   --name navidrome \
   --restart=unless-stopped \
   -v /data/public/music:/music \
   -v /opt/Navidrome/data:/data \
   -p 24533:4533 \
   -e ND_LOGLEVEL=info \
   deluan/navidrome:latest

nezha-dash

NezhaDash 是一个基于 Next.js 和 哪吒监控 的仪表盘.demo

创建文件 /opt/nezha/NezhaDash/.env

## nezha 面板地址地址
NezhaBaseUrl=http://ip:8008
## nezha 面板 API Token
NezhaAuth=xxx
## 面板默认显示语言 zh zh-t en ja
DefaultLocale=zh
## 是否强制显示所有服务器
ForceShowAllServers=false
## 获取数据间隔(毫秒)
NEXT_PUBLIC_NezhaFetchInterval=5000
## 是否显示旗帜
NEXT_PUBLIC_ShowFlag=true
## 是否禁用卡通人物
NEXT_PUBLIC_DisableCartoon=false
## 是否显示标签
NEXT_PUBLIC_ShowTag=true
## 是否显示流量信息
NEXT_PUBLIC_ShowNetTransfer=false
## 是否强制使用SVG旗帜
NEXT_PUBLIC_ForceUseSvgFlag=false
## 自定义Logo
NEXT_PUBLIC_CustomLogo=https://nezha-cf.buycoffee.top/apple-touch-icon.png
## 自定义标题
NEXT_PUBLIC_CustomTitle=NezhaDash  
## 自定义描述(无多语言支持)
NEXT_PUBLIC_CustomDescription=简单美观的仪表板.
docker run -d --name nezha-dash \
  -v /opt/nezha/NezhaDash/.env:/app/.env \
  -p 41426:3000 \
  --restart always \
  hamster1963/nezha-dash:latest

第三方魔改

proxy-socks5

goproxy
免费版不支持设置密码IP等认证,同时启动http和socks5代理

docker run -d --name goproxy \
    --restart always \
    --network host \
    stilleshan/goproxy \
    sh -c '/proxy http -p :10081 & /proxy socks -p :10082'

xkuma/socks5
支持设置密码与服务器监听IP,只能启动socks5代理

docker run -d --name socks5 \
    --restart always \
    --network host \
    -e PROXY_USER=user \
    -e PROXY_PASSWORD=123 \
    -e PROXY_SERVER=[::]:10082 \
    xkuma/socks5

127.0.0.1:表示监听本机ipv4地址;
0.0.0.0:表示监听所有ipv4地址;
[::]:表示监听所有ipv6地址;
[::1]:表示监听本机ipv6地址;
不设置PROXY_USER与PROXY_PASSWORD则关闭密码认证;

检测代理可用性,ipv6需用[]框起来
curl --http ip:port google.com
curl --socks5 ip:port google.com
curl --socks5 ip:port --proxy-user user:passwd google.com

qbittorrent

docker run -d \
    --name=qbittorrent \
    -e PUID=0 \
    -e PGID=0 \
    -e TZ=/Asia/Shanghai \
    -e WEBUI_PORT=8080 \
    -p 8080:8080 \
    -p 6881:6881 \
    -p 45263:45263 \
    -p 6881:6881/udp \
    -v /home/qbit/config:/config \
    -v /home/nastools/media:/home/nastools/media \
    --restart unless-stopped \
    lscr.io/linuxserver/qbittorrent:latest

rsshub

docker run -d \
    --name rsshub \
    -p 1200:1200 \
    -e CACHE_EXPIRE=60 \
    -e GITHUB_ACCESS_TOKEN=example \
    diygod/rsshub

speedtest

docker run -d -p 6688:80 ilemonrain/html5-speedtest:alpine

tgcheck

docker run -d \
    --name=tgcheck \
    --restart always \
    -v /home/tgcheck/config/config.toml:/config.toml \
    -e TGTOKEN=<bot_token> \
    mxssl/tg-captcha-bot:v1.1.10

tg-fileStreamBot

mkdir /home/TG-FileStreamBot
cd /home/TG-FileStreamBot
touch fsb.env

fsb.env内容如下

API_ID=123456
API_HASH=cSDGVSFVSDFSDF0e8
BOT_TOKEN=5555555:SSSSSUaKk
LOG_CHANNEL=-100200555555
PORT=18088
HASH_LENGTH=6
HOST=http://ip:18088
ALLOWED_USERS=123456111
cd /home/TG-FileStreamBot
docker run -d --name fsb \
    --restart unless-stopped \
    --env-file fsb.env \
    -p 18088:18088 \
    ghcr.io/everythingsuckz/fsb:latest

transmission

docker run -d \
    --restart=always \
    --name transmission \
    -e TRANSMISSION_WEB_HOME=/transmission-web-control/ \
    -e USER=<用户名> \
    -e PASS=<密码> \
    -p 9091:9091 \
    -p 51413:51413 \
    -p 51413:51413/udp \
    -v ~/transmission/config:/config \
    -v ~/transmission/downloads:/downloads \
    -v ~/transmission/watch:/watch \
    linuxserver/transmission

vocechat

docker run -d \
    --restart=always \
    -p 7800:3000 \
    --name vocechat-server \
    privoce/vocechat-server:latest
☛使用bot api向用户发送信息
curl -L 'https://xxx.com/api/bot/send_to_user/user_id' \
    -H 'Content-Type: text/markdown' \
    -H 'Accept: application/json; charset=utf-8' \
    -H 'x-api-key: api_key' \
    -d 'message'

webdav

docker run -d \
    --name=webdav \
    -e USERNAME=<user> \
    -e PASSWORD=<password> \
    -v /mnt/sda1:/data \
    -p 80:80 \
    --restart=always \
    derkades/webdav:latest

zdir pro

多功能文件分享程序,官网

docker run -d --name="zdir" \
  -v /opt/zdir/data:/opt/zdir/data \
  -v /data/public:/opt/zdir/data/public \
  -v /data/private:/opt/zdir/data/private \
  -p 6080:6080 \
  --restart=always \
  helloz/zdir:4

zerotier

docker run --device=/dev/net/tun \
    --net=host \
    --cap-add=NET_ADMIN \
    --cap-add=SYS_ADMIN \
    -v /home/zerotier:/var/lib/zerotier-one \
    --name zerotier-one \
    --restart=always \
    -d bltavares/zerotier

加入网络
docker exec zerotier-one zerotier-cli join 网络ID

设置全局路由

  • A机器开启系统转发,在 /etc/sysctl.conf 里添加以下内容:
    net.ipv4.ip_forward = 1
    net.ipv6.conf.default.forwarding=1
    net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.all.proxy_ndp=1

    执行 sysctl -p 开启转发。如果你有防火墙,记得给相应的网段放行。

  • 在 Managed Routes 中添加一条 0.0.0.0/0 to A机器的zt网络IP 的路由规则[IPV6 ::/0]
  • B机器设置全局路由
    docker exec zerotier-one zerotier-cli set 网络ID allowDefault=1

查看网络状态
docker exec -it zerotier-one zerotier-cli status


“一花一世界,一叶一天堂。君掌盛无边,刹那成永恒。”