diff --git a/.github/workflows/latest_docker_image.yml b/.github/workflows/latest_docker_image.yml new file mode 100644 index 0000000..675398c --- /dev/null +++ b/.github/workflows/latest_docker_image.yml @@ -0,0 +1,61 @@ +name: MultiArchDockerLatest + +on: + push: + branches: + - main + +jobs: + docker: + name: Build multi-arch Docker image. + runs-on: ubuntu-latest + steps: + - name: tag number + run : echo ${{ github.event.release.tag_name }} + + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + with: + install: true + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set lower case owner name + run: | + echo "REG_REPO=${REPO,,}" >> ${GITHUB_ENV} + env: + REPO: '${{ github.repository }}' + + - name: Check env + run: | + echo ${{ env.REG_REPO }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/jacred:latest + ghcr.io/${{ env.REG_REPO }}:latest + cache-from: type=gha,scope=${{ github.workflow }} + cache-to: type=gha,mode=max,scope=${{ github.workflow }} diff --git a/.github/workflows/release_docker_image.yml b/.github/workflows/release_docker_image.yml new file mode 100644 index 0000000..29eef55 --- /dev/null +++ b/.github/workflows/release_docker_image.yml @@ -0,0 +1,62 @@ +name: MultiArchDockerRelease + +on: + release: + types: [published] + +jobs: + docker: + name: Build multi-arch Docker image. + runs-on: ubuntu-latest + steps: + - name: tag number + run : echo ${{ github.event.release.tag_name }} + + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + with: + install: true + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set lower case owner name + run: | + echo "REG_REPO=${REPO,,}" >> ${GITHUB_ENV} + env: + REPO: '${{ github.repository }}' + + - name: Check env + run: | + echo ${{ env.REG_REPO }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/jacred:latest + ${{ secrets.DOCKERHUB_USERNAME }}/jacred:${{ github.event.release.tag_name }} + ghcr.io/${{ env.REG_REPO }}:latest + ghcr.io/${{ env.REG_REPO }}:${{ github.event.release.tag_name }} + cache-from: type=gha,scope=${{ github.workflow }} + cache-to: type=gha,mode=max,scope=${{ github.workflow }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..24b151d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +### BUILD JACRED MULTIARCH START ### +FROM --platform=$BUILDPLATFORM alpine AS builder + +WORKDIR /app + +# Get and unpack JacRed +RUN apk --no-cache --update add bash wget unzip +RUN wget https://github.com/immisterio/jacred-fdb/releases/latest/download/publish.zip +RUN unzip -o publish.zip +RUN rm -f publish.zip +### BUILD JACRED MULTIARCH END ### + +# ### BUILD MAIN IMAGE START ### +FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine + +ENV JACRED_HOME=/home/jacred +ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false + +COPY --from=builder /app $JACRED_HOME/ + +RUN apk --no-cache --update add icu-libs + +WORKDIR $JACRED_HOME + +EXPOSE 9117 + +VOLUME [ "$JACRED_HOME" ] + +ENTRYPOINT ["dotnet", "JacRed.dll"] +### BUILD MAIN IMAGE end ### \ No newline at end of file diff --git a/README.md b/README.md index 9927fa5..56e677c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,47 @@ # Установка + +#### Linux +```bash curl -s https://raw.githubusercontent.com/immisterio/jacred-fdb/main/install.sh | bash +``` + +### Docker & Docker Compose + +```bash +docker run --rm -d --privileged --name jacred -p 9117:9117 gentslava/jacred:latest +``` + +Для работы в режиме постоянного хранения просто подключите том к контейнеру, добавив `-v ~/jacred/Data:/home/jacred/Data`, где путь к папке `~/jacred/Data` — это базовый путь, можно указать свой. Пример команды: + +```bash +docker run --rm -d --privileged --name jacred -v ~/jacred/Data:/home/jacred/Data -p 9117:9117 gentslava/jacred:latest +``` + +Вы можете указать путь до init.conf файла, где определены настройки работы приложения, добавив `-v ~/jacred/init.conf:/home/jacred/init.conf`. Пример команды: + +```bash +docker run --rm -d --privileged --name jacred -v ~/jacred/init.conf:/home/jacred/init.conf -v ~/jacred/Data:/home/jacred/Data -p 9117:9117 gentslava/jacred:latest +``` + +#### Docker Compose + +```yml +# docker-compose.yml + +version: '3.3' +services: + jacred: + image: gentslava/jacred + container_name: jacred + volumes: + - ~/jacred/init.conf:/home/jacred/init.conf + - ~/jacred/Data:/home/jacred/Data + ports: + - 9117:9117 + restart: unless-stopped + privileged: true + +``` * ПО УМОЛЧАНИЯ НАСТРОЕНА СИНХРОНИЗАЦИЯ БАЗЫ С ВНЕШНЕГО СЕРВЕРА @@ -8,7 +50,7 @@ Kinozal, Nnmclub, Rutor, Torrentby, Bitru, Rutracker, Megapeer, Selezen, Toloka # Самостоятельный парсинг источников 1. Настроить init.conf (пример настроек в example.conf) -2. Перенести в crontab "Data/crontab" или указать сервер "syncapi" в init.conf +2. Перенести в crontab "Data/crontab" или указать сервер "syncapi" в init.conf # Доступ к доменам .onion 1. Запустить tor на порту 9050 @@ -16,24 +58,24 @@ Kinozal, Nnmclub, Rutor, Torrentby, Bitru, Rutracker, Megapeer, Selezen, Toloka # Параметры init.conf * apikey - включение авторизации по ключу -* mergeduplicates - объединять дубликаты в выдаче -* openstats - открыть доступ к статистике +* mergeduplicates - объединять дубликаты в выдаче +* openstats - открыть доступ к статистике * opensync - разрешить синхронизацию с базой через syncapi -* syncapi - источник с открытым opensync для синхронизации базы -* timeSync - интервал синхронизации с базой syncapi -* maxreadfile - максимальное количество открытых файлов за один поисковый запрос +* syncapi - источник с открытым opensync для синхронизации базы +* timeSync - интервал синхронизации с базой syncapi +* maxreadfile - максимальное количество открытых файлов за один поисковый запрос * evercache - хранить открытые файлы в кеше (рекомендуется для общего доступа с высокой нагрузкой) * timeStatsUpdate - интервал обновления статистики в минутах # Пример init.conf -* Список всех параметров, а так же значения по умолчанию смотреть в example.conf +* Список всех параметров, а так же значения по умолчанию смотреть в example.conf * В init.conf нужно указывать только те параметры, которые хотите изменить ``` { "listenport": 9120, // изменили порт - "NNMClub": { // изменили домен на адрес из сети tor + "NNMClub": { // изменили домен на адрес из сети tor "alias": "http://nnmclub2vvjqzjne6q4rrozkkkdmlvnrcsyes2bbkm7e5ut2aproy4id.onion" }, "globalproxy": [ diff --git a/privoxy.config b/privoxy.config new file mode 100644 index 0000000..87b747b --- /dev/null +++ b/privoxy.config @@ -0,0 +1,25 @@ +# Generally, this file goes in /etc/privoxy/config +# +# Tor listens as a SOCKS5 proxy here: +forward-socks5 / 127.0.0.1:9050 . +confdir /etc/privoxy +logdir /var/log/privoxy +# actionsfile standard # Internal purpose, recommended +actionsfile default.action # Main actions file +actionsfile user.action # User customizations +filterfile default.filter + +# Don't log interesting things, only startup messages, warnings and errors +logfile logfile +#jarfile jarfile +#debug 0 # show each GET/POST/CONNECT request +debug 4096 # Startup banner and warnings +debug 8192 # Errors - *we highly recommended enabling this* + +user-manual /usr/share/doc/privoxy/user-manual +listen-address 127.0.0.1:8118 +toggle 1 +enable-remote-toggle 0 +enable-edit-actions 0 +enable-remote-http-toggle 0 +buffer-limit 4096 \ No newline at end of file