Docker下安装常用容器
这篇文章简单记录一下安装一些常用工具的过程以及遇到的问题,希望能对有需要的小伙伴提供一些帮助。
前言
本文首写于2023-03-07,2024-11-28日更新。
一、nginx
1、准备文件夹
sudo mkdir -p /opt/nginx/www
sudo mkdir -p /opt/nginx/sites-enabled
sudo mkdir -p /opt/nginx/log
sudo chmod 777 /opt/nginx/www
sudo chmod 777 /opt/nginx/sites-enabled
sudo chmod 777 /opt/nginx/log`
2、安装:
使用的 docker 镜像 https://hub.docker.com/r/ubuntu/nginx
如果只是打开一个或者特定的几个端口,可以使用默认的 - p 参数:
docker run -d --name ubuntu-nginx -e TZ=UTC -p 80:80 -v /opt/nginx/www:/var/www/html -v /opt/nginx/sites-enabled/:/etc/nginx/sites-enabled/ -v /opt/nginx/log:/var/log/nginx/ ubuntu/nginx:1.18-22.04_beta
如果嫌麻烦,可以直接使用 host 模式:
docker run -d --name ubuntu-nginx -e TZ=UTC --network=host -v /opt/nginx/www:/var/www/html -v /opt/nginx/sites-enabled/:/etc/nginx/sites-enabled/ -v /opt/nginx/log:/var/log/nginx/ ubuntu/nginx:1.18-22.04_beta
3、测试
在 /opt/nginx/sites-enabled 下创建文件 default:
server {
# listen监听的端口
##default_server: 如果没有设置这个参数,那么将会以在nginx.conf中找到的第一个server块作为默认server块
listen 80;
listen [::]:80;
##主机名称:其后可以跟多个主机名称,开始处理一个HTTP请求时,nginx会取出header头中的Host,与每个server中的server_name进行匹配,以此决定到底由那一个server来处理这个请求。有可能一个Host与多个server块中的server_name都匹配,这时会根据匹配优先级来选择实际处理的server块。server_name与Host的匹配优先级见文末。
server_name localhost;
##access_log /var/log/nginx/host.access.log main;
# location 语法: location [=|~|~*|^~] /uri/ { ... }
# location的使用实例见文末。
##注意:location是有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。
location / {
root /var/www/html;
index index.html index.htm;
}
}
在 /opt/nginx/www 下创建文件 index.html。
打开浏览器访问测试。
二、qbittorrentee
1、创建文件夹
sudo mkdir -p /vol1/1000/docker/qBittorrent/config
sudo mkdir -p /vol1/1000/docker/qBittorrent/qb-web
sudo mkdir -p /vol1/1000/download
2、修改权限
sudo chmod 777 /vol1/1000/docker/qBittorrent/config
sudo chmod 777 /vol1/1000/docker/qBittorrent/qb-web
sudo chmod 777 /vol1/1000/download
3、创建容器
docker run -d \
--name=qbittorrentee \
-e WEBUIPORT=8080 \
-e PUID=1026 \
-e PGID=100 \
-e TZ=Asia/Shanghai \
-v /vol1/1000/docker/qBittorrent/config:/config \
-v /vol1/1000/docker/qBittorrent/qb-web:/qb-web \
-v /vol1/1000/download:/downloads \
--network host \
--restart unless-stopped \
superng6/qbittorrentee:latest
三、DDSN-Go
sudo mkdir /opt/ddns-go
sudo chmod 777 /opt/ddns-go
创建容器
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go`
在浏览器中打开 http://主机IP:9876,修改你的配置,成功。
四、webdav
使用镜像:
docker pull 117503445/go_webdav
创建容器:
docker run -it --name go_webdav -d -v /root/dir1:/root/dir1 -v /root/dir2:/root/dir2 -e dav="/dav1,/root/dir1,user1,pass1,true;/dav2,/root/dir2,null,null,false" -p 80:80 --restart=always
配置说明:
使用分号将每个 WebDAV 服务配置分隔,也就是说上述字符串描述了 2 个服务,分别是/dav1,/root/dir1,user1,pass1,true和/dav2,/root/dir2,null,null,false
第一个服务会在 /dav1 下挂载 镜像的 /root/dir1 目录,访问需要的用户名和密码分别为 user1 和 pass1 。
再根据前面的 -v /root/dir1:/root/dir1 就可以和物理机的 /root/dir1 完成映射关系,进行访问了。
第 5 个参数 true 表示这是个只读的服务,只支持 GET,不支持 增删改。
第二个服务会在 /dav2 下挂载 镜像的 /root/dir2 目录,访问需要的用户名和密码分别为 null 和 null,这时候表示不需要密码就可以访问这个服务了。
再根据前面的 -v /root/dir2:/root/dir2 就可以和物理机的 /root/dir2 完成映射关系,进行访问了。
第 5 个参数 false 表示这是个非只读的服务,支持 增删改查。
对于无保密性要求的文件分享,建议把账号密码设成 null null,再把 readonly 开成 True。
五、caddy-file-server
使用镜像:
docker pull caddy:latest
创建容器:
docker run --name caddy-file-server -d \
-p 8899:80 \
-v /opt/caddy/Caddyfile:/etc/caddy/Caddyfile \
-v /mnt/u_disk/downloads/completed:/web_root \
caddy:latest
Caddyfile:
:80 {
root * /web_root
# Enable the static file server.
file_server browse
}
六、Bitmagnet-Next-Web
Bitmagnet-Next-Web是一个更现代的磁力搜索网站程序,使用 Next.js 14 + NextUI v2 开发,后端使用 Bitmagnet
docker-compose.yml部署:
在后台执行该服务 :docker-compose up -d
version: "3"
services:
bitmagnet-next-web:
image: journey0ad/bitmagnet-next-web:latest
container_name: bitmagnet-next-web
ports:
- "3000:3000"
restart: unless-stopped
environment:
- POSTGRES_DB_URL=postgres://postgres:postgres@postgres:5432/bitmagnet
# - POSTGRES_HOST=postgres
# - POSTGRES_PASSWORD=postgres
depends_on:
postgres:
condition: service_healthy
bitmagnet:
image: ghcr.io/bitmagnet-io/bitmagnet:latest
container_name: bitmagnet
ports:
# API and WebUI port:
- "3333:3333"
# BitTorrent ports:
- "3334:3334/tcp"
- "3334:3334/udp"
restart: unless-stopped
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PASSWORD=postgres
# - TMDB_API_KEY=your_api_key
command:
- worker
- run
- --keys=http_server
- --keys=queue_server
# disable the next line to run without DHT crawler
- --keys=dht_crawler
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
container_name: bitmagnet-postgres
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=bitmagnet
- PGUSER=postgres
shm_size: 1g
healthcheck:
test:
- CMD-SHELL
- pg_isready
start_period: 20s
interval: 10s
分别运行各个容器:
使用 docker run 运行
如果不使用 Docker Compose,可以使用以下命令分别运行各个容器:
- 运行 PostgreSQL 容器:
docker run -d \
--name bitmagnet-postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=bitmagnet \
-e PGUSER=postgres \
-v ./data/postgres:/var/lib/postgresql/data \
--shm-size=1g \
postgres:16-alpine
- 运行 Bitmagnet 容器:
docker run -d \
--name bitmagnet \
--link bitmagnet-postgres:postgres \
-p 3333:3333 \
-p 3334:3334/tcp \
-p 3334:3334/udp \
-e POSTGRES_HOST=postgres \
-e POSTGRES_PASSWORD=postgres \
ghcr.io/bitmagnet-io/bitmagnet:latest \
worker run --keys=http_server --keys=queue_server --keys=dht_crawler
- 运行 Bitmagnet-Next-Web 容器:
docker run -d \
--name bitmagnet-next-web \
--link bitmagnet-postgres:postgres \
-p 3000:3000 \
-e POSTGRES_DB_URL=postgres://postgres:postgres@postgres:5432/bitmagnet \
journey0ad/bitmagnet-next-web:latest
全文搜索优化
搜索能力依赖 torrents.name
和 torrent_files.path
两列数据,原版 Bitmagnet 未对此建立索引,建议先建立索引提升查询效率:
create extension pg_trgm; -- 启用 pg_trgm 扩展
-- 对 `torrents.name` 和 `torrent_files.path` 建立索引
CREATE INDEX idx_torrents_name_1 ON torrents USING gin (name gin_trgm_ops);
CREATE INDEX idx_torrent_files_path_1 ON torrent_files USING gin (path gin_trgm_ops);
七、HivisionIDPhotos容器:
HivisionIDPhotos是一款开源应用,也可以通过docker部署在NAS中,通过浏览器访问就可以使用了。只需一张正面照片,就可以生成标准的证件照。它可以利用AI对照片进行一系列的智能抠图、调整尺寸、替换背景的操作。功能非常智能,抠图效果也很理想。
docker run -d --name hivision_idphotos -p 7860:7860 linzeyi/hivision_idphotos
八、资源搜索 aipan-netdisk-search
基于 Vue 与 Nuxt.js 技术打造的网盘搜索项目,持续开源并保持维护更新。其旨在让人人皆可拥有属于自己的网盘搜索网站。
env.txt:
# user
ADMIN_USER=aipan
ADMIN_PASSWORD=aipan
[email protected]
# app
JWT_SECRET=XnKZDR7OmPce9SxBjbPOqyMnMKDMdLLWNJP9iqsrYNk=
# db
POSTGRES_DB=aipan
POSTGRES_USER=aipan
POSTGRES_PASSWORD=aipan
DATABASE_SCHEMA=public
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
version: '3'
services:
aipan-netdisk-search:
image: unilei/aipan-netdisk-search:amd64
container_name: aipan-netdisk-search-app
restart: unless-stopped
ports:
- 3295:3000
env_file:
- ./env.txt
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:15
container_name: aipan-netdisk-search-db
restart: unless-stopped
# ports:
# - 5433:5432
volumes:
- /vol1/1000/my_programme/aipan-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
healthcheck:
test: ['CMD-SHELL', 'pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}']
interval: 10s
timeout: 5s
retries: 5
然后执行下面的命令,注意权限:
# 新建文件夹
mkdir -p /vol1/1000/my_programme/aipan-data # 数据目录
mkdir -p /vol1/1000/my_programme/aipan-netdisk-search-docker # docker-compose.yml 、 env.txt文件目录
# 进入docker-compose.yml 、 env.txt文件目录
cd /vol1/1000/my_programme/aipan-netdisk-search-docker
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose --env-file env.txt up -d
在浏览器中输入 http://IP:3295 就能看到主界面。
九、肥羊IPTV源
肥羊IPTV是一个开源的IPTV聚合项目,它可以将多个IPTV源聚合到一个m3u文件中,方便用户在电脑、电视上使用。
m3u地址可以在电脑上使用PotPlayer打开,或者在DIYP影音等软件中添加使用。
部署肥羊IPTV的allinone:
docker run -d --restart unless-stopped --net=host --privileged=true --name allinone youshandefeiyang/allinone
部署watchtower自动监听肥羊IPTV的allinone镜像更新:
docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower allinone -c --schedule "0 0 2 * * *"
肥羊IPTV的allinone的m3u链接地址:
Ysptp 和 IPtv 聚合m3u地址: http://192.168.10.200:35455/tv.m3u
BiliBili 生活: http://192.168.10.200:35455/bililive.m3u
虎牙一起看: http://192.168.10.200:35455/huyayqk.m3u
斗鱼一起看: http://192.168.10.200:35455/douyuyqk.m3u
YY 轮播: http://192.168.10.200:35455/yylunbo.m3u