Skip to content

常用的docker镜像

备忘录 memos

官方仓库

  • docker run --restart=always -d --name memos -p 8230:5230 -v ~/memos/:/var/opt/memos neosmemo/memos:latest

  • 通过反代加上https&支持websocket(必须)

sh
    server {
        listen 80;
        server_name your_domain;
        location / {
          proxy_pass http://127.0.0.1:8230/;
          rewrite ^/(.*)$ /$1 break;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Upgrade-Insecure-Requests 1;
          proxy_set_header X-Forwarded-Proto https;
        }
    }

本地穿透 Frp

服务端搭建snowdreamtech/frps

bash
mkdir /etc/frp
vim /etc/frp/frps.toml
ini
bindAddr = "0.0.0.0"
bindPort = 7000
auth.method = "token" # 认证方式
auth.token = "AUTH_PASSWORD" # 认证密码
# 设置web-ui信息
webServer.addr = "0.0.0.0"
webServer.port = 7001
webServer.user = "USER"
webServer.password = "USER_PASSWORD"
bash
docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps

客户端搭建snowdreamtech/frpc

bash
mkdir /etc/frp
vim /etc/frp/frpc.toml
ini
user = "chaos"
serverAddr = "SERVER_IP"
serverPort = 7000
auth.method = "token"
auth.token = "AUTH_PASSWORD"
# 将远程服务器的12222端口穿透到客户端的22端口
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 12222
bash
docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

openweb-ui

建议2g以上内存机器

bash
docker run -d \
  -p 8686:8080 \
  -e OPENAI_API_KEY=sk-xxx \
  -e OPENAI_API_BASE_URL=https://api-example.com/v1 \
  -e ENABLE_RAG_WEB_SEARCH=false \
  -e RAG_WEB_SEARCH_ENGINE=google_pse \
  -e GOOGLE_PSE_ENGINE_ID=xxx \
  -e GOOGLE_PSE_API_KEY=xxx \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

接入Google搜索地址(获取搜索引擎IDGOOGLE_PSE_ENGINE_ID): https://programmablesearchengine.google.com/controlpanel/all API申请地址(获取GOOGLE_PSE_API_KEY): https://developers.google.com/custom-search/v1/introduction?hl=zh-cn

lobe-chat

建议2g以上内存机器

官方文档

bash
docker run -d \
  -p 3210:3210 \
  -e OPENAI_API_KEY=sk-xxx \
  -e OPENAI_PROXY_URL=https://api-example.com/v1 \
  -e ACCESS_CODE=xxxxxx \
  --name lobe-chat \
  lobehub/lobe-chat

Alist网盘

借助Alist搭建webdav

bash
# 注意映射/root/alist
docker run -d --restart=unless-stopped -v /root/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest
# 容器启动后查看密码,默认user: admin
docker logs -f alist
  1. 新建储存
  • 进入后台,点击 存储 -> 添加
  • 驱动: 选择 本机存储
  • 挂载路径: 相当于网盘目录,可自定义,挂载到Alist首页填写 / 即可
  • 根文件夹路径: 使用docker启动的Alist,此时路径相当于在docker中的Linux路径.
    • 填写 /opt/alist/data/webdav 映射到宿主机就是 /root/alist/webdav 【需要现在宿主机中创建该目录: mkdir /root/alist/webdav
  1. 添加用户(非必须,可使用管理员账户登录)
  • 进入后台,点击 用户 -> 添加
  • 勾选权限: Webdav 读取 Webdav 管理
  1. 使用win10挂载
  • 进入资源管理器,选择 网络 ,右击选择 映射网络驱动器. 选择需要的驱动器编号,文件夹中输入搭建Alist的服务地址+端口(例如: http://127.0.0.1:5244/dav)【注意: /dav必不可少,也不能替换成其他路径】
  • 勾选 使用其他凭据连接,点击 完成. 不出意外会报 网络报错 ,接着往下走.
  • 修改注册表开启http支持:
    1. WIN+R运行,输入:regedit,启动注册表编辑器
    2. 路径: 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
    3. 双击 BasicAuthLevel, 把值由 1 改为 2
    4. WIN+R运行,输入 services.msc ,找到 WebClient -> 右击属性改成 自动 -> 启动/重启 WebClient
    5. 不出意外就能挂载http协议的webdav服务了

参考文章: https://fugary.com/?p=442

ddns go

动态IP解析

https://github.com/jeessy2/ddns-go

bash
# 创建容器
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
# 进入http://ip:9876配置
# ipv6可不勾选
# 配置完成后,ping域名看是否解析到正确的IP

个人订阅

shell
# 创建映射备份目录
mkdir sublinkx
# 进入目录
cd sublinkx
# 启动服务
docker run --restart=always --name sublinkx -p 3838:8000 -v $PWD/db:/app/db -v $PWD/template:/app/template -v $PWD/logs:/app/logs -d jaaksi/sublinkx

linux-proxy:v2A

shell
# web端口: 2017
docker run -d --restart=always --privileged --network=host --name v2raya -e V2RAYA_LOG_FILE=/tmp/v2raya.log -e V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray -e V2RAYA_NFTABLES_SUPPORT=off -e IPTABLES_MODE=legacy -v /lib/modules:/lib/modules:ro -v /etc/resolv.conf:/etc/resolv.conf -v /etc/v2raya:/etc/v2raya mzz2017/v2raya
# 运行版本号:v2.2.5.1

tips:

  • 导入节点->选择节点->启动;设置->大陆白名单【不生效尝试重启docker容器】
  • V2RAYA_V2RAY_BIN 变量控制内核是v2ray还是xray
  • https://github.com/v2rayA/v2rayA

青龙面板

bash
docker run -dit \
  -v $PWD/ql/data:/ql/data \
  -p 5777:5700 \
  -e QlBaseUrl="/" \
  -e QlPort="5700" \
  --name qinglong \
  --hostname qinglong \
  --restart unless-stopped \
  whyour/qinglong:latest

lx-music源

python版:https://github.com/MeoProject/lx-music-api-server

shell
# 尝试数据卷挂载无效,懒得折腾了...
docker run --name lx-music-api-server -d -p 9763:9763 --restart always ikun0014/lx-music-api-docker
  • 默认端口9763,访问http://ip:9763/script获取music源文件
  • 可修改title再导入LX-music中,也可以直接在线导入
  • 本站实验性搭建(随时关闭服务):https://chaoszhu.com/lx-music-source.js

glances 服务器状态监控面板

shell
# web端口: 61208
docker run -d --restart="always" -p 61208-61209:61208-61209 -e TZ="${TZ}" -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host nicolargo/glances:latest-full

GitHubProxy

shell
docker run -d --name="gh-proxy-py" -p 0.0.0.0:8080:80 --restart=always hunsh/gh-proxy-py:latest

smb局域网共享存储

搭建后可提供给局域网内的家庭设备(例如小米摄像机云台版)充当nas备份视频使用

bash
docker run -d -it --name samba \
-p 137:137/udp -p 138:138/udp -p 139:139 -p 445:445 \
-v /home/camera:/mount \
-w "WORKGROUP" \
-u "username;password" \
-s "camera;/mount/;yes;no;no;all;none" \
-n -S \
dperson/samba

# -w:配置的工作组
# -u:用户名和密码
# -s:配置参数和权限,我这里设置共享文件夹的别名为share-file,设置文件夹可访问,设置文件非只读性,设置guest用户不能访问,设置用户列表和管理员列表
# -n:启动 ‘nmbd’ 守护程序来宣传共享
# -S:禁用 SMB2 最低版本(因为摄像头要使用1.0协议)

gost:http&socks5 proxy

2024/05推荐使用: x-ui

bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

shell
# 安装gost:
snap install gost 【ubuntu】

# 后台指令:
nohup gost -L=admin:123456@:23333 > gost.log 2>&1 &
  • 有认证的http&socks5【chrome中使用switchyOmega只有代理http才会弹出认证框】

docker run -d --net=host --name gost ginuerzh/gost -L=admin:123456@:23333

  • 无认证的http&socks5

docker run -d -p --net=host --name gost ginuerzh/gost -L=:23333

  • 代理配置
shell
# 有认证
export http_proxy=http://admin:123456@127.0.0.1:23333
export https_proxy=http://admin:123456@127.0.0.1:23333

# 无认证
export http_proxy=http://127.0.0.1:23333
export https_proxy=http://127.0.0.1:23333

跨平台的下载工具 gopeed

https://github.com/GopeedLab/gopeed/blob/main/README_zh-CN.md

shell
# 端口: 9999
docker run -d -p 9999:9999 -v /path/to/download:/root/Downloads liwei2633/gopeed

远程桌面 rustdesk

参考:https://blog.laoda.de/archives/docker-compose-install-rustdesk#1.-介绍

  • mkdir -p /root/data/docker_data/rustdesk
  • cd /root/data/docker_data/rustdesk
  • vim docker-compose.yml
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 xxx.com:21117 # 你的域名
    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
  • 打开防火墙的端口: TCP(21115, 21116, 21117, 21118, 21119)、UDP(21116)
shell
# 启动
docker-compose up -d

官网下载平台应用,ID服务器与中继服务器输入域名即可

在线vscode code-server

官方仓库code-server

镜像仓库docker-code-server

shell
docker run -d \
  --name=code-server \
  --net host `#面板端口8443`  \
  --restart unless-stopped \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e PASSWORD=xxxxx `#web面板密码`  \
  -e SUDO_PASSWORD=admin `#root用户密码`  \
  -e DEFAULT_WORKSPACE=/config/workspace  \
  -v ~/code-server:/config `#配置映射路径` \
  lscr.io/linuxserver/code-server:latest
  • 通过反代加上https&支持websocket(必须)
sh
http {
# other config...
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    server {
      listen 443 ssl;
      server_name your_domain;
      ssl_certificate your_domain_bundle.crt;
      ssl_certificate_key your_domain.key;
      ssl_session_timeout 5m;
      ssl_protocols TLSv1.2 TLSv1.3;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
      ssl_prefer_server_ciphers on;
      location / {
        #proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass: http://127.0.0.1:8443;
      }
    }
    server {
      listen 80;
      server_name your_domain;
      return 301 https://$host$request_uri;
    }
}

文件托管(网盘) filebrowser

https://github.com/filebrowser/filebrowser

创建挂在目录: mkdir /root/filebrowser

shell
# 端口: 8001
docker run -d --restart=always \
  -v /root/filebrowser/uploads:/srv \
  -v /root/filebrowser/filebrowserconfig.json:/etc/config.json \
  -v /root/filebrowser/database.db:/etc/database.db \
  --name filebrowser \
  -p 1180:80 \
  filebrowser/filebrowser

jellyfin多媒体托管

可配合上面的filebrowser使用

shell
docker run -d \
  --name=jellyfin \
  -p 8096:8096 \
  -v /root/jellyfin/config:/config \
  -v /root/jellyfin/media:/media \
  -v /root/filebrowser/uploads:/filebrowser \
  --restart=unless-stopped \
  jellyfin/jellyfin

PDF在线阅读

shell
docker run -d \
  --name=calibre-web \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -p 7777:8083 \
  -v /path/to/data:/config \
  -v /path/to/calibre/library:/books \
  --restart unless-stopped \
  linuxserver/calibre-web

配置指南:

shell
# 1.下载空数据库文件并配置好权限
cd /path/to/calibre/library
chmod 777 -R /path/to/calibre/library
wget https://ghproxy.com/https://github.com/chaos-zhu/chaos-zhu.github.io/raw/master/metadata.db
chmod 777 metadata.db
/books/metadata.db

# 2.web端配置(服务启动需大约2分钟)
# 默认登录账户: admin/admin123
# 输入数据库文件路径:/books/metadata.db
# 点击右边admin,设置中文语言;取消勾选所有菜单(显得干净);
# 点击管理权限->基本权限->功能配置->启用上传

protainer:可视化docker容器管理

  • docker run -d -p 7777:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /home/docker/portainer:/data -v /root/Portainer-CN/public:/public --name portainer --restart=always portainer/portainer

WARNING

    1. 其中: -v /root/Portainer-CN/public:/public 为汉化包挂载卷
    1. 下载汉化文件, 上传到服务器目录:/root/Portainer-CN/public
    1. 访问管理面板:http://ip:7777 --> 选择Local --> Connect

nginx配置

nginx
server {
    listen 80;
    server_name docker.xxx.xxx;
      # ^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。
    location / {
      proxy_pass http://127.0.0.1:7777/;
    }
}

图床 Lsky(兰空)

项目地址

镜像地址

shell
docker run -d --name=lsky-pro --restart=always -v /path/to/mount/lsky-pro-data:/var/www/html -p 7791:80 dko0/lsky-pro:2.0.4

qbittorrent

文档

shell
docker run -d \
    --name qbittorrent \
    -p 38080:8080 \
    -e PUID=1000 \
    -e PGID=1000 \
    -e UMASK=002 \
    -e TZ="Asia/Shanghai" \
    -v /root/qBittorrent/config:/config \
    cr.hotio.dev/hotio/qbittorrent
  • 默认用户名/密码:admin/adminadmin

  • 启用Vue-UI: 设置 --> Web UI --> 勾选: Use alternative Web UI

Alltube

shell
docker run -d -p 28089:80 rudloff/alltube

Joplin笔记

shell
cd ~ && mkdir Joplin-note && cd Joplin-note && vim docker-compose.yml

配置指南:docker-compose.yml

docker
version: '3'

services:
   db:
       image: postgres:13
       volumes:
           - ./data/postgres:/var/lib/postgresql/data
       ports:
           - "5432:5432"
       restart: unless-stopped
       environment:
           - POSTGRES_USER=username  # 用户名
           - POSTGRES_PASSWORD=changeme # 密码
           - POSTGRES_DB=joplin
   app:
       image: joplin/server:latest
       depends_on:
           - db
       ports:
           - "22300:22300"
       restart: unless-stopped
       environment:
           - APP_PORT=22300
           - DB_CLIENT=pg
           - POSTGRES_DATABASE=joplin
           - APP_BASE_URL=https://joplin.chaoszhu.com # 【必填, 不然打不开, ip示例: http://xx.xx.xx.xx:22300】
           - POSTGRES_USER=username  # 与上面的用户名对应
           - POSTGRES_PASSWORD=changeme # 与上面的密码对应
           - POSTGRES_PORT=5432 # db ports 对应上面端口
           - POSTGRES_HOST=db

iptables

shell
# web端口: 10001
docker run -d \
  --name iptables-web \
  --privileged=true \
  --net=host \
  -e "IPT_WEB_USERNAME=admin" \
  -e "IPT_WEB_PASSWORD=admin" \
  -e "IPT_WEB_ADDRESS=:10001" \
  -p 10001:10001 \
  pretty66/iptables-web:1.1.1

端口转发 启用网卡转发功能: echo 1 > /proc/sys/net/ipv4/ip_forward

开启系统nat模块: iptables -t nat -A POSTROUTING -j MASQUERADE

示例:将3000端口转发到内网192.168.195.64:3000: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3000 -j DNAT --to-destination 192.168.195.64:3000

保存规则: service iptables save

查看nat表转发规则:http://your-ip:10001/

订阅转换

shell
# 后端服务
# https://github.com/tindy2013/subconverter/blob/master/README-docker.md
docker run -d --restart=always -p 25500:25500 tindy2013/subconverter:latest
curl http://localhost:25500/version

# 前端页面
# https://github.com/CareyWang/sub-web?tab=readme-ov-file#Docker
docker run -d -p 10808:80 --restart always --name subweb careywong/subweb:latest

docker-windows

docker容器启动windows

开源地址

shell
docker run -d \
    --name windows \
    --env VERSION=win10 \
    --env RAM_SIZE=6G \
    --env CPU_CORES=4 \
    --device /dev/kvm \
    --cap-add NET_ADMIN \
    -p 8006:8006 \
    -p 3389:3389/tcp \
    -p 3389:3389/udp \
    --stop-timeout 120 \
    dockurr/windows