commit 4e3b21a84c87a53008d46709dd2433c234c18e19 Author: Kyattsukuro Date: Sun Dec 28 18:08:22 2025 +0100 init diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..65fb277 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM alpine:3.20 AS base + +RUN apk add --no-cache \ + python3 \ + git \ + openjdk21-jre-headless \ + unzip \ + wget \ + bash + +RUN mkdir /services && mkdir /data +WORKDIR /services + + +# Install i2psnark +RUN wget https://i2pplus.github.io/installers/i2psnark-standalone.zip -O i2psnark-standalone.zip && \ + unzip i2psnark-standalone.zip && \ + rm i2psnark-standalone.zip +RUN mkdir -p /data/i2psnark_config/i2psnark.config.d && \ + mv i2psnark/jetty-i2psnark.xml /data/i2psnark_config/ && \ + mv i2psnark/i2psnark-appctx.config /data/i2psnark_config/ && \ + ln -s /data/i2psnark_config/jetty-i2psnark.xml i2psnark/jetty-i2psnark.xml && \ + ln -s /data/i2psnark_config/i2psnark-appctx.config i2psnark/i2psnark-appctx.config && \ + ln -s /data/i2psnark_config/i2psnark.config.d i2psnark/i2psnark.config.d + + + +# Install AniworldDownloader +RUN python3 -m venv aniworlddownnloader_venv && \ + aniworlddownnloader_venv/bin/pip install aniworld && \ + mkdir /data/aniworld_downloads + +WORKDIR / +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["sh", "/entrypoint.sh"] diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..468ffcf --- /dev/null +++ b/compose.yml @@ -0,0 +1,70 @@ +services: + volume_init: + image: alpine:latest + container_name: volume_init + command: + - sh + - -c + - | + mkdir -p /data/i2psnark + mkdir -p /data/aniworld + mkdir -p /config/i2psnark + volumes: + - data:/data + - config:/config + restart: "no" + + deb_services: + build: + context: . + dockerfile: Dockerfile + target: base + pull_policy: build + image: katzenkralle/web_served:latest + depends_on: + volume_init: + condition: service_completed_successfully + + networks: + - proxy + + volumes: + - type: volume + source: config + target: /data/i2psnark_config + volume: + nocopy: false + subpath: i2psnark + + - type: volume + source: data + target: /services/i2psnark/i2psnark + volume: + nocopy: false + subpath: i2psnark + + - type: volume + source: data + target: /data/aniworld_downloads + volume: + nocopy: false + subpath: aniworld + + labels: + traefik.enable: true + traefik.http.routers.i2psnark.service: i2psnark + traefik.http.routers.i2psnark.rule: Host(`i2psnark.localservices.arpa`) + traefik.http.services.i2psnark.loadbalancer.server.port: 8002 + traefik.http.routers.aniworld.service: aniworld + traefik.http.routers.aniworld.rule: Host(`aniworld.localservices.arpa`) + traefik.http.services.aniworld.loadbalancer.server.port: 3000 + + +networks: + proxy: + external: true + name: urmel_proxy_exposed + +volumes: + data: + config: diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..ce19d7d --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,6 @@ +#!/usr/share/env bash + +bash /services/i2psnark/launch-i2psnark & +/services/aniworlddownnloader_venv/bin/aniworld --web-ui --no-browser --web-expose --web-port 3000 --output-dir /data/aniworld_downloads & + +while true; do sleep 1000; done \ No newline at end of file