This commit addresses several issues I identified in the backend Docker container:
1. **Xray-core Execution Failure (`open bin/config.json`):**
- I modified `Dockerfile.backend` to correctly set up the Xray-core environment:
- It now creates the `/app/bin` directory.
- It downloads a specified version (v1.8.10) of Xray-core for linux-amd64, along with `geoip.dat` and `geosite.dat`, from the XTLS/Xray-core GitHub releases.
- It renames the Xray binary to `xray-linux-amd64` (matching the expected name pattern from `xray/process.go`) and places it, `geoip.dat`, and `geosite.dat` into `/app/bin/`.
- It makes the `/app/bin/xray-linux-amd64` binary executable.
- This ensures that the `x-ui` application can find the Xray binary and has a writable directory for `config.json`, resolving the "open bin/config.json: no such file or directory" errors.
2. **Fail2ban Configuration Error (`Have not found any log file for sshd jail`):**
- I created a new configuration file `xui_fail2ban.local`.
- This file is copied to `/etc/fail2ban/jail.local` within the Docker image.
- It explicitly disables the `[sshd]` jail, which was causing errors in an environment without an active sshd service or its logs.
- It ensures the `[3x-ipl]` jail (presumably for the panel's IP limiting) remains enabled, relying on the application to manage its specific filter and action rules.
3. **Docker Compose Version Warning:**
- I removed the `version: '3.8'` line from `docker-compose.yml` as it is obsolete and was causing a warning.
These changes aim to create a more stable and correctly configured backend service. You will need to rebuild the Docker images using `docker compose up -d --build --remove-orphans` to apply these fixes.
This commit addresses two primary issues in the backend Docker setup:
1. **Database Initialization Error (CGO_ENABLED):**
The Go binary was previously compiled with `CGO_ENABLED=0`. This caused an error ("Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work") because `go-sqlite3` requires CGo.
- Modified `Dockerfile.backend` to set `CGO_ENABLED=1` during the build.
- Added `gcc`, `musl-dev`, and `sqlite-dev` to the builder stage dependencies for CGo compilation on Alpine.
- Added `sqlite` to the final image stage for runtime library availability.
2. **fail2ban-client Not Found Error:**
The `DockerEntrypoint.sh` script attempted to start `fail2ban-client` without ensuring its presence in the image.
- Added `fail2ban` to the `apk add` command in the final stage of `Dockerfile.backend`.
- Updated `DockerEntrypoint.sh` to check if `fail2ban-client` is available before attempting to start it, preventing errors if it's not found (e.g., if `XUI_ENABLE_FAIL2BAN` is true but installation failed).
These changes should allow the backend container to build and start correctly, resolving the reported database and fail2ban errors. You will need to run `docker compose up -d --build` to apply these changes.