Compare commits
1 Commits
main
...
ab23b35825
Author | SHA1 | Date | |
---|---|---|---|
ab23b35825 |
130
.drone.yml
130
.drone.yml
@@ -1,130 +0,0 @@
|
|||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: amd64-main
|
|
||||||
node_selector: # Ensure this runs on an amd64 runner
|
|
||||||
kubernetes.io/arch: amd64
|
|
||||||
trigger: # Only run on pushes to the main branch
|
|
||||||
event: [ push ]
|
|
||||||
branch: [ main ]
|
|
||||||
steps:
|
|
||||||
- name: build_push_amd64_latest
|
|
||||||
image: plugins/docker # Use Docker plugin to build and push image
|
|
||||||
settings:
|
|
||||||
repo: bottledpills/deluge-openvpn
|
|
||||||
dockerfile: docker/Dockerfile.amd64
|
|
||||||
tags:
|
|
||||||
- latest-linux-amd64 # Tag for amd64 variant (main branch → "latest")
|
|
||||||
username:
|
|
||||||
from_secret: docker_username # Docker registry credentials (secret)
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: arm64-main
|
|
||||||
node_selector: # Ensure this runs on an arm64 runner
|
|
||||||
kubernetes.io/arch: arm64
|
|
||||||
trigger: # Only run on pushes to the main branch
|
|
||||||
event: [ push ]
|
|
||||||
branch: [ main ]
|
|
||||||
steps:
|
|
||||||
- name: build_push_arm64_latest
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: bottledpills/deluge-openvpn
|
|
||||||
dockerfile: docker/Dockerfile.arm64
|
|
||||||
tags:
|
|
||||||
- latest-linux-arm64 # Tag for arm64 variant (main branch → "latest")
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: amd64-tag
|
|
||||||
node_selector:
|
|
||||||
kubernetes.io/arch: amd64
|
|
||||||
trigger: # Only run on creation of Git tags (releases)
|
|
||||||
event: [ tag ]
|
|
||||||
steps:
|
|
||||||
- name: build_push_amd64_version
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: bottledpills/deluge-openvpn
|
|
||||||
dockerfile: docker/Dockerfile.amd64
|
|
||||||
# Use Drone env substitution to strip the leading "v" from the tag [oai_citation_attribution:0‡docs.drone.io](https://docs.drone.io/pipeline/environment/substitution/#:~:text=,0)
|
|
||||||
tags:
|
|
||||||
- ${DRONE_TAG##v}-linux-amd64 # e.g. "v2.0.1" → "2.0.1-linux-amd64"
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: arm64-tag
|
|
||||||
node_selector:
|
|
||||||
kubernetes.io/arch: arm64
|
|
||||||
trigger: # Only run on creation of Git tags (releases)
|
|
||||||
event: [ tag ]
|
|
||||||
steps:
|
|
||||||
- name: build_push_arm64_version
|
|
||||||
image: plugins/docker
|
|
||||||
settings:
|
|
||||||
repo: bottledpills/deluge-openvpn
|
|
||||||
dockerfile: docker/Dockerfile.arm64
|
|
||||||
tags:
|
|
||||||
- ${DRONE_TAG##v}-linux-arm64 # e.g. "v2.0.1" → "2.0.1-linux-arm64"
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: manifest-main
|
|
||||||
# The manifest step can run on either architecture; we'll use amd64 for consistency
|
|
||||||
node_selector:
|
|
||||||
kubernetes.io/arch: amd64
|
|
||||||
trigger: # Run on main branch pushes (to create "latest" manifest)
|
|
||||||
event: [ push ]
|
|
||||||
branch: [ main ]
|
|
||||||
depends_on: # Wait for both arch images to be built and pushed
|
|
||||||
- amd64-main
|
|
||||||
- arm64-main
|
|
||||||
steps:
|
|
||||||
- name: push_manifest_latest
|
|
||||||
image: plugins/manifest # Drone manifest plugin to create multi-arch manifest
|
|
||||||
settings:
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
spec: docker/manifest.tmpl # Use external manifest template for tags and images
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: manifest-tag
|
|
||||||
node_selector:
|
|
||||||
kubernetes.io/arch: amd64
|
|
||||||
trigger: # Run on tag events (to create versioned manifest)
|
|
||||||
event: [ tag ]
|
|
||||||
depends_on:
|
|
||||||
- amd64-tag
|
|
||||||
- arm64-tag
|
|
||||||
steps:
|
|
||||||
- name: push_manifest_version
|
|
||||||
image: plugins/manifest
|
|
||||||
settings:
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
spec: docker/manifest.tmpl # Same template handles both latest and version tags
|
|
@@ -1,37 +1,28 @@
|
|||||||
FROM ubuntu:22.04
|
FROM ubuntu:24.04
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND="noninteractive"
|
ARG DEBIAN_FRONTEND="noninteractive"
|
||||||
ENV DUMB_INIT_BASE_URL="https://github.com/Yelp/dumb-init/releases/download/v1.2.5"
|
|
||||||
|
|
||||||
# Step 1: Install prerequisites
|
# Install prerequisites and curl
|
||||||
RUN apt-get update && apt-get -y install curl software-properties-common
|
RUN apt-get update && apt-get -y install curl software-properties-common && \
|
||||||
|
add-apt-repository -u ppa:deluge-team/stable && \
|
||||||
# Step 2: Add the Deluge PPA and update apt cache
|
apt-get update && \
|
||||||
RUN add-apt-repository -u ppa:deluge-team/stable && apt-get update
|
# Download and install dumb-init manually based on architecture
|
||||||
|
arch=$(dpkg --print-architecture) && \
|
||||||
# Step 3: Download dumb-init asset for arm64
|
if [ "$arch" = "arm64" ]; then arch="aarch64"; fi && \
|
||||||
RUN curl -Lo /tmp/dumb-init "$DUMB_INIT_BASE_URL/dumb-init_1.2.5_aarch64"
|
curl -Lo /tmp/dumb-init.deb "https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_${arch}.deb" && \
|
||||||
|
dpkg -i /tmp/dumb-init.deb && rm -f /tmp/dumb-init.deb && \
|
||||||
# Step 4: Install dumb-init for arm64
|
# Install other dependencies
|
||||||
RUN cp /tmp/dumb-init /usr/local/bin/dumb-init && \
|
apt-get -y install iputils-ping dnsutils bash jq net-tools openvpn curl ufw deluged deluge-web p7zip-full unrar unzip && \
|
||||||
chmod +x /usr/local/bin/dumb-init && \
|
echo "Cleanup" && \
|
||||||
rm -rf /tmp/dumb-init
|
rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/* && \
|
||||||
|
echo "Adding user" && \
|
||||||
# Step 5: Install other dependencies
|
groupmod -g 1000 users && \
|
||||||
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 && \
|
useradd -u 911 -U -d /config -s /bin/false abc && \
|
||||||
usermod -G users abc
|
usermod -G users abc
|
||||||
|
|
||||||
# Step 8: Copy configuration and scripts
|
# Add configuration and scripts
|
||||||
COPY root/ /
|
COPY root/ /
|
||||||
|
|
||||||
# Step 9: Set environment variables
|
|
||||||
ENV OPENVPN_USERNAME=**None** \
|
ENV OPENVPN_USERNAME=**None** \
|
||||||
OPENVPN_PASSWORD=**None** \
|
OPENVPN_PASSWORD=**None** \
|
||||||
OPENVPN_PROVIDER=**None** \
|
OPENVPN_PROVIDER=**None** \
|
||||||
@@ -61,9 +52,9 @@ ENV OPENVPN_USERNAME=**None** \
|
|||||||
DELUGE_OUTGOING_PORT_LOW=63394 \
|
DELUGE_OUTGOING_PORT_LOW=63394 \
|
||||||
DELUGE_OUTGOING_PORT_HIGH=63404
|
DELUGE_OUTGOING_PORT_HIGH=63404
|
||||||
|
|
||||||
# Step 10: Configure health check and expose ports
|
|
||||||
HEALTHCHECK --interval=1m CMD /etc/scripts/healthcheck.sh
|
HEALTHCHECK --interval=1m CMD /etc/scripts/healthcheck.sh
|
||||||
|
|
||||||
|
# Deluge Deamon and web
|
||||||
EXPOSE 8112 58846
|
EXPOSE 8112 58846
|
||||||
|
|
||||||
# Step 11: Set default command
|
|
||||||
CMD ["/usr/local/bin/dumb-init", "/etc/openvpn/init.sh"]
|
CMD ["/usr/local/bin/dumb-init", "/etc/openvpn/init.sh"]
|
@@ -1,7 +1,7 @@
|
|||||||
# OpenVPN and Deluge with WebUI
|
# OpenVPN and Deluge with WebUI
|
||||||
|
|
||||||
[](https://drone.beatrice.wtf/bea/docker-deluge-openvpn)
|
/badge.svg?branch=master)
|
||||||
[](https://hub.docker.com/r/bottledpills/deluge-openvpn/)
|
[](https://hub.docker.com/r/ebrianne/docker-deluge-openvpn/)
|
||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
|
|
||||||
|
@@ -1,70 +0,0 @@
|
|||||||
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 for amd64
|
|
||||||
RUN curl -Lo /tmp/dumb-init "$DUMB_INIT_BASE_URL/dumb-init_1.2.5_amd64.deb"
|
|
||||||
|
|
||||||
# Step 4: Install dumb-init for amd64
|
|
||||||
RUN dpkg-deb -x /tmp/dumb-init /tmp/dumb-init-dir && \
|
|
||||||
cp /tmp/dumb-init-dir/usr/bin/dumb-init /usr/local/bin/dumb-init && \
|
|
||||||
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"]
|
|
@@ -1,14 +0,0 @@
|
|||||||
# docker/manifest.tmpl
|
|
||||||
image: bottledpills/deluge-openvpn:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
|
||||||
|
|
||||||
manifests:
|
|
||||||
- image: bottledpills/deluge-openvpn:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
|
||||||
platform:
|
|
||||||
architecture: amd64
|
|
||||||
os: linux
|
|
||||||
|
|
||||||
- image: bottledpills/deluge-openvpn:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
|
|
||||||
platform:
|
|
||||||
architecture: arm64
|
|
||||||
os: linux
|
|
||||||
variant: v8
|
|
Reference in New Issue
Block a user