splited services

This commit is contained in:
Kyattsukuro 2025-12-29 17:20:46 +01:00
parent 5b4c971525
commit 0e2606425e
7 changed files with 126 additions and 87 deletions

View File

@ -1,35 +0,0 @@
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"]

28
aniworld/Dockerfile Normal file
View File

@ -0,0 +1,28 @@
FROM alpine:3.20 AS base
ARG PROXY_SERVER
ARG PROXY_PORT
RUN apk add --no-cache \
python3 \
iptables
ADD https://github.com/semigodking/redsocks/releases/download/release-0.71/redsocks2-x86_64-release-0.71 /bin/redsocks2
RUN chmod +x /bin/redsocks2
COPY redsocks.conf /etc/redsocks.conf
RUN sed -i "s/vPROXY-SERVER/${PROXY_SERVER}/g" /etc/redsocks.conf && \
sed -i "s/vPROXY-PORT/${PROXY_PORT}/g" /etc/redsocks.conf
RUN mkdir /services && mkdir /data
WORKDIR /services
# 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"]

View File

@ -1,6 +1,7 @@
#!/usr/share/env bash
bash /services/i2psnark/launch-i2psnark &
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 12345
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-port 12345
redsocks2 -c /etc/redsocks.conf
/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

14
aniworld/redsocks.conf Normal file
View File

@ -0,0 +1,14 @@
base {
log_debug = off;
log_info = on;
log = "file:/var/log/redsocks.log";
daemon = on;
user = root;
group = root;
redirector = iptables;
}
redsocks {
bind = "127.0.0.1:12345";
relay= "vPROXY-SERVER:vPROXY-PORT";
type = "http-connect";
}

View File

@ -1,69 +1,59 @@
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:
aniworld:
build:
context: .
context: aniworld
dockerfile: Dockerfile
target: base
args:
- "PROXY_SERVER=i2pendpoint.arpa"
- "PROXY_PORT=4444"
pull_policy: build
image: katzenkralle/web_served:latest
depends_on:
volume_init:
condition: service_completed_successfully
image: katzenkralle/aniworld_served:latest
networks:
- proxy
cap_add:
- NET_ADMIN
- NET_RAW
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
#volumes:
# - data_aniworld:/data/aniworld_downloads
labels:
traefik.enable: true
traefik.http.routers.i2psnark.service: i2psnark
traefik.http.routers.i2psnark.rule: Host(`i2psnark.arpa.urmel.de`)
traefik.http.routers.i2psnark.tls: "true"
traefik.http.routers.i2psnark.tls.certresolver: hetzner
traefik.http.services.i2psnark.loadbalancer.server.port: 8002
traefik.http.routers.aniworld.service: aniworld
traefik.http.routers.aniworld.rule: Host(`aniworld.arpa.urmel.de`)
traefik.http.routers.aniworld.tls: "true"
traefik.http.routers.aniworld.tls.certresolver: hetzner
traefik.http.services.aniworld.loadbalancer.server.port: 3000
i2psnark:
image: ypopovych/i2psnark:latest
volumes:
- config_i2psnark:/snark/config
- data_i2psnark:/snark/downloads
networks:
- proxy
environment:
HOSTNAMES: "i2psnark.arpa.urmel.de"
I2CP_HOST: "i2pendpoint.arpa"
restart: "on-failure"
labels:
traefik.enable: true
traefik.http.routers.i2psnark.rule: Host(`i2psnark.arpa.urmel.de`) && PathPrefix(`/i2psnark/`)
traefik.http.routers.i2psnark.entrypoints: https
traefik.http.routers.i2psnark.tls: "true"
traefik.http.routers.i2psnark.tls.certresolver: hetzner
traefik.http.routers.i2psnark.service: i2psnark
traefik.http.services.i2psnark.loadbalancer.server.port: "8002"
traefik.http.middlewares.i2psnark-headers.headers.customRequestHeaders.Host: i2psnark.arpa.urmel.de
traefik.http.middlewares.i2psnark-headers.headers.customRequestHeaders.X-Forwarded-Proto: https
traefik.http.routers.i2psnark.middlewares: i2psnark-headers
networks:
proxy:
@ -71,5 +61,14 @@ networks:
name: urmel_proxy_exposed
volumes:
data:
config:
data_i2psnark:
driver_opts:
type: nfs4
o: addr=217.100.0.2,rw,noatime,tcp
device: ":/mnt/Main/servicesData/i2psnark"
data_aniworld:
driver_opts:
type: nfs4
o: addr=217.100.0.2,rw,noatime,tcp
device: ":/mnt/Main/servicesData/aniworld"
config_i2psnark:

27
i2psnark/Dockerfile Normal file
View File

@ -0,0 +1,27 @@
FROM alpine:3.20 AS base
RUN apk add --no-cache \
openjdk21-jre-headless \
unzip \
wget
RUN mkdir /services
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 /services/i2psnark_config/i2psnark.config.d && \
mv i2psnark/jetty-i2psnark.xml /services/i2psnark_config/ && \
mv i2psnark/i2psnark-appctx.config /services/i2psnark_config/ && \
ln -s /services/i2psnark_config/jetty-i2psnark.xml i2psnark/jetty-i2psnark.xml && \
ln -s /services/i2psnark_config/i2psnark-appctx.config i2psnark/i2psnark-appctx.config && \
ln -s /services/i2psnark_config/i2psnark.config.d i2psnark/i2psnark.config.d
WORKDIR /
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["sh", "/entrypoint.sh"]

5
i2psnark/entrypoint.sh Executable file
View File

@ -0,0 +1,5 @@
#!/usr/share/env bash
sh /services/i2psnark/launch-i2psnark &
while true; do sleep 1000; done