From 382b11cdd8cc5c0dd9a0218c72ac0b742fdd1259 Mon Sep 17 00:00:00 2001 From: Flamur Veliqi Date: Mon, 23 Feb 2026 11:58:29 +0100 Subject: [PATCH] nx-webmail: switch Umbrel app to prebuilt GHCR image --- .../workflows/publish-nx-webmail-image.yml | 69 +++++++++++++++++++ nx-webmail/README.md | 12 ++++ nx-webmail/docker-compose.yml | 5 +- nx-webmail/umbrel-app.yml | 4 +- 4 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/publish-nx-webmail-image.yml diff --git a/.github/workflows/publish-nx-webmail-image.yml b/.github/workflows/publish-nx-webmail-image.yml new file mode 100644 index 0000000..8d491d1 --- /dev/null +++ b/.github/workflows/publish-nx-webmail-image.yml @@ -0,0 +1,69 @@ +name: Publish nx-webmail Image + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - "nx-webmail/**" + - ".github/workflows/publish-nx-webmail-image.yml" + +permissions: + contents: read + packages: write + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Read app version + id: meta + shell: bash + run: | + version=$(grep '^version:' nx-webmail/umbrel-app.yml | awk -F'"' '{print $2}') + if [ -z "$version" ]; then + echo "Could not read nx-webmail version from umbrel-app.yml" >&2 + exit 1 + fi + echo "version=$version" >> "$GITHUB_OUTPUT" + echo "image=ghcr.io/weektab/nx-webmail" >> "$GITHUB_OUTPUT" + + - name: Build and push image + id: build + uses: docker/build-push-action@v6 + with: + context: ./nx-webmail + file: ./nx-webmail/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ steps.meta.outputs.image }}:${{ steps.meta.outputs.version }} + ${{ steps.meta.outputs.image }}:latest + + - name: Summary + shell: bash + run: | + { + echo "### nx-webmail image published" + echo "" + echo "- Image: \`${{ steps.meta.outputs.image }}\`" + echo "- Version tag: \`${{ steps.meta.outputs.version }}\`" + echo "- Digest: \`${{ steps.build.outputs.digest }}\`" + } >> "$GITHUB_STEP_SUMMARY" diff --git a/nx-webmail/README.md b/nx-webmail/README.md index c54248c..2c6ab4b 100644 --- a/nx-webmail/README.md +++ b/nx-webmail/README.md @@ -18,6 +18,17 @@ 3. Open: http://localhost:3001 +## Publish image for Umbrel + +Umbrel installation is most reliable when your app uses a prebuilt image from a registry. + +1. Recommended: use the GitHub Action `.github/workflows/publish-nx-webmail-image.yml`. +2. The workflow reads `version` from `nx-webmail/umbrel-app.yml` and publishes: + - `ghcr.io/weektab/nx-webmail:` + - `ghcr.io/weektab/nx-webmail:latest` +3. Manual fallback: + docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/weektab/nx-webmail:1.0.1 --push . + ## Umbrel app packaging This repository is prepared for Umbrel app-store usage. @@ -41,6 +52,7 @@ This repository is prepared for Umbrel app-store usage. Notes: - Umbrel uses the `app_proxy` service in `docker-compose.yml`. - Internal app port is `3001`. +- `server` uses a prebuilt registry image (`ghcr.io/weektab/nx-webmail:1.0.1`). - If your store prefix changes, update `id` in `umbrel-app.yml` and `APP_HOST` in `docker-compose.yml`. ## Notes diff --git a/nx-webmail/docker-compose.yml b/nx-webmail/docker-compose.yml index 7fcf3a0..df21797 100644 --- a/nx-webmail/docker-compose.yml +++ b/nx-webmail/docker-compose.yml @@ -7,10 +7,7 @@ services: APP_PORT: 3001 server: - build: - context: . - dockerfile: Dockerfile - image: nx-webmail:1.0.0 + image: ghcr.io/weektab/nx-webmail:1.0.1 init: true restart: on-failure stop_grace_period: 1m diff --git a/nx-webmail/umbrel-app.yml b/nx-webmail/umbrel-app.yml index fcb33c3..9384a7c 100644 --- a/nx-webmail/umbrel-app.yml +++ b/nx-webmail/umbrel-app.yml @@ -4,7 +4,7 @@ name: Webmail tagline: Self-hosted IMAP/SMTP webmail client icon: logo.svg category: utilities -version: "1.0.0" +version: "1.0.1" port: 3001 description: >- Webmail is a lightweight, self-hosted webmail app for connecting to external @@ -17,7 +17,7 @@ repo: https://git.weektab.org/nexus/webmail support: https://git.weektab.org/nexus/webmail/issues gallery: [] releaseNotes: >- - Initial Umbrel app packaging. + Switched to a prebuilt container image for more reliable Umbrel installs. dependencies: [] path: "" defaultUsername: ""