常用的docker镜像
备忘录 memos
docker run --restart=always -d --name memos -p 8230:5230 -v ~/memos/:/var/opt/memos neosmemo/memos:latest
通过反代加上https&支持websocket(必须)
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
mkdir /etc/frp
vim /etc/frp/frps.toml
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"
docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
客户端搭建snowdreamtech/frpc
mkdir /etc/frp
vim /etc/frp/frpc.toml
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
docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc
openweb-ui
建议2g以上内存机器
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以上内存机器
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
# 注意映射/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
- 新建储存
- 进入后台,点击
存储
->添加
- 驱动: 选择
本机存储
- 挂载路径: 相当于网盘目录,可自定义,挂载到Alist首页填写
/
即可 - 根文件夹路径: 使用docker启动的Alist,此时路径相当于在docker中的Linux路径.
- 填写
/opt/alist/data/webdav
映射到宿主机就是/root/alist/webdav
【需要现在宿主机中创建该目录:mkdir /root/alist/webdav
】
- 填写
- 添加用户(非必须,可使用管理员账户登录)
- 进入后台,点击
用户
->添加
- 勾选权限:
Webdav 读取
Webdav 管理
- 使用win10挂载
- 进入资源管理器,选择
网络
,右击选择映射网络驱动器
. 选择需要的驱动器编号
,文件夹中输入搭建Alist的服务地址+端口(例如: http://127.0.0.1:5244/dav)
【注意:/dav
必不可少,也不能替换成其他路径】 - 勾选
使用其他凭据连接
,点击完成
. 不出意外会报网络报错
,接着往下走. - 修改注册表开启http支持:
WIN+R运行,输入:regedit,启动注册表编辑器
- 路径:
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
- 双击
BasicAuthLevel
, 把值由1
改为2
- WIN+R运行,输入
services.msc
,找到WebClient
-> 右击属性改成自动
-> 启动/重启WebClient
- 不出意外就能挂载http协议的webdav服务了
参考文章: https://fugary.com/?p=442
ddns go
动态IP解析
https://github.com/jeessy2/ddns-go
# 创建容器
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
# 进入http://ip:9876配置
# ipv6可不勾选
# 配置完成后,ping域名看是否解析到正确的IP
个人订阅
# 创建映射备份目录
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
# 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
青龙面板
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
# 尝试数据卷挂载无效,懒得折腾了...
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 服务器状态监控面板
# 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
docker run -d --name="gh-proxy-py" -p 0.0.0.0:8080:80 --restart=always hunsh/gh-proxy-py:latest
smb局域网共享存储
搭建后可提供给局域网内的家庭设备(例如小米摄像机云台版)充当nas备份视频使用
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)
# 安装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
- 代理配置
# 有认证
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
# 端口: 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
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)
# 启动
docker-compose up -d
官网下载平台应用,ID服务器与中继服务器输入域名即可
在线vscode code-server
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(必须)
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
# 端口: 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使用
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在线阅读
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
配置指南:
# 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
- 其中:
-v /root/Portainer-CN/public:/public
为汉化包挂载卷
- 下载汉化文件, 上传到服务器目录:
/root/Portainer-CN/public
- 访问管理面板:
http://ip:7777
--> 选择Local --> Connect
nginx配置
server {
listen 80;
server_name docker.xxx.xxx;
# ^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。
location / {
proxy_pass http://127.0.0.1:7777/;
}
}
图床 Lsky(兰空)
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
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
docker run -d -p 28089:80 rudloff/alltube
Joplin笔记
cd ~ && mkdir Joplin-note && cd Joplin-note && vim docker-compose.yml
配置指南:docker-compose.yml
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
# 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/
订阅转换
# 后端服务
# 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
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