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)
|
||||
- [自行构建镜像](#自行构建镜像)
|
||||
- [Docker Hub](#docker-hub)
|
||||
- [在 Kubernetes 里面运行 (我的最爱)](#在-kubernetes-里面运行-我的最爱)
|
||||
- [使用 Docker compose 来运行](#使用-docker-compose-来运行)
|
||||
- [常见问题](#常见问题)
|
||||
|
||||
@@ -146,6 +147,16 @@ docker build -t 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 来运行
|
||||
|
||||
请参考 <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)
|
||||
- [Build the image by yourself](#build-the-image-by-yourself)
|
||||
- [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)
|
||||
|
||||
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/>
|
||||
|
||||
## 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>
|
||||
|
||||
|
||||
|
||||
## 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.
|
||||
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