lala.im:bitmagnet:一个DHT爬虫、种子搜索引擎

運維技術·lala.im · 04-19 · 118 人浏览

原文地址:https://lala.im/9071.html,請支持原作者!該處僅作轉載。

官网:https://bitmagnet.io,项目地址:https://github.com/bitmagnet-io/bitmagnet
部署环境:Debian12,内存至少4GB。
安装需要用到的软件包:

apt -y update
apt -y install curl nginx python3-certbot-nginx apache2-utils
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

创建目录和compose文件:

mkdir -p /opt/bitmagnet && cd /opt/bitmagnet && nano docker-compose.yml

写入如下内容:

services:
  bitmagnet:
    image: ghcr.io/bitmagnet-io/bitmagnet:latest
    container_name: bitmagnet
    ports:
      - "127.0.0.1:3333:3333"
      - "3334:3334/tcp"
      - "3334:3334/udp"
    restart: unless-stopped
    environment:
      - POSTGRES_HOST=postgres
      - POSTGRES_PASSWORD=hidden
    #      - TMDB_API_KEY=your_api_key
    command:
      - worker
      - run
      - --keys=http_server
      - --keys=queue_server
      - --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
    restart: unless-stopped
    environment:
      - POSTGRES_PASSWORD=hidden
      - POSTGRES_DB=bitmagnet
      - PGUSER=postgres
    shm_size: 1g
    healthcheck:
      test:
        - CMD-SHELL
        - pg_isready
      start_period: 20s
      interval: 10s

启动:

docker compose up -d

因bitmagnet目前没有实现身份认证功能,并且在webui内可以删除种子信息,如果暴露在公网上非常不安全。
为解决这个问题,我在上述配置中将3333端口(webui端口)监听在本地,然后用nginx去反代,这样就可以配置一个http basic验证。
如果你不打算暴露在公网运行,仅在自己的nas、homelab等局域网环境运行则无需反代。
创建htpasswd文件:

htpasswd -c /etc/nginx/.htpasswd imlala

新建nginx站点配置文件:

nano /etc/nginx/sites-available/bitmagnet

写入如下配置:

upstream bitmagnet {
    server 127.0.0.1:3333;
}

server {
    listen 80;
    server_name bitmagnet.example.com;

    location / {
        auth_basic "auth";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://bitmagnet;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/bitmagnet /etc/nginx/sites-enabled/bitmagnet

申请tls证书:

certbot --nginx --email [email protected] --agree-tos --no-eff-email

下面是我搭建的一个实例,运行了差不多1天,爬了12万多的数据:

範例
此时的资源占用情况如下,CPU是i5-6500t,一直在27左右,内存一共吃了大概3GB:

範例

運維技術 Docker
Theme Jasmine by Kent Liao