splited services
This commit is contained in:
parent
5b4c971525
commit
0e2606425e
35
Dockerfile
35
Dockerfile
@ -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
28
aniworld/Dockerfile
Normal 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"]
|
||||||
@ -1,6 +1,7 @@
|
|||||||
#!/usr/share/env bash
|
#!/usr/share/env bash
|
||||||
|
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 12345
|
||||||
bash /services/i2psnark/launch-i2psnark &
|
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/aniworlddownnloader_venv/bin/aniworld --web-ui --no-browser --web-expose --web-port 3000 --output-dir /data/aniworld_downloads &
|
||||||
|
|
||||||
while true; do sleep 1000; done
|
while true; do sleep 1000; done
|
||||||
14
aniworld/redsocks.conf
Normal file
14
aniworld/redsocks.conf
Normal 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";
|
||||||
|
}
|
||||||
99
compose.yml
99
compose.yml
@ -1,69 +1,59 @@
|
|||||||
services:
|
services:
|
||||||
volume_init:
|
aniworld:
|
||||||
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:
|
build:
|
||||||
context: .
|
context: aniworld
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
target: base
|
target: base
|
||||||
|
args:
|
||||||
|
- "PROXY_SERVER=i2pendpoint.arpa"
|
||||||
|
- "PROXY_PORT=4444"
|
||||||
pull_policy: build
|
pull_policy: build
|
||||||
image: katzenkralle/web_served:latest
|
image: katzenkralle/aniworld_served:latest
|
||||||
depends_on:
|
|
||||||
volume_init:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
- proxy
|
- proxy
|
||||||
|
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
- NET_RAW
|
||||||
|
|
||||||
volumes:
|
|
||||||
- type: volume
|
#volumes:
|
||||||
source: config
|
# - data_aniworld:/data/aniworld_downloads
|
||||||
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:
|
labels:
|
||||||
traefik.enable: true
|
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.service: aniworld
|
||||||
traefik.http.routers.aniworld.rule: Host(`aniworld.arpa.urmel.de`)
|
traefik.http.routers.aniworld.rule: Host(`aniworld.arpa.urmel.de`)
|
||||||
traefik.http.routers.aniworld.tls: "true"
|
traefik.http.routers.aniworld.tls: "true"
|
||||||
traefik.http.routers.aniworld.tls.certresolver: hetzner
|
traefik.http.routers.aniworld.tls.certresolver: hetzner
|
||||||
traefik.http.services.aniworld.loadbalancer.server.port: 3000
|
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:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
@ -71,5 +61,14 @@ networks:
|
|||||||
name: urmel_proxy_exposed
|
name: urmel_proxy_exposed
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data_i2psnark:
|
||||||
config:
|
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
27
i2psnark/Dockerfile
Normal 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
5
i2psnark/entrypoint.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/share/env bash
|
||||||
|
|
||||||
|
sh /services/i2psnark/launch-i2psnark &
|
||||||
|
|
||||||
|
while true; do sleep 1000; done
|
||||||
Loading…
x
Reference in New Issue
Block a user