mirror of
https://github.com/journey-ad/Bitmagnet-Next-Web
synced 2024-11-22 10:13:07 +00:00
522c7eea58
By using quotes to specify exact search terms and considering the part of speech of the tokenizer to determine whether each keyword is required or optional, search performance is improved. |
||
---|---|---|
.github/workflows | ||
.readme | ||
.vscode | ||
app | ||
components | ||
config | ||
i18n | ||
lib | ||
public | ||
styles | ||
types | ||
utils | ||
.dockerignore | ||
.eslintignore | ||
.eslintrc.json | ||
.gitignore | ||
.npmrc | ||
.prettierrc.js | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
next.config.js | ||
package.json | ||
postcss.config.js | ||
README_zh-CN.md | ||
README.md | ||
tailwind.config.js | ||
tsconfig.json |
Bitmagnet-Next-Web
English / 中文文档
A more modern magnet search website program, developed using Next.js 14 + NextUI v2, with the backend powered by Bitmagnet.
Deployment Instructions
Container Deployment
The most convenient way to deploy is using Docker Compose. Refer to the docker-compose.yml
Running with docker run
If not using Docker Compose, you can run each container separately using the following commands:
- Run the PostgreSQL container:
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
- Run the Bitmagnet container:
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
- Run the Bitmagnet-Next-Web container:
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
Full-Text Search Optimization
The search capability relies on the torrents.name
and torrent_files.path
columns. The original Bitmagnet does not index these columns, so it's recommended to create indexes to improve query efficiency:
create extension pg_trgm; -- Enable pg_trgm extension
-- Create indexes on `torrents.name` and `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);
Development Guide
Before starting development, create a .env.local
file in the project root directory and fill in the environment variables:
# .env.local
POSTGRES_DB_URL=postgres://postgres:postgres@localhost:5432/bitmagnet
It's recommended to use pnpm
as the package manager.
Install Dependencies
pnpm install
Run Development Environment
pnpm run dev
Build & Deploy
pnpm run build
pnpm run serve
Credits
License
Licensed under the MIT license.