| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | # ======================================================== | 
					
						
							|  |  |  | # Stage: Builder | 
					
						
							|  |  |  | # ======================================================== | 
					
						
							| 
									
										
										
										
											2025-02-25 17:56:35 +00:00
										 |  |  | FROM golang:1.24-alpine AS builder | 
					
						
							| 
									
										
										
										
											2023-05-07 16:59:37 +00:00
										 |  |  | WORKDIR /app | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | ARG TARGETARCH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RUN apk --no-cache --update add \ | 
					
						
							|  |  |  |   build-base \ | 
					
						
							|  |  |  |   gcc \ | 
					
						
							|  |  |  |   wget \ | 
					
						
							| 
									
										
										
										
											2025-06-25 11:55:02 +00:00
										 |  |  |   unzip \ | 
					
						
							|  |  |  |   bash | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-07 16:59:37 +00:00
										 |  |  | COPY . . | 
					
						
							| 
									
										
										
										
											2023-05-08 02:22:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-27 09:26:10 +00:00
										 |  |  | ENV CGO_ENABLED=1 | 
					
						
							|  |  |  | ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE" | 
					
						
							| 
									
										
										
										
											2025-01-27 00:13:12 +00:00
										 |  |  | RUN go build -ldflags "-w -s" -o build/x-ui main.go | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | RUN ./DockerInit.sh "$TARGETARCH" | 
					
						
							| 
									
										
										
										
											2023-05-08 02:22:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | # ======================================================== | 
					
						
							|  |  |  | # Stage: Final Image of 3x-ui | 
					
						
							|  |  |  | # ======================================================== | 
					
						
							| 
									
										
										
										
											2023-05-11 09:38:44 +00:00
										 |  |  | FROM alpine | 
					
						
							|  |  |  | ENV TZ=Asia/Tehran | 
					
						
							| 
									
										
										
										
											2023-05-07 16:59:37 +00:00
										 |  |  | WORKDIR /app | 
					
						
							| 
									
										
										
										
											2023-05-08 02:22:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | RUN apk add --no-cache --update \ | 
					
						
							|  |  |  |   ca-certificates \ | 
					
						
							|  |  |  |   tzdata \ | 
					
						
							| 
									
										
										
										
											2024-01-27 09:26:10 +00:00
										 |  |  |   fail2ban \ | 
					
						
							|  |  |  |   bash | 
					
						
							| 
									
										
										
										
											2023-05-07 16:59:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-07 09:08:08 +00:00
										 |  |  | # Copy only required build artifacts from builder stage | 
					
						
							|  |  |  | COPY --from=builder /app/build /app/ | 
					
						
							| 
									
										
										
										
											2024-01-27 09:26:10 +00:00
										 |  |  | COPY --from=builder /app/DockerEntrypoint.sh /app/ | 
					
						
							|  |  |  | COPY --from=builder /app/x-ui.sh /usr/bin/x-ui | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Configure fail2ban | 
					
						
							|  |  |  | RUN rm -f /etc/fail2ban/jail.d/alpine-ssh.conf \ | 
					
						
							|  |  |  |   && cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local \ | 
					
						
							| 
									
										
										
										
											2023-07-20 18:24:51 +00:00
										 |  |  |   && sed -i "s/^\[ssh\]$/&\nenabled = false/" /etc/fail2ban/jail.local \ | 
					
						
							|  |  |  |   && sed -i "s/^\[sshd\]$/&\nenabled = false/" /etc/fail2ban/jail.local \ | 
					
						
							|  |  |  |   && sed -i "s/#allowipv6 = auto/allowipv6 = auto/g" /etc/fail2ban/fail2ban.conf | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-07 09:08:08 +00:00
										 |  |  | # Make scripts executable | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | RUN chmod +x \ | 
					
						
							|  |  |  |   /app/DockerEntrypoint.sh \ | 
					
						
							|  |  |  |   /app/x-ui \ | 
					
						
							|  |  |  |   /usr/bin/x-ui | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-07 09:08:08 +00:00
										 |  |  | # Enable fail2ban via environment variable (can be overridden) | 
					
						
							| 
									
										
										
										
											2025-05-22 06:21:23 +00:00
										 |  |  | ENV XUI_ENABLE_FAIL2BAN="true" | 
					
						
							| 
									
										
										
										
											2025-06-07 09:08:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Define volume for persistent configuration | 
					
						
							| 
									
										
										
										
											2023-05-11 09:38:44 +00:00
										 |  |  | VOLUME [ "/etc/x-ui" ] | 
					
						
							| 
									
										
										
										
											2025-06-07 09:08:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Default command when container starts | 
					
						
							| 
									
										
										
										
											2024-01-27 09:26:10 +00:00
										 |  |  | CMD [ "./x-ui" ] | 
					
						
							| 
									
										
										
										
											2025-06-07 09:08:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Custom entrypoint to initialize runtime environment | 
					
						
							| 
									
										
										
										
											2023-07-01 12:26:43 +00:00
										 |  |  | ENTRYPOINT [ "/app/DockerEntrypoint.sh" ] |