Compare commits

...

10 Commits

8 changed files with 136 additions and 81 deletions

View File

@ -1,27 +1,13 @@
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
python3
# Install AniworldDownloader
RUN python3 -m venv aniworlddownnloader_venv && \
aniworlddownnloader_venv/bin/pip install aniworld && \
mkdir /data/aniworld_downloads
RUN mkdir services
RUN python3 -m venv services/aniworlddownloader_venv && \
services/aniworlddownloader_venv/bin/pip install --no-cache-dir aniworld
WORKDIR /
COPY entrypoint.sh /entrypoint.sh

25
aniworld/Dockerfile.i2p Normal file
View File

@ -0,0 +1,25 @@
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 -p /services /var/aniworld
WORKDIR /services
RUN python3 -m venv aniworlddownloader_venv && \
aniworlddownloader_venv/bin/pip install --no-cache-dir aniworld
WORKDIR /
COPY entrypoint.sh.i2p /entrypoint.sh
ENTRYPOINT ["sh", "/entrypoint.sh"]

View File

@ -1,7 +1,6 @@
#!/usr/share/env bash
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 &
/services/aniworlddownloader_venv/bin/aniworld --web-ui --no-browser --web-expose --web-port 3000 --output-dir /var/aniworld/downloads &
while true; do sleep 1000; done

8
aniworld/entrypoint.sh.i2p Executable file
View File

@ -0,0 +1,8 @@
#!/usr/share/env bash
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/aniworlddownloader_venv/bin//aniworld --web-ui --no-browser --web-expose --web-port 3000 --output-dir /var/aniworld/downloads &
while true; do sleep 1000; done

15
aniworld/wg0.conf Normal file
View File

@ -0,0 +1,15 @@
[Interface]
# Key for proxmoxADS
# Bouncing = 2
# NAT-PMP (Port Forwarding) = off
# VPN Accelerator = on
# Table = off
PrivateKey = uPGxlIrs0+erepQsbnkld/aBde7qd7HwwsMrGaNtGUg=
Address = 10.2.0.2/32
DNS = 10.2.0.1
[Peer]
# NL-FREE#136
PublicKey = 8xx8LqTpTHCEWou3Wu43p2CaEqnO9kcKQrLb+C8fZw8=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 169.150.218.70:51820

View File

@ -1,33 +1,75 @@
services:
aniworld:
build:
context: aniworld
dockerfile: Dockerfile
target: base
args:
- "PROXY_SERVER=i2pendpoint.arpa"
- "PROXY_PORT=4444"
pull_policy: build
image: katzenkralle/aniworld_served:latest
version: "3.8"
configs:
wg0_conf:
file: ./aniworld/wg0.conf
services:
wireguard:
image: linuxserver/wireguard
cap_add:
- NET_ADMIN # Required for networking changes
- SYS_MODULE # Optional for WireGuard modules
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
restart: unless-stopped
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
configs:
- source: wg0_conf
target: /config/wg0.conf
networks:
- proxy
cap_add:
- NET_ADMIN
- NET_RAW
#volumes:
# - data_aniworld:/data/aniworld_downloads
labels:
traefik.enable: true
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
traefik.http.services.aniworld.loadbalancer.server.port: 8080
traefik.http.routers.aniworld.middlewares: local-only@file, traefik-auth@file
aniworld:
image: ghcr.io/phoenixthrush/aniworld-downloader:latest
user: "0:0"
network_mode: "service:wireguard"
restart: unless-stopped
volumes:
- data_aniworld:/app/Downloads
- config_aniworld:/home/aniworld/.aniworld
bittorrent:
image: linuxserver/qbittorrent:5.1.4
networks:
- proxy
volumes:
- config_qbittorrent:/config
- data_qbittorrent:/downloads
ports:
- 6881:6881
- 6881:6881/udp
environment:
- PUID=0
- PGID=0
- TZ=Europe/Berlin
labels:
traefik.enable: true
traefik.http.routers.qb.rule: "Host(`qbittorrent.arpa.urmel.de`)"
traefik.http.routers.qb.tls: "true"
traefik.http.routers.qb.tls.certresolver: hetzner
traefik.http.services.qb.loadbalancer.server.port: "8080"
traefik.http.middlewares.qb-headers.headers.customRequestHeaders.X-Frame-Options: SAMEORIGIN
traefik.http.middlewares.qb-headers.headers.customRequestHeaders.Referer: ""
traefik.http.middlewares.qb-headers.headers.customRequestHeaders.Origin: ""
traefik.http.routers.qb.middlewares: local-only@file, traefik-auth@file, qb-headers
traefik.http.services.qb.loadbalancer.passhostheader: "false"
i2psnark:
image: ypopovych/i2psnark:latest
@ -43,22 +85,25 @@ services:
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.rule: "Host(`i2psnark.arpa.urmel.de`) && (PathPrefix(`/i2psnark/`) || Path(`/`))"
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-redirect.redirectregex.regex: "^/$"
traefik.http.middlewares.i2psnark-redirect.redirectregex.replacement: "/i2psnark/"
traefik.http.middlewares.i2psnark-redirect.redirectregex.permanent: "true"
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
traefik.http.routers.i2psnark.middlewares: local-only@file, traefik-auth@file, i2psnark-redirect, i2psnark-headers
networks:
proxy:
external: true
name: urmel_proxy_exposed
name: traefik_exposed
volumes:
data_i2psnark:
@ -66,9 +111,18 @@ volumes:
type: nfs4
o: addr=217.100.0.2,rw,noatime,tcp
device: ":/mnt/Main/servicesData/i2psnark"
config_i2psnark:
data_aniworld:
driver_opts:
type: nfs4
o: addr=217.100.0.2,rw,noatime,tcp
device: ":/mnt/Main/servicesData/aniworld"
config_i2psnark:
config_aniworld:
config_qbittorrent:
data_qbittorrent:
driver_opts:
type: nfs4
o: addr=217.100.0.2,rw,noatime,tcp
device: ":/mnt/Main/servicesData/qbittorrent"

View File

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

View File

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