mirror of
https://github.com/wahyd4/aria2-ariang-docker.git
synced 2026-08-08 21:05:50 +10:00
Add k8s example (#209)
This commit is contained in:
@@ -27,6 +27,7 @@ Aria2 + AriaNg
|
|||||||
- [自动 SSL](#自动-ssl)
|
- [自动 SSL](#自动-ssl)
|
||||||
- [自行构建镜像](#自行构建镜像)
|
- [自行构建镜像](#自行构建镜像)
|
||||||
- [Docker Hub](#docker-hub)
|
- [Docker Hub](#docker-hub)
|
||||||
|
- [在 Kubernetes 里面运行 (我的最爱)](#在-kubernetes-里面运行-我的最爱)
|
||||||
- [使用 Docker compose 来运行](#使用-docker-compose-来运行)
|
- [使用 Docker compose 来运行](#使用-docker-compose-来运行)
|
||||||
- [常见问题](#常见问题)
|
- [常见问题](#常见问题)
|
||||||
|
|
||||||
@@ -146,6 +147,16 @@ docker build -t aria2-ui .
|
|||||||
|
|
||||||
<https://hub.docker.com/r/wahyd4/aria2-ui/>
|
<https://hub.docker.com/r/wahyd4/aria2-ui/>
|
||||||
|
|
||||||
|
## 在 Kubernetes 里面运行 (我的最爱)
|
||||||
|
|
||||||
|
首先,在Kubernetes 里面运行本Docker 镜像比在Docker 里面更加复杂,需要更多的相关知识,但是也更加有意思,给你带来更多的折腾之后的满足。
|
||||||
|
你可以使用`minikube`,Docker 桌面应用自带Kubernetes 或者 使用`kubeadm`来安装Kubernetes,然后你需要根据自己的需要修改 [k8s-manifest.yaml](k8s-manifest.yaml) 来满足你的需要的需求。比如:
|
||||||
|
|
||||||
|
* NFS PV provider(使用NAS 作为容器存储)
|
||||||
|
* Ingress 访问, Oauth 登录灯其他访问控制
|
||||||
|
* VPN (让数据访问更加安全)
|
||||||
|
* 其他的一些 Sidecars
|
||||||
|
|
||||||
## 使用 Docker compose 来运行
|
## 使用 Docker compose 来运行
|
||||||
|
|
||||||
请参考 <https://github.com/wahyd4/aria2-ariang-x-docker-compose>
|
请参考 <https://github.com/wahyd4/aria2-ariang-x-docker-compose>
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ English | [简体中文](https://github.com/wahyd4/aria2-ariang-docker/blob/mast
|
|||||||
- [Auto HTTPS enabling](#auto-https-enabling)
|
- [Auto HTTPS enabling](#auto-https-enabling)
|
||||||
- [Build the image by yourself](#build-the-image-by-yourself)
|
- [Build the image by yourself](#build-the-image-by-yourself)
|
||||||
- [Docker Hub](#docker-hub)
|
- [Docker Hub](#docker-hub)
|
||||||
- [Usage it in Docker compose](#usage-it-in-docker-compose)
|
- [Running it on Kubernetes (My favorite)](#running-it-on-kubernetes-my-favorite)
|
||||||
|
- [Running it with Docker compose](#running-it-with-docker-compose)
|
||||||
- [FAQ](#faq)
|
- [FAQ](#faq)
|
||||||
|
|
||||||
One Docker image for file downloading, managing, sharing, as well as video playing and evening cloud storage synchronization.
|
One Docker image for file downloading, managing, sharing, as well as video playing and evening cloud storage synchronization.
|
||||||
@@ -156,10 +157,22 @@ docker run -d --name aria2-ui -p 80:80 -p 443:443 -e DOMAIN=https://toozhao.com
|
|||||||
|
|
||||||
<https://hub.docker.com/r/wahyd4/aria2-ui/>
|
<https://hub.docker.com/r/wahyd4/aria2-ui/>
|
||||||
|
|
||||||
## Usage it in Docker compose
|
## Running it on Kubernetes (My favorite)
|
||||||
|
|
||||||
|
First of all, I have to say running this docker image on Kubernetes is more challenging and requires more knowledges than running it in raw Docker, but which is more powerful.
|
||||||
|
I couldn't tell you how to run it in Kubernetes step by step, but once you have a running Kubernetes cluster(You can install Kubernetes via `minikube`, `Docker desktop app`, `kubeadm` and many other tools.), then you can modify the [k8s-manifest.yaml](k8s-manifest.yaml) to satisfy all your requirements. Such as:
|
||||||
|
|
||||||
|
* NFS PV provider(Use your NAS as storage)
|
||||||
|
* Ingress access, Oauth login, more access controls via Nginx etc.
|
||||||
|
* VPN tunnel (Secure your traffic)
|
||||||
|
* Sidecars and so on.
|
||||||
|
|
||||||
|
## Running it with Docker compose
|
||||||
|
|
||||||
Please refer <https://github.com/wahyd4/aria2-ariang-x-docker-compose>
|
Please refer <https://github.com/wahyd4/aria2-ariang-x-docker-compose>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
1. When you running the docker image with non `80` port or you have HTTPS enabled, you will meet the error says `Aria2 Status Disconnected`, then you will need to set `ARIA2_EXTERNAL_PORT` and recreate your container.
|
1. When you running the docker image with non `80` port or you have HTTPS enabled, you will meet the error says `Aria2 Status Disconnected`, then you will need to set `ARIA2_EXTERNAL_PORT` and recreate your container.
|
||||||
2. If there is no speed at all when you downloading a BitTorrent file, please try to use a popular torrent file first to help the application to cache `DHT` file. Then the speed should get fast and fast, as well as downloading other links.
|
2. If there is no speed at all when you downloading a BitTorrent file, please try to use a popular torrent file first to help the application to cache `DHT` file. Then the speed should get fast and fast, as well as downloading other links.
|
||||||
|
|||||||
@@ -0,0 +1,161 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: files
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 2
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: files
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: files
|
||||||
|
spec:
|
||||||
|
volumes:
|
||||||
|
# - name: config
|
||||||
|
# persistentVolumeClaim:
|
||||||
|
# claimName: configs-pv
|
||||||
|
- name: downloads
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: downloads-pv
|
||||||
|
containers:
|
||||||
|
- name: files
|
||||||
|
image: wahyd4/aria2-ui:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
name: files-port
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
## Update this to the final port you would use in the browser
|
||||||
|
- name: ARIA2_EXTERNAL_PORT
|
||||||
|
value: "443"
|
||||||
|
- name: PUID
|
||||||
|
value: "1000"
|
||||||
|
- name: PGID
|
||||||
|
value: "1000"
|
||||||
|
volumeMounts:
|
||||||
|
# - name: config
|
||||||
|
# subPath: aria
|
||||||
|
# mountPath: /app/conf
|
||||||
|
# - name: config
|
||||||
|
# subPath: files/filebrowser.db
|
||||||
|
# mountPath: /app/filebrowser.db
|
||||||
|
- name: downloads
|
||||||
|
mountPath: /data
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 150m
|
||||||
|
memory: 256Mi
|
||||||
|
limits:
|
||||||
|
cpu: 400m
|
||||||
|
memory: 1024Mi
|
||||||
|
# An example of encrypting the traffic with some vpn providerm, please update the configurations accordingly
|
||||||
|
# - name: openvpn
|
||||||
|
# image: qmcgaw/gluetun:latest
|
||||||
|
# securityContext:
|
||||||
|
# runAsUser: 0
|
||||||
|
# privileged: true
|
||||||
|
# capabilities:
|
||||||
|
# add: ["NET_ADMIN"]
|
||||||
|
# imagePullPolicy: Always
|
||||||
|
# env:
|
||||||
|
# - name: OPENVPN_USER
|
||||||
|
# value: xxxx
|
||||||
|
# - name: OPENVPN_PASSWORD
|
||||||
|
# valueFrom:
|
||||||
|
# secretKeyRef:
|
||||||
|
# name: openvpn-password
|
||||||
|
# key: password
|
||||||
|
# - name: VPNSP
|
||||||
|
# value: "private internet access"
|
||||||
|
# - name: PIA_ENCRYPTION
|
||||||
|
# value: normal
|
||||||
|
# - name: REGION
|
||||||
|
# value: "AU Sydney"
|
||||||
|
# - name: TZ
|
||||||
|
# value: Australia/Melbourne
|
||||||
|
# resources:
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 126Mi
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 126Mi
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: files
|
||||||
|
labels:
|
||||||
|
app: files
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: files-port
|
||||||
|
protocol: TCP
|
||||||
|
name: web
|
||||||
|
selector:
|
||||||
|
app: files
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: downloads-pv
|
||||||
|
labels:
|
||||||
|
type: local
|
||||||
|
spec:
|
||||||
|
storageClassName: manual
|
||||||
|
capacity:
|
||||||
|
storage: 100Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
hostPath:
|
||||||
|
path: "/mnt/data"
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "downloads-pv"
|
||||||
|
spec:
|
||||||
|
storageClassName: "manual"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 100Gi
|
||||||
|
|
||||||
|
|
||||||
|
# ---
|
||||||
|
# ingress example
|
||||||
|
# apiVersion: networking.k8s.io/v1
|
||||||
|
# kind: Ingress
|
||||||
|
# metadata:
|
||||||
|
# name: files-ingress
|
||||||
|
# annotations:
|
||||||
|
# kubernetes.io/ingress.class: "nginx"
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
# cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
# nginx.ingress.kubernetes.io/proxy-body-size: 10240m
|
||||||
|
# spec:
|
||||||
|
# tls:
|
||||||
|
# - hosts:
|
||||||
|
# - xx.example.com
|
||||||
|
# secretName: files-tls
|
||||||
|
# rules:
|
||||||
|
# - host: xx.example.com
|
||||||
|
# http:
|
||||||
|
# paths:
|
||||||
|
# - path: /
|
||||||
|
# pathType: Prefix
|
||||||
|
# backend:
|
||||||
|
# service:
|
||||||
|
# name: files
|
||||||
|
# port:
|
||||||
|
# number: 80
|
||||||
Reference in New Issue
Block a user