Nas> 正文

Docker下安装常用容器

2023-03-07T00:46:04+08:00

  这篇文章简单记录一下安装一些常用工具的过程以及遇到的问题,希望能对有需要的小伙伴提供一些帮助。

一、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,可以使用以下命令分别运行各个容器:

  1. 运行 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
  1. 运行 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
  1. 运行 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.nametorrent_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);
分享到:

Ranvane的日常记录

关于我们 客服中心 广告服务 法律声明