这篇文章简单记录一下安装一些常用工具的过程以及遇到的问题,希望能对有需要的小伙伴提供一些帮助。
一、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 /opt/qbittorrentee/config
sudo mkdir -p /opt/qbittorrentee/qb-web
sudo mkdir -p /mnt/u_disk/downloads
2、修改权限
sudo chmod 777 /opt/qbittorrentee/config
sudo chmod 777 /opt/qbittorrentee/qb-web
sudo chmod 777 /mnt/u_disk/downloads
3、创建容器
docker create \
--name=qbittorrentee \
-e WEBUIPORT=8080 \
-e PUID=1026 \
-e PGID=100 \
-e TZ=Asia/Shanghai \
-p 6881:6881 \
-p 6881:6881/udp \
-p 8080:8080 \
-v /opt/qbittorrentee/config:/config \
-v /opt/qbittorrentee/qb-web:/qb-web \
-v /mnt/u_disk/downloads:/downloads \
--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);