This commit is contained in:
vados-dev 2026-05-16 08:08:44 +03:00
parent 1e7fabdce2
commit 645eab3f59
No known key found for this signature in database
GPG key ID: 1FD2694762FCE438
11 changed files with 299 additions and 9 deletions

View file

@ -0,0 +1,9 @@
{
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "2.17.0",
"resolved": "ghcr.io/devcontainers/features/docker-in-docker@sha256:25b9f05705ffba7dbe503230ac76081419306f8c8bc88e0ce78c4ecd99a0c78c",
"integrity": "sha256:25b9f05705ffba7dbe503230ac76081419306f8c8bc88e0ce78c4ecd99a0c78c"
}
}
}

62
.github/workflows/docker.yml.orig vendored Normal file
View file

@ -0,0 +1,62 @@
name: Release 3X-UI for Docker
permissions:
contents: read
packages: write
on:
workflow_dispatch:
push:
tags:
- "v*.*.*"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: true
- name: Docker meta
id: meta
uses: docker/metadata-action@v6
with:
images: |
hsanaeii/3x-ui
ghcr.io/mhsanaei/3x-ui
tags: |
type=ref,event=branch
type=ref,event=tag
type=semver,pattern={{version}}
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
with:
install: true
- name: Login to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Login to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v7
with:
context: .
push: true
platforms: linux/amd64,linux/arm64/v8,linux/arm/v7,linux/arm/v6,linux/386
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

4
.vscode/launch.json vendored
View file

@ -25,9 +25,9 @@
// Set to true to serve assets/templates directly from disk for development
"XUI_DEBUG": "true",
// Uncomment to override DB folder location (by default uses working dir on Windows when debug)
// "XUI_DB_FOLDER": "${workspaceFolder}",
"XUI_DB_FOLDER": "${workspaceFolder}",
// Example: override log level (debug|info|notice|warn|error)
// "XUI_LOG_LEVEL": "debug"
"XUI_LOG_LEVEL": "debug"
},
"console": "integratedTerminal"
}

View file

@ -1,7 +1,7 @@
# ========================================================
# Stage: Frontend (Vite)
# ========================================================
FROM --platform=$BUILDPLATFORM node:22-alpine AS frontend
FROM --platform=$BUILDPLATFORM reg.vados.ru/node:22-alpine AS frontend
WORKDIR /src/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
@ -12,7 +12,9 @@ RUN npm run build
# ========================================================
# Stage: Builder
# ========================================================
FROM golang:1.26-alpine AS builder
#ARG CI_REGISTRY=reg.vados.ru
FROM reg.vados.ru/golang:1.26-alpine AS builder
#FROM golang:1.26-alpine AS builder
WORKDIR /app
ARG TARGETARCH
@ -33,7 +35,8 @@ RUN ./DockerInit.sh "$TARGETARCH"
# ========================================================
# Stage: Final Image of 3x-ui
# ========================================================
FROM alpine
#FROM alpine
FROM reg.vados.ru/alpine
ENV TZ=Asia/Tehran
WORKDIR /app
@ -43,13 +46,15 @@ RUN apk add --no-cache --update \
fail2ban \
bash \
curl \
openssl
openssl \
mc
COPY --from=builder /app/build/ /app/
COPY --from=builder /app/DockerEntrypoint.sh /app/
COPY --from=builder /app/x-ui.sh /usr/bin/x-ui
COPY --from=builder /app/web/translation /app/web/translation
ADD --from=builder config/mc.tar.gz /root/.config
# Configure fail2ban
RUN rm -f /etc/fail2ban/jail.d/alpine-ssh.conf \
@ -63,8 +68,8 @@ RUN chmod +x \
/app/x-ui \
/usr/bin/x-ui
ENV XUI_ENABLE_FAIL2BAN="true"
EXPOSE 2053
ENV XUI_ENABLE_FAIL2BAN="false"
EXPOSE 2904
VOLUME [ "/etc/x-ui" ]
CMD [ "./x-ui" ]
ENTRYPOINT [ "/app/DockerEntrypoint.sh" ]

38
Dockerfile.diff Normal file
View file

@ -0,0 +1,38 @@
2,12d1
< # Stage: Frontend (Vite)
< # ========================================================
< FROM --platform=$BUILDPLATFORM node:22-alpine AS frontend
< WORKDIR /src/frontend
< COPY frontend/package.json frontend/package-lock.json ./
< RUN npm ci
< COPY frontend/ ./
< COPY web/translation /src/web/translation
< RUN npm run build
<
< # ========================================================
15,16c4,7
< FROM golang:1.26-alpine AS builder
< WORKDIR /app
---
> ARG CI_REGISTRY=reg.vados.ru
> ARG CI_BASE=${CI_REGISTRY}/golang:1.26-alpine
> FROM ${CI_BASE} AS builder
> WORKDIR "/app"
26d16
< COPY --from=frontend /src/web/dist ./web/dist
36c26,27
< FROM alpine
---
>
> FROM ${CI_REGISTRY}/alpine
38c29
< WORKDIR /app
---
> WORKDIR "/app"
45a37
> mc \
51,52c43
< COPY --from=builder /app/web/translation /app/web/translation
<
---
> ADD config/mc.tar.gz /root/.config

70
Dockerfile.orig Normal file
View file

@ -0,0 +1,70 @@
# ========================================================
# Stage: Frontend (Vite)
# ========================================================
FROM --platform=$BUILDPLATFORM node:22-alpine AS frontend
WORKDIR /src/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
COPY web/translation /src/web/translation
RUN npm run build
# ========================================================
# Stage: Builder
# ========================================================
FROM golang:1.26-alpine AS builder
WORKDIR /app
ARG TARGETARCH
RUN apk --no-cache --update add \
build-base \
gcc \
curl \
unzip
COPY . .
COPY --from=frontend /src/web/dist ./web/dist
ENV CGO_ENABLED=1
ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE"
RUN go build -ldflags "-w -s" -o build/x-ui main.go
RUN ./DockerInit.sh "$TARGETARCH"
# ========================================================
# Stage: Final Image of 3x-ui
# ========================================================
FROM alpine
ENV TZ=Asia/Tehran
WORKDIR /app
RUN apk add --no-cache --update \
ca-certificates \
tzdata \
fail2ban \
bash \
curl \
openssl
COPY --from=builder /app/build/ /app/
COPY --from=builder /app/DockerEntrypoint.sh /app/
COPY --from=builder /app/x-ui.sh /usr/bin/x-ui
COPY --from=builder /app/web/translation /app/web/translation
# Configure fail2ban
RUN rm -f /etc/fail2ban/jail.d/alpine-ssh.conf \
&& cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local \
&& 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
RUN chmod +x \
/app/DockerEntrypoint.sh \
/app/x-ui \
/usr/bin/x-ui
ENV XUI_ENABLE_FAIL2BAN="true"
EXPOSE 2053
VOLUME [ "/etc/x-ui" ]
CMD [ "./x-ui" ]
ENTRYPOINT [ "/app/DockerEntrypoint.sh" ]

61
Dockerfile.vados Normal file
View file

@ -0,0 +1,61 @@
# ========================================================
# Stage: Builder
# ========================================================
ARG CI_REGISTRY=reg.vados.ru
ARG CI_BASE=${CI_REGISTRY}/golang:1.26-alpine
FROM ${CI_BASE} AS builder
WORKDIR "/app"
ARG TARGETARCH
RUN apk --no-cache --update add \
build-base \
gcc \
curl \
unzip
COPY . .
ENV CGO_ENABLED=1
ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE"
RUN go build -ldflags "-w -s" -o build/x-ui main.go
RUN ./DockerInit.sh "$TARGETARCH"
# ========================================================
# Stage: Final Image of 3x-ui
# ========================================================
FROM ${CI_REGISTRY}/alpine
ENV TZ=Asia/Tehran
WORKDIR "/app"
RUN apk add --no-cache --update \
ca-certificates \
tzdata \
fail2ban \
bash \
curl \
mc \
openssl
COPY --from=builder /app/build/ /app/
COPY --from=builder /app/DockerEntrypoint.sh /app/
COPY --from=builder /app/x-ui.sh /usr/bin/x-ui
ADD config/mc.tar.gz /root/.config
# Configure fail2ban
RUN rm -f /etc/fail2ban/jail.d/alpine-ssh.conf \
&& cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local \
&& 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
RUN chmod +x \
/app/DockerEntrypoint.sh \
/app/x-ui \
/usr/bin/x-ui
ENV XUI_ENABLE_FAIL2BAN="true"
EXPOSE 2053
VOLUME [ "/etc/x-ui" ]
CMD [ "./x-ui" ]
ENTRYPOINT [ "/app/DockerEntrypoint.sh" ]

28
brun.sh Executable file
View file

@ -0,0 +1,28 @@
#!/bin/bash
CI_REGISTRY="reg.vados.ru"
#CI_BASE="$CI_REGISTRY/golang:1.26-alpine"
#CI_FROM="$CI_REGISTRY/alpine"
#CI_PROJECT="3x-ui"
#WORKDIR="/app"
#TARGETARCH="linux/amd64"
CI_IMAGE="$CI_REGISTRY/3xui_app"
#CI_BUILD_ENGINE="buildx"
#CI_BUILDX_BUILDER="buildx_buildkit_custom_3x-ui-ci"
#CI_TAGET="--push"
#--load"
#export $CI_REGISTRY $CI_BASE $CI_FROM $CI_PROJECT $WORKDIR $TARGETARCH $CI_IMAGE $CI_BUILD_ENGINE $CI_BUILDX_BUILDER
docker build --progress=plain --no-cache --push -t $CI_IMAGE -f Dockerfile .
#docker push $CI_IMAGE
#docker buildx create --name $CI_BUILDX_BUILDER --driver docker-container --use ;
#docker buildx build --builder $CI_BUILDX_BUILDER --progress=plain --platform $CI_BUILDX_PLATFORMS \
# --build-arg CI_BASE_IMAGE=$CI_BASE_IMAGE $CI_TARGET -t $CI_IMAGE -f Dockerfile

12
compose-run.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
#--project-name=amster-registry
#docker network create -d bridge --attachable registry-ui-net
#docker compose up -d --rem
#docker compose registry-ui stop
#docker cp registry-ui:/etc/nginx/nginx.conf tmp.conf
#ls -l tmp.conf
docker-compose build --pull --no-cache
#docker-compose logs registry-ui
docker compose up -d

View file

@ -10,8 +10,13 @@ services:
- $PWD/cert/:/root/cert/
environment:
XRAY_VMESS_AEAD_FORCED: "false"
XUI_ENABLE_FAIL2BAN: "true"
XUI_ENABLE_FAIL2BAN: "false"
tty: true
ports:
<<<<<<< HEAD
- "2053:2053"
restart: unless-stopped
=======
- "2904:2904"
restart: unless-stopped
>>>>>>> 36196363 (Edit files)

0
install.sh Normal file → Executable file
View file