├── .github └── workflows │ └── builder.yaml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── download-bot ├── Dockerfile ├── README.md ├── config.json └── docker-compose.yml ├── firefox_send └── docker-compose.yml ├── maddy ├── .gitignore ├── Dockerfile ├── README.md ├── docker-compose.yml └── rainloop │ ├── .gitignore │ ├── README.md │ ├── docker-compose.yml │ └── rainloop.conf ├── netease-cloud-music-tasks ├── .dockerignore ├── Dockerfile ├── Invitation-QR-code.jpg └── README.md └── x-ui ├── Dockerfile ├── README.md ├── docker-compose.yml └── docs └── README_en.md /.github/workflows/builder.yaml: -------------------------------------------------------------------------------- 1 | name: "docker build release" 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | project: 7 | description: 'Project' 8 | required: true 9 | default: 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v2 17 | with: 18 | submodules: true 19 | 20 | - name: Set up QEMU 21 | uses: docker/setup-qemu-action@v1 22 | 23 | - name: Docker Hub login 24 | env: 25 | DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} 26 | DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} 27 | run: | 28 | echo "${DOCKERHUB_TOKEN}" | docker login --username ${DOCKERHUB_USERNAME} --password-stdin 29 | 30 | - name: Set up Docker Buildx 31 | id: buildx 32 | uses: crazy-max/ghaction-docker-buildx@v1 33 | with: 34 | buildx-version: latest 35 | 36 | - name: Build Dockerfile 37 | env: 38 | DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} 39 | run: | 40 | docker buildx build \ 41 | --platform=linux/amd64,linux/arm64 \ 42 | --output "type=image,push=true" \ 43 | --file ${{ github.event.inputs.project }}/Dockerfile ./${{ github.event.inputs.project }} \ 44 | --tag $(echo "${DOCKERHUB_USERNAME}" | tr '[:upper:]' '[:lower:]')/${{ github.event.inputs.project }}:latest 45 | 46 | - name: Sync README.md 47 | uses: ms-jpq/sync-dockerhub-readme@v1 48 | with: 49 | username: ${{ secrets.DOCKERHUB_USERNAME }} 50 | password: ${{ secrets.DOCKERHUB_TOKEN }} 51 | repository: ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.inputs.project }} 52 | readme: "${{ github.event.inputs.project }}/README.md" 53 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.db 2 | *.crt 3 | *.key 4 | netease-cloud-music-tasks/config.json 5 | .vscode -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "firefox_send/send"] 2 | path = firefox_send/send 3 | url = https://github.com/mozilla/send.git 4 | [submodule "x-ui/x-ui"] 5 | path = x-ui/x-ui 6 | url = https://github.com/vaxilu/x-ui 7 | [submodule "netease-cloud-music-tasks/NeteaseCloudMusicTasks"] 8 | path = netease-cloud-music-tasks/NeteaseCloudMusicTasks 9 | url = https://github.com/chen310/NeteaseCloudMusicTasks.git 10 | branch = main 11 | [submodule "download-bot/DownloadBot"] 12 | path = download-bot/DownloadBot 13 | url = https://github.com/gaowanliang/DownloadBot.git 14 | [submodule "maddy/maddy"] 15 | path = maddy/maddy 16 | url = https://github.com/foxcpp/maddy.git 17 | branch = master 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Chasing66 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## When container, do container 2 | 3 | This repo is created to collected some wonderful projects and dockernized them for ARM and AMD platforms. 4 | You are welcome to fork and contribute to this project. 5 | 6 | 本仓库主要用于收集`github`上的优秀项目,并将其 docker 化,用于支持在 ARM 及 AMD 平台部署,欢迎推荐。 7 | 8 | ### Docker usage lazy notes 9 | 10 | #### 1. 安装脚本 11 | 12 | 一键安装脚本!Linux 系统都支持! 13 | 14 | ``` 15 | curl -sSL https://get.docker.com/ | sh 16 | ``` 17 | 18 | 国内阿里云镜像 19 | 20 | ``` 21 | curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 22 | ``` 23 | 24 | Azure 源(中国区 azure) 25 | 26 | ``` 27 | curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud 28 | ``` 29 | 30 | #### 2. 使用国内镜像 31 | 32 | 为了加速下载镜像文件,国内服务器可以指定国内的镜像! 33 | 34 | ``` 35 | 阿里云:https://registry.cn-hangzhou.aliyuncs.com/ 36 | 华为云:https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com/ 37 | Docker中国:https://registry.docker-cn.com 38 | 网易:http://hub-mirror.c.163.com 39 | 中科大:https://docker.mirrors.ustc.edu.cn 40 | ``` 41 | 42 | 写入配置文件 重启服务 43 | 44 | ```shell 45 | sudo mkdir -p /etc/docker 46 | sudo tee /etc/docker/daemon.json <<-'EOF' 47 | { 48 | "registry-mirrors": ["http://hub-mirror.c.163.com"] 49 | } 50 | EOF 51 | ``` 52 | 53 | ​重启 docker-daemon 及 docker 54 | 55 | ```shell 56 | sudo systemctl daemon-reload 57 | sudo systemctl restart docker 58 | ``` 59 | 60 | #### 3. 迁移目录 61 | 62 | 主要是为了不让 Docker 镜像,容器占用系统盘的容量! 63 | 64 | 如果就一块盘或者系统盘容量大,这部分内容可忽略! 65 | 66 | ``` 67 | #测试安装NGINX 68 | docker pull nginx 69 | docker run -d -p 8080:80 nginx 70 | 71 | # 给Docker廋身一下 72 | #docker system prune 73 | 74 | #停止Docker服务 75 | systemctl stop docker 76 | #systemctl stop docker.socket 77 | 78 | #创建目标目录 79 | mkdir -p /data/docker/ 80 | 81 | #同步源目录文件 -> 目标目录 82 | rsync -avz /var/lib/docker/ /data/docker 83 | 84 | #修改Docker配置文件 85 | vim /etc/docker/daemon.json 86 | 87 | #修改或者新增内容如下 88 | { 89 | "data-root": "/data/docker" 90 | } 91 | 92 | #启动Docker服务 93 | systemctl start docker 94 | 95 | # 查看是否修改成功 96 | docker info | grep "Docker Root Dir" 97 | 98 | #输出:Docker Root Dir: /data/docker 就OK了! 99 | 100 | #可删除原目录(谨慎) rm -rf /var/lib/docker/ 101 | ``` 102 | 103 | ### Stargazers over time 104 | 105 | [![Stargazers over time](https://starchart.cc/Chasing66/beautiful_docker.svg)](https://starchart.cc/Chasing66/beautiful_docker) 106 | -------------------------------------------------------------------------------- /download-bot/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:alpine AS builder 2 | WORKDIR /root 3 | COPY ./DownloadBot . 4 | RUN go build 5 | 6 | FROM alpine:latest 7 | LABEL org.opencontainers.image.authors="chasing0806@gmail.com" 8 | ENV TZ=Asia/Shanghai 9 | WORKDIR /root 10 | COPY --from=builder /root/DownloadBot /root/DownloadBot 11 | CMD ["/root/DownloadBot"] -------------------------------------------------------------------------------- /download-bot/README.md: -------------------------------------------------------------------------------- 1 | # x-ui 2 | 3 | GitHub [Chasing66/beautiful_docker](https://github.com/Chasing66/beautiful_docker/tree/main/download-bot) 4 | Docker [enwaiax/download-bot](https://hub.docker.com/r/enwaiax/download-bot) 5 | 6 | > \*docker image support for AMD64 and ARM64 7 | 8 | ## 简介 9 | 10 | 基于 [gaowanliang/DownloadBot](https://github.com/gaowanliang/DownloadBot) 项目的 docker 镜像. 11 | 12 | ## 部署 13 | 14 | ### 下载并配置 `config.json` 15 | 16 | ``` 17 | curl -fsSL -o config.json https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/download-bot/config.json 18 | ``` 19 | 20 | ### docker 部署 21 | 22 | ``` 23 | docker run -itd --restart=on-failure \ 24 | -v $PWD/config.json:/root/config.json \ 25 | --name download-bot \ 26 | enwaiax/download-bot:latest 27 | ``` 28 | 29 | ### docker-compose 与 aria2 一起部署 30 | 31 | ``` 32 | curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/download-bot/docker-compose.yml 33 | docker-compose up -d 34 | ``` 35 | -------------------------------------------------------------------------------- /download-bot/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "aria2-server": "ws://127.0.0.1:6800/jsonrpc", 3 | "aria2-key": "xxxxxxxx", 4 | "bot-key": "123456789:xxxxxxxxx", 5 | "user-id": "123456789", 6 | "max-index": 10, 7 | "sign": "Main Aria2", 8 | "language": "zh-CN", 9 | "downloadFolder": "/downloads", 10 | "moveFolder": "/moveFolder" 11 | } 12 | -------------------------------------------------------------------------------- /download-bot/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | services: 4 | Aria2-Pro: 5 | container_name: aria2-pro 6 | image: p3terx/aria2-pro 7 | environment: 8 | - PUID=65534 9 | - PGID=65534 10 | - UMASK_SET=022 11 | - RPC_SECRET=P3TERX 12 | - RPC_PORT=6800 13 | - LISTEN_PORT=6888 14 | - DISK_CACHE=64M 15 | - IPV6_MODE=false 16 | - UPDATE_TRACKERS=true 17 | - TZ=Asia/Shanghai 18 | - SPECIAL_MODE=rclone 19 | volumes: 20 | - ${PWD}/aria2-config:/config 21 | - ${PWD}/aria2-downloads:/downloads 22 | network_mode: host 23 | restart: unless-stopped 24 | logging: 25 | driver: json-file 26 | options: 27 | max-size: 1m 28 | 29 | DownloadBot: 30 | container_name: download-bot 31 | image: enwaiax/download-bot:latest 32 | volumes: 33 | - ${PWD}/config.json:/root/config.json 34 | - ${PWD}/aria2-downloads:/downloads 35 | restart: unless-stopped 36 | logging: 37 | driver: json-file 38 | options: 39 | max-size: 1m 40 | -------------------------------------------------------------------------------- /firefox_send/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | services: 3 | web: 4 | image: enwaiax/firefox_send:plus 5 | links: 6 | - redis 7 | ports: 8 | - "1443:1443" 9 | restart: unless-stopped 10 | environment: 11 | - REDIS_HOST=redis 12 | redis: 13 | image: redis:alpine 14 | restart: unless-stopped 15 | -------------------------------------------------------------------------------- /maddy/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | maddy.yml -------------------------------------------------------------------------------- /maddy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.17-alpine AS build-env 2 | 3 | RUN set -ex ;\ 4 | apk upgrade --no-cache --available ;\ 5 | apk add --no-cache bash git build-base 6 | 7 | WORKDIR /maddy 8 | ADD ./maddy ./ 9 | ENV LDFLAGS -static 10 | RUN go mod download 11 | RUN mkdir -p /pkg/data 12 | COPY ./maddy/maddy.conf /pkg/data/maddy.conf 13 | # Monkey-patch config to use environment. 14 | RUN sed -Ei 's!\$\(hostname\) = .+!$(hostname) = {env:MADDY_HOSTNAME}!' /pkg/data/maddy.conf 15 | RUN sed -Ei 's!\$\(primary_domain\) = .+!$(primary_domain) = {env:MADDY_DOMAIN}!' /pkg/data/maddy.conf 16 | RUN sed -Ei 's!^tls .+!tls file /data/tls_cert.pem /data/tls_key.pem!' /pkg/data/maddy.conf 17 | 18 | RUN ./build.sh --builddir /tmp --destdir /pkg/ --tags docker build install 19 | 20 | FROM alpine:latest 21 | LABEL maintainer="chasing0806@gmail.com" 22 | LABEL org.opencontainers.image.source=https://github.com/foxcpp/maddy 23 | 24 | RUN set -ex ;\ 25 | apk upgrade --no-cache --available ;\ 26 | apk --no-cache add ca-certificates 27 | COPY --from=build-env /pkg/data/maddy.conf /data/maddy.conf 28 | COPY --from=build-env /pkg/usr/local/bin/maddy /pkg/usr/local/bin/maddyctl /bin/ 29 | 30 | 31 | EXPOSE 25 143 993 587 465 32 | VOLUME ["/data"] 33 | ENTRYPOINT ["/bin/maddy", "-config", "/data/maddy.conf"] 34 | -------------------------------------------------------------------------------- /maddy/README.md: -------------------------------------------------------------------------------- 1 | # maddy 2 | 3 | GitHub [Chasing66/beautiful_docker](https://github.com/Chasing66/beautiful_docker/tree/main/maddy) 4 | Docker [enwaiax/maddy](https://hub.docker.com/r/enwaiax/maddy) 5 | 6 | > \*docker image support for AMD64 and ARM64 7 | 8 | ## 简介 9 | 10 | 基于 [foxcpp/maddy](https://github.com/foxcpp/maddy) 项目的 docker 镜像. 11 | 12 | Maddy 是一款用 Go 语言开发的邮件服务器,它实现了运行电子邮件服务器所需的所有功能。 13 | 14 | Maddy 用一个具有统一配置和最低维护成本的守护进程取代了 Postfix、Dovecot、OpenDKIM、OpenSPF、OpenDMARC 等程序。 15 | 16 | 通俗点讲就是部署特别方便, 资源占用少,非常适合个人使用的电子邮件服务器。 17 | 18 | ### 预置条件 19 | 20 | 检查 25 端口是否开放 21 | 22 | ``` 23 | telnet smtp.aol.com 25 24 | ``` 25 | 26 | ### 部署步骤 27 | 28 | #### 1. 创建 docker volume 29 | 30 | ``` 31 | docker volume create maddydata 32 | ``` 33 | 34 | #### 2. 创建 tls 证书 35 | 36 | 申请证书步骤略过,将证书 copy 并重命为`tls_key.pem`和`tls_cert.pem`到 volume 目录 37 | 38 | ```shell 39 | # docker volume 目录 40 | cd $(docker volume inspect maddydata --format '{{.Mountpoint}}') 41 | 42 | # 拷贝并重命名证书到当前目录 43 | cp /etc/letsencrypt/live/mx1.example.org/cert.pem tls_cert.pem 44 | cp /etc/letsencrypt/live/mx1.example.org/privkey.pem tls_key.pem 45 | ``` 46 | 47 | #### 3. 设置 hostname 和 domainname 48 | 49 | ``` 50 | export MADDY_HOSTNAME=mx1.example.org 51 | export MADDY_DOMAIN=example.org 52 | ``` 53 | 54 | #### 4. 创建 maddy 实例 55 | 56 | ##### 4.1 使用 docker 创建 57 | 58 | ```shell 59 | docker run -d --name maddy \ 60 | -e MADDY_HOSTNAME=$MADDY_HOSTNAME -e MADDY_DOMAIN=$MADDY_DOMAIN \ 61 | -v maddydata:/data \ 62 | -p 25:25 -p 143:143 -p 465:465 -p 587:587 -p 993:993 \ 63 | enwaiax/maddy:latest 64 | ``` 65 | 66 | ##### 4.2 使用 docker-compose 创建 67 | 68 | ```shell 69 | mkdir maddy && cd maddy 70 | wget https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/maddy/docker-compose.yml 71 | docker-compose up -d 72 | ``` 73 | 74 | #### 5. 配置 DNS 记录解析 75 | 76 | ```shell 77 | # A记录 78 | example.org A 10.2.3.4 79 | example.org AAAA 2001:beef::1 80 | 81 | # MX记录 82 | example.org MX mx1.example.org. 83 | # 同时最好配置mx1.example.org的A记录 84 | mx1.example.org A 10.2.3.4 85 | mx1.example.org AAAA 2001:beef::1 86 | 87 | # SPF 88 | example.org TXT "v=spf1 mx ~all" 89 | mx1.example.org TXT "v=spf1 mx ~all" 90 | 91 | # _dmarc 92 | _dmarc.example.org TXT "v=DMARC1; p=quarantine; ruf=mailto:postmaster@example.org" 93 | 94 | # _mta-sts,_smtp.tls 95 | _mta-sts.example.org TXT "v=STSv1; id=1" 96 | _smtp._tls.example.org TXT "v=TLSRPTv1;rua=mailto:postmaster@example.org" 97 | 98 | # _dmarc 99 | cd $(docker volume inspect maddydata --format '{{.Mountpoint}}') 100 | cat dkim_keys/*.dns 101 | 102 | default._domainkey.example.org TXT "v=DKIM1; k=ed25519; p=nAcUUozPlhc4VPhp7hZl+owES7j7OlEv0laaDEDBAqg=" 103 | ``` 104 | 105 | #### 6. 创建邮件发送账户 106 | 107 | ```shell 108 | docker exec -it maddy sh 109 | maddyctl creds create postmaster@example.org 110 | maddyctl imap-acct create postmaster@example.org 111 | ``` 112 | 113 | ### 备份 114 | 115 | 所有数据挂载在 volume 中,volum 路径为: 116 | 117 | ``` 118 | $ docker volume inspect maddydata --format '{{.Mountpoint}}' 119 | /var/lib/docker/volumes/maddydata/_data 120 | $ cd /var/lib/docker/volumes/maddydata/_data 121 | 122 | ``` 123 | 124 | 备份该目录即可 125 | 126 | ### 其他 127 | - [搭建webmail: Rainloop](rainloop/README.md) 128 | -------------------------------------------------------------------------------- /maddy/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | services: 3 | maddy: 4 | image: enwaiax/maddy 5 | container_name: maddy 6 | restart: unless-stopped 7 | environment: 8 | - MADDY_HOSTNAME=$MADDY_HOSTNAME 9 | - MADDY_DOMAIN=$MADDY_DOMAIN 10 | volumes: 11 | - maddydata:/data 12 | ports: 13 | - "25:25" 14 | - "143:143" 15 | - "587:587" 16 | - "993:993" 17 | logging: 18 | driver: json-file 19 | options: 20 | max-size: "10m" 21 | max-file: "3" 22 | 23 | volumes: 24 | maddydata: 25 | driver: local 26 | name: maddydata 27 | -------------------------------------------------------------------------------- /maddy/rainloop/.gitignore: -------------------------------------------------------------------------------- 1 | rainloop/ 2 | rainloop-community-latest.zip 3 | -------------------------------------------------------------------------------- /maddy/rainloop/README.md: -------------------------------------------------------------------------------- 1 | # 搭建 Rainloop 2 | ## 简介 3 | 4 | RainLoop 是基于 WEB 的邮件服务器系统是一个免费开源的 PHP Web Mail 客户端系统应用工具,可以用一个界面管理多个帐号,该程序拥有简洁的界面和全面的功能,支持 SMTP+IMAP。 5 | 6 | 用来配合 maddy 可以非常方便的搭建一套完整的带 webmail 的电子邮件服务。 7 | 8 | ## 步骤 9 | 10 | ### 1. 下载 rainloop 安装包 11 | 12 | ``` 13 | mkdir rainloop && cd rainloop 14 | wget -q https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip 15 | unzip rainloop-community-latest.zip -d rainloop 16 | chmod -R 777 rainloop 17 | ``` 18 | 19 | ### 2. 下载 docker-compose 文件 20 | 21 | ``` 22 | wget -q https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/maddy/rainloop/docker-compose.yml 23 | ``` 24 | 25 | ### 3. 下载 nginx 配置文件 26 | 27 | ``` 28 | wget -q https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/maddy/rainloop/rainloop.conf 29 | ``` 30 | 31 | ### 4. 拉起 docker 32 | 33 | ``` 34 | docker-compose up -d 35 | ``` 36 | 37 | ### 5. 登录后台初始配置 38 | 39 | 地址为:http://ip/?admin 40 | 初始用户名密码为: admin/12345,请及时修改 41 | 配置好搭建的 maddy 地址,访问 http://ip,使用 maddy 里创建的用户登录即可从网页端发送邮件 42 | 43 | ### 6. 其他 44 | 45 | 也可使用 windows 客户端[thunderbird](https://www.thunderbird.net) 46 | -------------------------------------------------------------------------------- /maddy/rainloop/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | php: 4 | image: php:8.1.6RC1-fpm-alpine3.15 5 | container_name: php 6 | restart: on-failure 7 | volumes: 8 | - ./rainloop:/var/www/html 9 | logging: 10 | driver: json-file 11 | options: 12 | max-size: "1m" 13 | max-file: "10" 14 | nginx: 15 | image: nginx:alpine 16 | container_name: nginx 17 | restart: on-failure 18 | volumes: 19 | - ./rainloop:/usr/share/nginx/html 20 | - ./rainloop.conf:/etc/nginx/conf.d/default.conf 21 | ports: 22 | - 80:80 23 | logging: 24 | driver: json-file 25 | options: 26 | max-size: "1m" 27 | max-file: "10" 28 | -------------------------------------------------------------------------------- /maddy/rainloop/rainloop.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | listen [::]:80; 4 | server_name rainloop; 5 | 6 | location / { 7 | root /usr/share/nginx/html; 8 | index index.php; 9 | } 10 | 11 | location ~ \.php$ { 12 | root /var/www/html; 13 | fastcgi_pass php:9000; 14 | fastcgi_index index.php; 15 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 16 | include fastcgi_params; 17 | } 18 | 19 | location ^~ /data { 20 | deny all; 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /netease-cloud-music-tasks/.dockerignore: -------------------------------------------------------------------------------- 1 | NeteaseCloudMusicTasks/.github/ 2 | NeteaseCloudMusicTasks/__pycache__/ 3 | NeteaseCloudMusicTasks/.env/ 4 | NeteaseCloudMusicTasks/.user_data 5 | NeteaseCloudMusicTasks/public/ 6 | NeteaseCloudMusicTasks/serverless/ 7 | NeteaseCloudMusicTasks/.dockerignore 8 | NeteaseCloudMusicTasks/Dockerfile 9 | NeteaseCloudMusicTasks/.gitignore 10 | NeteaseCloudMusicTasks/ql_update.py 11 | NeteaseCloudMusicTasks/README.md 12 | 13 | -------------------------------------------------------------------------------- /netease-cloud-music-tasks/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:alpine as builder 2 | 3 | RUN apk update && apk add --no-cache tzdata alpine-sdk libffi-dev 4 | ADD ./NeteaseCloudMusicTasks/requirements.txt /tmp/requirements.txt 5 | RUN pip3 install --user --quiet -r /tmp/requirements.txt && rm /tmp/requirements.txt 6 | 7 | FROM python:alpine 8 | WORKDIR /root 9 | ENV TZ=Asia/Shanghai 10 | 11 | COPY --from=builder /root/.local /usr/local 12 | COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo 13 | COPY ./NeteaseCloudMusicTasks /root 14 | 15 | CMD ["python", "scheduler.py"] 16 | -------------------------------------------------------------------------------- /netease-cloud-music-tasks/Invitation-QR-code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enwaiax/awesome-docker/ab72e7038030fc86513439bbcfc40a7b45ffaf32/netease-cloud-music-tasks/Invitation-QR-code.jpg -------------------------------------------------------------------------------- /netease-cloud-music-tasks/README.md: -------------------------------------------------------------------------------- 1 | # `netease-cloud-music-tasks` 2 | 3 | GitHub [Chasing66/beautiful_docker](https://github.com/Chasing66/beautiful_docker/tree/main/netease-cloud-music-tasks) 4 | Docker [enwaiax/netease-cloud-music-tasks](https://hub.docker.com/r/enwaiax/netease-cloud-music-tasks) 5 | 6 | >docker image support for AMD64 and ARM64 7 | 8 | ## 简介 9 | 10 | 基于 [chen310/NeteaseCloudMusicTasks](https://github.com/chen310/NeteaseCloudMusicTasks) 项目的 docker 镜像. 11 | 12 | ### 镜像介绍 13 | 14 | 1. 签到领云贝 15 | 2. 自动完成云贝任务,并领取云贝 16 | 3. 打卡升级 17 | 4. 刷指定歌曲的播放量 18 | 5. 音乐人自动签到领取云豆 19 | 6. 音乐人自动完成任务,并领取云豆 20 | 7. 自动领取 vip 成长值(任务需自己完成) 21 | 8. 多种推送方式 22 | 9. 支持多账号 23 | 24 | ### 注册成为网易云音乐人 25 | 26 | [HRTJ5q.jpg](https://imgtu.com/i/HRTJ5q) 27 | 28 | ## 部署 29 | 30 | ### 下载并配置 `config.json` 31 | 32 | ``` 33 | curl -fsSL -o config.json https://raw.githubusercontent.com/chen310/NeteaseCloudMusicTasks/main/config.json 34 | ``` 35 | 36 | 修改配置参考[配置说明](https://github.com/chen310/NeteaseCloudMusicTasks#%E4%BF%AE%E6%94%B9%E9%85%8D%E7%BD%AE) 37 | 38 | ### 随机时间执行 39 | 40 | ``` 41 | docker run -itd --restart=on-failure \ 42 | -v $(pwd)/config.json:/root/config.json \ 43 | --name netease-cloud-music-tasks \ 44 | enwaiax/netease-cloud-music-tasks:latest 45 | ``` 46 | 47 | ### 指定时间执行 48 | 49 | ``` 50 | docker run -itd --restart=on-failure \ 51 | -v $(pwd)/config.json:/root/config.json \ 52 | -e "SCHEDULER_HOUR=8" -e "SCHEDULER_MINUTE=30" \ 53 | --name netease-cloud-music-tasks \ 54 | enwaiax/netease-cloud-music-tasks:latest 55 | ``` 56 | -------------------------------------------------------------------------------- /x-ui/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:latest AS builder 2 | ARG XUI_REPO="https://github.com/vaxilu/x-ui" 3 | RUN git clone ${XUI_REPO} --depth=1 4 | WORKDIR /go/x-ui 5 | RUN go build 6 | 7 | FROM debian:11-slim 8 | LABEL org.opencontainers.image.authors="https://github.com/Chasing66" 9 | COPY --from=builder /go/x-ui/x-ui /usr/local/bin/x-ui 10 | 11 | ENV DEBIAN_FRONTEND=noninteractive, TZ=Asia/Shanghai 12 | RUN apt-get update \ 13 | && apt-get install -y --no-install-recommends -y ca-certificates \ 14 | && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 15 | 16 | ARG TARGETARCH 17 | COPY --from=teddysun/xray /usr/bin/xray /usr/local/bin/bin/xray-linux-${TARGETARCH} 18 | COPY --from=teddysun/xray /usr/share/xray/ /usr/local/bin/bin/ 19 | 20 | VOLUME [ "/etc/x-ui" ] 21 | WORKDIR /usr/local/bin 22 | CMD [ "x-ui" ] -------------------------------------------------------------------------------- /x-ui/README.md: -------------------------------------------------------------------------------- 1 | # x-ui 2 | 3 | GitHub [Chasing66/x-ui](https://github.com/Chasing66/x-ui) 4 | Docker [enwaiax/x-ui](https://hub.docker.com/r/enwaiax/x-ui) 5 | 6 | 此项目已独立为一个全新的项目,支持更多架构,支持两种版本的镜像 7 | 8 | | | Tag | amd64 | arm64 | armv7 | armv6 | s390x | 9 | | --------------------------------------------------------- | ------ | ----- | ----- | ----- | ----- | ----- | 10 | | [vaxilu/x-ui](https://github.com/vaxilu/x-ui) | latest | ✅ | ✅ | ✅ | ✅ | ✅ | 11 | | [FranzKafkaYu/x-ui](https://github.com/FranzKafkaYu/x-ui) | alpha | ✅ | ✅ | ❌ | ❌ | ✅ | 12 | 13 | Go to [Chasing66/x-ui](https://github.com/Chasing66/x-ui) to check the latest update 14 | 15 | [English Version](docs/README_en.md) 16 | 17 | ## 简介 18 | 19 | 基于 [vaxilu/x-ui](https://github.com/vaxilu/x-ui) 项目的 docker 镜像. 20 | 21 | ### docker 部署 22 | 23 | ```shell 24 | mkdir x-ui && cd x-ui 25 | docker run -itd --network=host -v $PWD/db/:/etc/x-ui/ -v $PWD/cert/:/root/cert/ --name x-ui --restart=unless-stopped enwaiax/x-ui:latest 26 | ``` 27 | 28 | ### docker compose 部署 29 | 30 | ```shell 31 | mkdir x-ui && cd x-ui 32 | wget https://raw.githubusercontent.com/Chasing66/beautiful_docker/main/x-ui/docker-compose.yml 33 | docker-compose up -d 34 | ``` 35 | 36 | ### 备份 37 | 38 | 数据已经 mount 到 x-ui 路径下的 db 目录下了,直接打包整个 x-ui 文件夹再次`docker-compose up -d`即可起来 39 | 40 | #### 证书 41 | 42 | 容器起来后,将证书放置在`./x-ui/cert`即可,容器内的路径为`/root/cert/` 43 | 44 | ## 使用 45 | 46 | 访问`http://服务器IP:54321`使用账号`admin`密码`admin`登录.注意需开放相关端口防火墙,并及时修改账号密码. 47 | 48 | ## 忘记密码 49 | 50 | 删除当前路径下的 db 目录,重新部署容器,密码会被重置为`admin` 51 | 52 | ## 参考 53 | 54 | GitHub [vaxilu/x-ui](https://github.com/vaxilu/x-ui) 55 | GitHub [stilleshan/dockerfiles](https://github.com/stilleshan/dockerfiles) 56 | -------------------------------------------------------------------------------- /x-ui/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | services: 3 | xui: 4 | image: enwaiax/x-ui 5 | container_name: x-ui 6 | volumes: 7 | - $PWD/db/:/etc/x-ui/ 8 | - $PWD/cert/:/root/cert/ 9 | restart: unless-stopped 10 | network_mode: host 11 | -------------------------------------------------------------------------------- /x-ui/docs/README_en.md: -------------------------------------------------------------------------------- 1 | # x-ui docker image 2 | 3 | Go to [Chasing66/x-ui](https://github.com/Chasing66/x-ui) to check the latest update 4 | 5 | > x-ui in docker version 6 | 7 | You could selecet your perfer one by changing the docker image tag 8 | 9 | | | Tag | amd64 | arm64 | armv7 | armv6 | s390x | 10 | | --------------------------------------------------------- | ------ | ----- | ----- | ----- | ----- | ----- | 11 | | [vaxilu/x-ui](https://github.com/vaxilu/x-ui) | latest | ✅ | ✅ | ✅ | ✅ | ✅ | 12 | | [FranzKafkaYu/x-ui](https://github.com/FranzKafkaYu/x-ui) | alpha | ✅ | ✅ | ❌ | ❌ | ✅ | 13 | 14 | ### Why Should You Use Docker 15 | 16 | - Consistent & Isolated Environment 17 | - Rapid Application Deployment 18 | - Ensures Scalability & Flexibility 19 | - Better Portability 20 | - Cost-Effective 21 | - In-Built Version Control System 22 | - Security 23 | - ..... 24 | 25 | ### For this project, if you use docker 26 | 27 | - You don't need to concern yourself with operating systems, architectures and other issues. 28 | - You will never ruin your Linux server. If you don't want to use it, you can stop or remove it from your environment exactly. 29 | - Last but not least, you can easily deploy and upgrade 30 | 31 | ### Hot to use it 32 | 33 | #### Pre-condition, Docker is installed 34 | 35 | Use the official one-key script 36 | 37 | ```bash 38 | curl -sSL https://get.docker.com/ | sh 39 | ``` 40 | 41 | #### Start you container 42 | 43 | ##### You could use the pre-build docker image enwaiax/xuiplus 44 | 45 | ``` 46 | mkdir x-ui && cd x-ui 47 | docker run -itd --network=host \ 48 | -v $PWD/db/:/etc/x-ui/ \ 49 | -v $PWD/cert/:/root/cert/ \ 50 | --name x-ui --restart=unless-stopped \ 51 | enwaiax/x-ui 52 | ``` 53 | 54 | Note: If you want to use [FranzKafkaYu/x-ui](https://github.com/FranzKafkaYu/x-ui), change the image as `enwaiax/x-ui:alpha` 55 | 56 | ##### Or you could use docker compose to start it 57 | 58 | ``` 59 | mkdir x-ui && cd x-ui 60 | wget https://raw.githubusercontent.com//chasing66/x-ui/main/docker-compose.yml 61 | docker compose up -d 62 | ``` 63 | 64 | #### How to enable ssl to your x-ui panel 65 | 66 | This part describe how to enable ssl. 67 | 68 | - Suppose your x-ui port is `54321` 69 | - Suppose your IP is `10.10.10.10` 70 | - Suppose your domain is `xui.example.com` and you have set the A recode in cloudflare 71 | - Suppose you are using Debian 10+ or Ubuntu 18+ system 72 | - Suppose your email is `xxxx@example.com` 73 | 74 | ##### Steps as below 75 | 76 | 1. Install nginx and python3-certbot-nginx 77 | 78 | ```bash 79 | sudo apt update 80 | sudo apt install python3-certbot-nginx 81 | ``` 82 | 83 | 2. Add new nging configurtion 84 | 85 | ``` 86 | touch /etc/nginx/conf.d/xui.conf 87 | ``` 88 | 89 | Add below to the file. Adjust appropriately to your own situation. 90 | 91 | ```nginx 92 | server { 93 | listen 80; 94 | listen [::]:80; 95 | server_name xui.example.com; 96 | 97 | location / { 98 | proxy_redirect off; 99 | proxy_pass http://127.0.0.1:54321; 100 | proxy_http_version 1.1; 101 | proxy_set_header Host $host; 102 | } 103 | 104 | # This part desribe how to reverse websockt proxy 105 | location /xray { 106 | proxy_redirect off; 107 | proxy_pass http://127.0.0.1:10001; 108 | proxy_http_version 1.1; 109 | proxy_set_header Upgrade $http_upgrade; 110 | proxy_set_header Connection "upgrade"; 111 | proxy_set_header X-Real-IP $remote_addr; 112 | proxy_set_header Host $http_host; 113 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 114 | proxy_set_header Y-Real-IP $realip_remote_addr; 115 | } 116 | } 117 | ``` 118 | 119 | 3. Check yout conf is OK 120 | 121 | ``` 122 | nginx -t 123 | ``` 124 | 125 | 4. Get cert 126 | 127 | ``` 128 | certbot --nginx --agree-tos --no-eff-email --email xxxxx@example.com 129 | ``` 130 | 131 | For more details, refer to [cerbot](https://certbot.eff.org/) 132 | 133 | 5. Reload nginx config 134 | 135 | ``` 136 | ngins -s reload 137 | ``` 138 | 139 | 6. Test automatic renewal 140 | 141 | ``` 142 | sudo certbot renew --dry-run 143 | ``` 144 | --------------------------------------------------------------------------------