86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
| FROM ubuntu:22.04
 | |
| 
 | |
| ARG DEBIAN_FRONTEND="noninteractive"
 | |
| ENV DUMB_INIT_BASE_URL="https://github.com/Yelp/dumb-init/releases/download/v1.2.5"
 | |
| 
 | |
| # Step 1: Install prerequisites
 | |
| RUN apt-get update && apt-get -y install curl software-properties-common
 | |
| 
 | |
| # Step 2: Add the Deluge PPA and update apt cache
 | |
| RUN add-apt-repository -u ppa:deluge-team/stable && apt-get update
 | |
| 
 | |
| # Step 3: Download dumb-init asset based on architecture
 | |
| RUN arch=$(dpkg --print-architecture) && \
 | |
|     if [ "$arch" = "arm64" ]; then \
 | |
|       asset="dumb-init_1.2.5_aarch64"; \
 | |
|     elif [ "$arch" = "amd64" ]; then \
 | |
|       asset="dumb-init_1.2.5_amd64.deb"; \
 | |
|     else \
 | |
|       echo "Unsupported architecture: $arch" && exit 1; \
 | |
|     fi && \
 | |
|     echo "Downloading dumb-init asset: $asset" && \
 | |
|     curl -Lo /tmp/dumb-init "$DUMB_INIT_BASE_URL/$asset"
 | |
| 
 | |
| # Step 4: Install dumb-init based on asset type
 | |
| RUN arch=$(dpkg --print-architecture) && \
 | |
|     if [ "$arch" = "amd64" ]; then \
 | |
|       dpkg-deb -x /tmp/dumb-init /tmp/dumb-init-dir && \
 | |
|       cp /tmp/dumb-init-dir/usr/bin/dumb-init /usr/local/bin/dumb-init; \
 | |
|     elif [ "$arch" = "amd64" ]; then \
 | |
|       cp /tmp/dumb-init /usr/local/bin/dumb-init; \
 | |
|     else \
 | |
|       echo "Unsupported architecture: $arch" && exit 1; \
 | |
|     fi && \
 | |
|     chmod +x /usr/local/bin/dumb-init && \
 | |
|     rm -rf /tmp/dumb-init /tmp/dumb-init-dir
 | |
| 
 | |
| # Step 5: Install other dependencies
 | |
| RUN apt-get -y install iputils-ping dnsutils bash jq net-tools openvpn curl ufw deluged deluge-web p7zip-full unrar unzip
 | |
| 
 | |
| # Step 6: Clean up apt cache and temporary files
 | |
| RUN rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
 | |
| 
 | |
| # Step 7: Add the user "abc"
 | |
| RUN groupmod -g 1000 users && \
 | |
|     useradd -u 911 -U -d /config -s /bin/false abc && \
 | |
|     usermod -G users abc
 | |
| 
 | |
| # Step 8: Copy configuration and scripts
 | |
| COPY root/ /
 | |
| 
 | |
| # Step 9: Set environment variables
 | |
| ENV OPENVPN_USERNAME=**None** \
 | |
|     OPENVPN_PASSWORD=**None** \
 | |
|     OPENVPN_PROVIDER=**None** \
 | |
|     GLOBAL_APPLY_PERMISSIONS=true \
 | |
|     TZ=Europe/Berlin \
 | |
|     DELUGE_WEB_PORT=8112 \
 | |
|     DELUGE_DEAMON_PORT=58846 \
 | |
|     DELUGE_DOWNLOAD_DIR=/download/completed \
 | |
|     DELUGE_INCOMPLETE_DIR=/download/incomplete \
 | |
|     DELUGE_TORRENT_DIR=/download/torrents \
 | |
|     DELUGE_WATCH_DIR=/download/watch \
 | |
|     CREATE_TUN_DEVICE=true \
 | |
|     ENABLE_UFW=false \
 | |
|     UFW_ALLOW_GW_NET=false \
 | |
|     UFW_EXTRA_PORTS= \
 | |
|     UFW_DISABLE_IPTABLES_REJECT=false \
 | |
|     PUID= \
 | |
|     PGID= \
 | |
|     UMASK=022 \
 | |
|     PEER_DNS=true \
 | |
|     PEER_DNS_PIN_ROUTES=true \
 | |
|     DROP_DEFAULT_ROUTE= \
 | |
|     HEALTH_CHECK_HOST=google.com \
 | |
|     LOG_TO_STDOUT=false \
 | |
|     DELUGE_LISTEN_PORT_LOW=53394 \
 | |
|     DELUGE_LISTEN_PORT_HIGH=53404 \
 | |
|     DELUGE_OUTGOING_PORT_LOW=63394 \
 | |
|     DELUGE_OUTGOING_PORT_HIGH=63404
 | |
| 
 | |
| # Step 10: Configure health check and expose ports
 | |
| HEALTHCHECK --interval=1m CMD /etc/scripts/healthcheck.sh
 | |
| EXPOSE 8112 58846
 | |
| 
 | |
| # Step 11: Set default command
 | |
| CMD ["/usr/local/bin/dumb-init", "/etc/openvpn/init.sh"] |