A Docker image for Jacred - a torrent tracker aggregator
3.9K
A Docker image for Jacred - a torrent tracker aggregator that provides a unified API for multiple torrent trackers. This containerized implementation offers enhanced security, multi-architecture support, and automated CI/CD workflows.
amd64, arm64, and arm platformsdocker run -d \
--name jacred \
-p 9117:9117 \
-v jacred-config:/app/config \
-v jacred-data:/app/Data \
--restart unless-stopped \
ghcr.io/pavelpikta/jacred-fdb:latest
version: '3.8'
services:
jacred:
image: ghcr.io/pavelpikta/jacred-fdb:latest
container_name: jacred
restart: unless-stopped
ports:
- "9117:9117"
volumes:
- jacred-config:/app/config
- jacred-data:/app/Data
environment:
- TZ=Europe/London
- UMASK=0027
healthcheck:
test: ["CMD", "wget", "--quiet", "--spider", "http://127.0.0.1:9117"]
interval: 30s
timeout: 15s
retries: 3
start_period: 45s
volumes:
jacred-config:
jacred-data:
| Registry | Image | Description |
|---|---|---|
| GitHub Container Registry | ghcr.io/pavelpikta/jacred-fdb | Latest builds with attestations |
| GitHub Container Registry | ghcr.io/pavelpikta/jacred-fdb:v1.0.0 | Specific version example |
| GitHub Container Registry | ghcr.io/pavelpikta/jacred-fdb:1.0.0 | Specific version example |
| Tag | Description | Update Frequency |
|---|---|---|
latest | Latest stable release from main branch | On new releases |
develop | Development builds from develop branch | On each commit |
v1.2.3 | Specific semantic version | Immutable |
1.2.3 | Specific semantic version | Immutable |
sha-abcd123 | Specific commit SHA | Immutable |
| Variable | Default | Description |
|---|---|---|
TZ | UTC | Container timezone |
UMASK | 0027 | File creation mask |
ASPNETCORE_URLS | http://0.0.0.0:9117 | Application listen address |
ASPNETCORE_ENVIRONMENT | Production | ASP.NET Core environment |
| Path | Purpose | Required |
|---|---|---|
/app/config | Configuration files | ✅ |
/app/Data | Application data and logs | ✅ |
The container automatically creates an initial configuration file (init.conf) on first run:
{
"listenip": "any",
"listenport": 9117,
"apikey": "",
"mergeduplicates": true,
"openstats": true,
"opensync": true,
"log": true,
"syncapi": "http://redapi.cfhttp.top",
"synctrackers": ["rutracker", "rutor", "kinozal", "nnmclub", "megapeer", "bitru", "toloka", "lostfilm", "baibako", "torrentby", "selezen"],
"disable_trackers": ["hdrezka", "anifilm", "anilibria"],
"syncsport": false,
"syncspidr": true,
"maxreadfile": 200,
"tracks": false,
"tracksdelay": 20000,
"tsuri": ["http://127.0.0.1:8090"],
"timeStatsUpdate": 30,
"timeSync": 60,
"evercache": {
"enable": false,
"validHour": 1,
"maxOpenWriteTask": 200,
"dropCacheTake": 200
}
}
/app/init.conf into the persisted /app/config/init.conf volume./app/config/init.conf back to /app/init.conf before Jacred launches.| Path | Contents |
|---|---|
/app/Data/fdb | Jacred database files |
/app/Data/temp | Temporary files such as stats.json |
/app/Data/tracks | Tracker cache and intermediate data |
/app/config/init.conf | Persisted runtime configuration |
| Argument | Default | Description |
|---|---|---|
ALPINE_VERSION | 3.22.2 | Base Alpine Linux version |
JACRED_VERSION | dd15c374... | Jacred source commit SHA |
DOTNET_VERSION | 9.0 | .NET runtime version |
The Docker image uses a multi-stage build process:
jacred (UID: 1000)Verify image signatures and attestations:
# Install cosign
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign
# Verify attestation
cosign verify-attestation \
--type slsaprovenance \
--certificate-identity-regexp 'https://github\.com/pavelpikta/docker-jacred-fdb/\.github/workflows/.+' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ghcr.io/pavelpikta/jacred-fdb:latest
The container includes a built-in health check that verifies the application is responding:
HEALTHCHECK --interval=30s \
--timeout=15s \
--start-period=45s \
--retries=3 \
--start-interval=5s \
CMD wget --quiet --spider http://127.0.0.1:9117 || exit 1
# View real-time logs
docker logs -f jacred
# View logs with timestamps
docker logs -t jacred
# Check container health
docker inspect jacred --format='{{.State.Health.Status}}'
# View health check logs
docker inspect jacred --format='{{range .State.Health.Log}}{{.Output}}{{end}}'
# Check container logs
docker logs jacred
# Verify volume mounts
docker inspect jacred --format='{{range .Mounts}}{{.Source}}:{{.Destination}} {{.Mode}}{{end}}'
# Fix volume permissions
sudo chown -R 1000:1000 /path/to/your/volumes
# Recreate default configuration
docker exec jacred rm -f /app/config/init.conf
docker restart jacred
Run container with debug output:
docker run --rm -it \
-p 9117:9117 \
-v jacred-config:/app/config \
ghcr.io/pavelpikta/jacred-fdb:latest \
/bin/sh
docker pull ghcr.io/pavelpikta/jacred-fdb:latestdocker logs jacred.Backup configuration:
docker run --rm \
-v jacred-config:/app/config \
-v "$(pwd)":/backup \
alpine tar czf /backup/jacred-config.tar.gz -C /app config
Backup data by swapping the volume for -v jacred-data:/app/Data and adjusting the archive name.
Restore by extracting the archives into the respective named volumes before starting the container.
We welcome contributions! Please see our contributing guidelines:
Fork the repository
Create a feature branch: git checkout -b feature/amazing-feature
Commit your changes using Conventional Commits:
git commit -m "feat: add amazing new feature"
Push to the branch: git push origin feature/amazing-feature
Open a Pull Request
We use Conventional Commits for automated versioning:
feat: - New features (minor version bump)fix: - Bug fixes (patch version bump)docs: - Documentation changesci: - CI/CD changeschore: - Maintenance tasksBREAKING CHANGE: - Breaking changes (major version bump)# Clone the repository
git clone https://github.com/pavelpikta/docker-jacred-fdb.git
cd docker-jacred-fdb
# Build locally
docker build -t jacred-fdb:local .
# Test the build
docker run --rm -p 9117:9117 jacred-fdb:local
This project is licensed under the Apache License 2.0.
If this project helped you, please consider giving it a ⭐!
Content type
Image
Digest
sha256:53e7d7ab9…
Size
100.8 MB
Last updated
6 months ago
docker pull ppikta/jacred-fdb