[Cloudflared] Install into base docker
This commit is contained in:
		
							parent
							
								
									12237dec6e
								
							
						
					
					
						commit
						7d3cbff794
					
				
					 3 changed files with 59 additions and 0 deletions
				
			
		|  | @ -1,8 +1,11 @@ | |||
| # DON'T UPDATE TO node:14-bullseye-slim, see #372. | ||||
| # If the image changed, the second stage image should be changed too | ||||
| FROM node:16-buster-slim | ||||
| ARG TARGETPLATFORM | ||||
| 
 | ||||
| WORKDIR /app | ||||
| 
 | ||||
| # Install Curl | ||||
| # Install Apprise, add sqlite3 cli for debugging in the future, iputils-ping for ping, util-linux for setpriv | ||||
| # Stupid python3 and python3-pip actually install a lot of useless things into Debian, specify --no-install-recommends to skip them, make the base even smaller than alpine! | ||||
| RUN apt update && \ | ||||
|  | @ -10,3 +13,14 @@ RUN apt update && \ | |||
|         sqlite3 iputils-ping util-linux dumb-init && \ | ||||
|     pip3 --no-cache-dir install apprise==0.9.7 && \ | ||||
|     rm -rf /var/lib/apt/lists/* | ||||
| 
 | ||||
| # Install cloudflared | ||||
| # dpkg --add-architecture arm: cloudflared do not provide armhf, this is workaround. Read more: https://github.com/cloudflare/cloudflared/issues/583 | ||||
| COPY extra/download-cloudflared.js ./extra/download-cloudflared.js | ||||
| RUN node ./extra/download-cloudflared.js $TARGETPLATFORM && \ | ||||
|     dpkg --add-architecture arm && \ | ||||
|     apt update && \ | ||||
|     apt --yes --no-install-recommends install ./cloudflared.deb && \ | ||||
|     rm -rf /var/lib/apt/lists/* && \ | ||||
|     rm -f cloudflared.deb | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										44
									
								
								extra/download-cloudflared.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								extra/download-cloudflared.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| //
 | ||||
| 
 | ||||
| const http = require("https"); // or 'https' for https:// URLs
 | ||||
| const fs = require("fs"); | ||||
| 
 | ||||
| const platform = process.argv[2]; | ||||
| 
 | ||||
| if (!platform) { | ||||
|     console.error("No platform??"); | ||||
|     process.exit(1); | ||||
| } | ||||
| 
 | ||||
| let arch = null; | ||||
| 
 | ||||
| if (platform === "linux/amd64") { | ||||
|     arch = "amd64"; | ||||
| } else if (platform === "linux/arm64") { | ||||
|     arch = "arm64"; | ||||
| } else if (platform === "linux/arm/v7") { | ||||
|     arch = "arm"; | ||||
| } else { | ||||
|     console.error("Invalid platform?? " + platform); | ||||
| } | ||||
| 
 | ||||
| const file = fs.createWriteStream("cloudflared.deb"); | ||||
| get("https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-" + arch + ".deb"); | ||||
| 
 | ||||
| function get(url) { | ||||
|     http.get(url, function (res) { | ||||
|         if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) { | ||||
|             console.log("Redirect to " + res.headers.location); | ||||
|             get(res.headers.location); | ||||
|         } else if (res.statusCode >= 200 && res.statusCode < 300) { | ||||
|             res.pipe(file); | ||||
| 
 | ||||
|             res.on("end", function () { | ||||
|                 console.log("Downloaded"); | ||||
|             }); | ||||
|         } else { | ||||
|             console.error(res.statusCode); | ||||
|             process.exit(1); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
|  | @ -83,6 +83,7 @@ | |||
|         "jsonwebtoken": "~8.5.1", | ||||
|         "jwt-decode": "^3.1.2", | ||||
|         "limiter": "^2.1.0", | ||||
|         "node-cloudflared-tunnel": "~1.0.0", | ||||
|         "nodemailer": "~6.6.5", | ||||
|         "notp": "~2.0.3", | ||||
|         "password-hash": "~1.2.2", | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue