diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml
new file mode 100644
index 000000000..3d52419ed
--- /dev/null
+++ b/.forgejo/workflows/build.yml
@@ -0,0 +1,41 @@
+name: Build MapleDeploy Coolify Image
+
+on:
+ push:
+ branches: [mapledeploy]
+ paths-ignore:
+ - "*.md"
+ - ".github/**"
+ - "templates/**"
+
+env:
+ REGISTRY: forgejo.mapledeploy.ca
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Get version
+ id: version
+ run: |
+ VERSION=$(sed -n "s/.*'version' => '\([^']*\)'.*/\1/p" config/constants.php)
+ echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT"
+ echo "Building version: ${VERSION}"
+
+ - name: Login to Forgejo registry
+ run: |
+ echo "${{ secrets.FORGEJO_TOKEN }}" | docker login ${{ env.REGISTRY }} -u ${{ github.repository_owner }} --password-stdin
+
+ - name: Build image
+ run: |
+ DOCKER_BUILDKIT=1 docker build -f docker/production/Dockerfile \
+ -t ${{ env.REGISTRY }}/${{ github.repository }}:${{ steps.version.outputs.VERSION }} \
+ -t ${{ env.REGISTRY }}/${{ github.repository }}:latest \
+ .
+
+ - name: Push image
+ run: |
+ docker push ${{ env.REGISTRY }}/${{ github.repository }}:${{ steps.version.outputs.VERSION }}
+ docker push ${{ env.REGISTRY }}/${{ github.repository }}:latest
diff --git a/.github/workflows/chore-lock-closed-issues-discussions-and-prs.yml b/.github/workflows/chore-lock-closed-issues-discussions-and-prs.yml
deleted file mode 100644
index 365842254..000000000
--- a/.github/workflows/chore-lock-closed-issues-discussions-and-prs.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Lock closed Issues, Discussions, and PRs
-
-on:
- schedule:
- - cron: '0 1 * * *'
-
-permissions:
- issues: write
- discussions: write
- pull-requests: write
-
-jobs:
- lock-threads:
- runs-on: ubuntu-latest
- steps:
- - name: Lock threads after 30 days of inactivity
- uses: dessant/lock-threads@v5
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- issue-inactive-days: '30'
- discussion-inactive-days: '30'
- pr-inactive-days: '30'
diff --git a/.github/workflows/chore-manage-stale-issues-and-prs.yml b/.github/workflows/chore-manage-stale-issues-and-prs.yml
deleted file mode 100644
index d61005549..000000000
--- a/.github/workflows/chore-manage-stale-issues-and-prs.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: Manage Stale Issues and PRs
-
-on:
- schedule:
- - cron: '0 2 * * *'
-
-permissions:
- issues: write
- pull-requests: write
-
-jobs:
- manage-stale:
- runs-on: ubuntu-latest
- steps:
- - name: Manage stale issues and PRs
- uses: actions/stale@v9
- id: stale
- with:
- stale-issue-message: 'This issue will be automatically closed in a few days if no response is received. Please provide an update with the requested information.'
- stale-pr-message: 'This pull request requires attention. If no changes or response is received within the next few days, it will be automatically closed. Please update your PR or leave a comment with the requested information.'
- close-issue-message: 'This issue has been automatically closed due to inactivity.'
- close-pr-message: 'Thank you for your contribution. Due to inactivity, this PR was automatically closed. If you would like to continue working on this change in the future, feel free to reopen this PR or submit a new one.'
- days-before-stale: 14
- days-before-close: 7
- stale-issue-label: 'β±οΈ Stale'
- stale-pr-label: 'β±οΈ Stale'
- only-labels: 'π€ Waiting for feedback, π€ Waiting for changes'
- remove-stale-when-updated: true
- operations-per-run: 100
- labels-to-remove-when-unstale: 'β±οΈ Stale, π€ Waiting for feedback, π€ Waiting for changes'
- close-issue-reason: 'not_planned'
- exempt-all-milestones: false
diff --git a/.github/workflows/chore-pr-comments.yml b/.github/workflows/chore-pr-comments.yml
deleted file mode 100644
index 1d94bec81..000000000
--- a/.github/workflows/chore-pr-comments.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: Add comment based on label
-on:
- pull_request_target:
- types:
- - labeled
-
-permissions:
- pull-requests: write
-
-jobs:
- add-comment:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- include:
- - label: "βοΈ Service"
- body: |
- Hi @${{ github.event.pull_request.user.login }}! π
-
- It appears to us that you are either adding a new service or making changes to an existing one.
- We kindly ask you to also review and update the **Coolify Documentation** to include this new service or it's new configuration needs.
- This will help ensure that our documentation remains accurate and up-to-date for all users.
-
- Coolify Docs Repository: https://github.com/coollabsio/coolify-docs
- How to Contribute a new Service to the Docs: https://coolify.io/docs/get-started/contribute/service#adding-a-new-service-template-to-the-coolify-documentation
- - label: "π οΈ Feature"
- body: |
- Hi @${{ github.event.pull_request.user.login }}! π
-
- It appears to us that you are adding a new feature to Coolify.
- We kindly ask you to also update the **Coolify Documentation** to include information about this new feature.
- This will help ensure that our documentation remains accurate and up-to-date for all users.
-
- Coolify Docs Repository: https://github.com/coollabsio/coolify-docs
- How to Contribute to the Docs: https://coolify.io/docs/get-started/contribute/documentation
- # - label: "β¨ Enhancement"
- # body: |
- # It appears to us that you are making an enhancement to Coolify.
- # We kindly ask you to also review and update the Coolify Documentation to include information about this enhancement if applicable.
- # This will help ensure that our documentation remains accurate and up-to-date for all users.
- steps:
- - name: Add comment
- if: github.event.label.name == matrix.label
- run: gh pr comment "$NUMBER" --body "$BODY"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- GH_REPO: ${{ github.repository }}
- NUMBER: ${{ github.event.pull_request.number }}
- BODY: ${{ matrix.body }}
diff --git a/.github/workflows/chore-remove-labels-and-assignees-on-close.yml b/.github/workflows/chore-remove-labels-and-assignees-on-close.yml
deleted file mode 100644
index 8ac199a08..000000000
--- a/.github/workflows/chore-remove-labels-and-assignees-on-close.yml
+++ /dev/null
@@ -1,86 +0,0 @@
-name: Remove Labels and Assignees on Issue Close
-
-on:
- issues:
- types: [closed]
- pull_request:
- types: [closed]
- pull_request_target:
- types: [closed]
-
-permissions:
- issues: write
- pull-requests: write
-
-jobs:
- remove-labels-and-assignees:
- runs-on: ubuntu-latest
- steps:
- - name: Remove labels and assignees
- uses: actions/github-script@v7
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- script: |
- const { owner, repo } = context.repo;
-
- async function processIssue(issueNumber, isFromPR = false, prBaseBranch = null) {
- try {
- if (isFromPR && prBaseBranch !== 'v4.x') {
- return;
- }
-
- const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({
- owner,
- repo,
- issue_number: issueNumber
- });
-
- const labelsToKeep = currentLabels
- .filter(label => label.name === 'β±οΈ Stale')
- .map(label => label.name);
-
- await github.rest.issues.setLabels({
- owner,
- repo,
- issue_number: issueNumber,
- labels: labelsToKeep
- });
-
- const { data: issue } = await github.rest.issues.get({
- owner,
- repo,
- issue_number: issueNumber
- });
-
- if (issue.assignees && issue.assignees.length > 0) {
- await github.rest.issues.removeAssignees({
- owner,
- repo,
- issue_number: issueNumber,
- assignees: issue.assignees.map(assignee => assignee.login)
- });
- }
- } catch (error) {
- if (error.status !== 404) {
- console.error(`Error processing issue ${issueNumber}:`, error);
- }
- }
- }
-
- if (context.eventName === 'issues') {
- await processIssue(context.payload.issue.number);
- }
-
- if (context.eventName === 'pull_request' || context.eventName === 'pull_request_target') {
- const pr = context.payload.pull_request;
- await processIssue(pr.number);
- if (pr.merged && pr.base.ref === 'v4.x' && pr.body) {
- const issueReferences = pr.body.match(/#(\d+)/g);
- if (issueReferences) {
- for (const reference of issueReferences) {
- const issueNumber = parseInt(reference.substring(1));
- await processIssue(issueNumber, true, pr.base.ref);
- }
- }
- }
- }
diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml
deleted file mode 100644
index 2b8d50c0d..000000000
--- a/.github/workflows/claude.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: Claude Code
-
-on:
- issue_comment:
- types: [created]
- pull_request_review_comment:
- types: [created]
- issues:
- types: [opened, assigned]
- pull_request_review:
- types: [submitted]
-
-jobs:
- claude:
- if: |
- (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
- (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
- (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
- (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
- runs-on: ubuntu-latest
- permissions:
- contents: write
- pull-requests: write
- issues: write
- id-token: write
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- fetch-depth: 1
-
- - name: Run Claude Code
- id: claude
- uses: anthropics/claude-code-action@v1
- with:
- claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
- claude_args: '--model opus'
diff --git a/.github/workflows/cleanup-ghcr-untagged.yml b/.github/workflows/cleanup-ghcr-untagged.yml
deleted file mode 100644
index a86cedcb0..000000000
--- a/.github/workflows/cleanup-ghcr-untagged.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Cleanup Untagged GHCR Images
-
-on:
- workflow_dispatch:
-
-permissions:
- packages: write
-
-jobs:
- cleanup-all-packages:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- package: ['coolify', 'coolify-helper', 'coolify-realtime', 'coolify-testing-host']
- steps:
- - name: Delete untagged ${{ matrix.package }} images
- uses: actions/delete-package-versions@v5
- with:
- package-name: ${{ matrix.package }}
- package-type: 'container'
- min-versions-to-keep: 0
- delete-only-untagged-versions: 'true'
diff --git a/.github/workflows/coolify-helper-next.yml b/.github/workflows/coolify-helper-next.yml
deleted file mode 100644
index 2e50abbe7..000000000
--- a/.github/workflows/coolify-helper-next.yml
+++ /dev/null
@@ -1,117 +0,0 @@
-name: Coolify Helper Image Development
-
-on:
- push:
- branches: [ "next" ]
- paths:
- - .github/workflows/coolify-helper-next.yml
- - docker/coolify-helper/Dockerfile
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify-helper"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getHelperVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/coolify-helper/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-${{ matrix.arch }}
- labels: |
- coolify.managed=true
-
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getHelperVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:next
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:next
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}
-
diff --git a/.github/workflows/coolify-helper.yml b/.github/workflows/coolify-helper.yml
deleted file mode 100644
index ed6fc3bcb..000000000
--- a/.github/workflows/coolify-helper.yml
+++ /dev/null
@@ -1,116 +0,0 @@
-name: Coolify Helper Image
-
-on:
- push:
- branches: [ "v4.x" ]
- paths:
- - .github/workflows/coolify-helper.yml
- - docker/coolify-helper/Dockerfile
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify-helper"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getHelperVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/coolify-helper/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}
- labels: |
- coolify.managed=true
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getHelperVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_PROD_RELEASE_CHANNEL }}
-
diff --git a/.github/workflows/coolify-production-build.yml b/.github/workflows/coolify-production-build.yml
deleted file mode 100644
index 477274751..000000000
--- a/.github/workflows/coolify-production-build.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-name: Production Build (v4)
-
-on:
- push:
- branches: ["v4.x"]
- paths-ignore:
- - .github/workflows/coolify-helper.yml
- - .github/workflows/coolify-helper-next.yml
- - .github/workflows/coolify-realtime.yml
- - .github/workflows/coolify-realtime-next.yml
- - docker/coolify-helper/Dockerfile
- - docker/coolify-realtime/Dockerfile
- - docker/testing-host/Dockerfile
- - templates/**
- - CHANGELOG.md
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/production/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}
-
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_PROD_RELEASE_CHANNEL }}
diff --git a/.github/workflows/coolify-realtime-next.yml b/.github/workflows/coolify-realtime-next.yml
deleted file mode 100644
index 8937ea27d..000000000
--- a/.github/workflows/coolify-realtime-next.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-name: Coolify Realtime Development
-
-on:
- push:
- branches: [ "next" ]
- paths:
- - .github/workflows/coolify-realtime-next.yml
- - docker/coolify-realtime/Dockerfile
- - docker/coolify-realtime/terminal-server.js
- - docker/coolify-realtime/package.json
- - docker/coolify-realtime/package-lock.json
- - docker/coolify-realtime/soketi-entrypoint.sh
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify-realtime"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getRealtimeVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/coolify-realtime/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-${{ matrix.arch }}
- labels: |
- coolify.managed=true
-
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getRealtimeVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:next
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-next \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:next
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}
diff --git a/.github/workflows/coolify-realtime.yml b/.github/workflows/coolify-realtime.yml
deleted file mode 100644
index d8784dd50..000000000
--- a/.github/workflows/coolify-realtime.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-name: Coolify Realtime
-
-on:
- push:
- branches: [ "v4.x" ]
- paths:
- - .github/workflows/coolify-realtime.yml
- - docker/coolify-realtime/Dockerfile
- - docker/coolify-realtime/terminal-server.js
- - docker/coolify-realtime/package.json
- - docker/coolify-realtime/package-lock.json
- - docker/coolify-realtime/soketi-entrypoint.sh
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify-realtime"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getRealtimeVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/coolify-realtime/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }}
- labels: |
- coolify.managed=true
-
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Get Version
- id: version
- run: |
- echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getRealtimeVersion.php)"|xargs >> $GITHUB_OUTPUT
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }} \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_PROD_RELEASE_CHANNEL }}
diff --git a/.github/workflows/coolify-staging-build.yml b/.github/workflows/coolify-staging-build.yml
deleted file mode 100644
index 494ef6939..000000000
--- a/.github/workflows/coolify-staging-build.yml
+++ /dev/null
@@ -1,133 +0,0 @@
-name: Staging Build
-
-on:
- push:
- branches-ignore:
- - v4.x
- - v3.x
- - '**v5.x**'
- paths-ignore:
- - .github/workflows/coolify-helper.yml
- - .github/workflows/coolify-helper-next.yml
- - .github/workflows/coolify-realtime.yml
- - .github/workflows/coolify-realtime-next.yml
- - docker/coolify-helper/Dockerfile
- - docker/coolify-realtime/Dockerfile
- - docker/testing-host/Dockerfile
- - templates/**
- - CHANGELOG.md
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Sanitize branch name for Docker tag
- id: sanitize
- run: |
- # Replace slashes and other invalid characters with dashes
- SANITIZED_NAME=$(echo "${{ github.ref_name }}" | sed 's/[\/]/-/g')
- echo "tag=${SANITIZED_NAME}" >> $GITHUB_OUTPUT
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/production/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}-${{ matrix.arch }}
- cache-from: |
- type=gha,scope=build-${{ matrix.arch }}
- type=registry,ref=${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache-${{ matrix.arch }}
- cache-to: type=gha,mode=max,scope=build-${{ matrix.arch }}
-
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Sanitize branch name for Docker tag
- id: sanitize
- run: |
- # Replace slashes and other invalid characters with dashes
- SANITIZED_NAME=$(echo "${{ github.ref_name }}" | sed 's/[\/]/-/g')
- echo "tag=${SANITIZED_NAME}" >> $GITHUB_OUTPUT
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.sanitize.outputs.tag }}
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}
diff --git a/.github/workflows/coolify-testing-host.yml b/.github/workflows/coolify-testing-host.yml
deleted file mode 100644
index 0c1371573..000000000
--- a/.github/workflows/coolify-testing-host.yml
+++ /dev/null
@@ -1,104 +0,0 @@
-name: Coolify Testing Host
-
-on:
- push:
- branches: [ "next" ]
- paths:
- - .github/workflows/coolify-testing-host.yml
- - docker/testing-host/Dockerfile
-
-permissions:
- contents: read
- packages: write
-
-env:
- GITHUB_REGISTRY: ghcr.io
- DOCKER_REGISTRY: docker.io
- IMAGE_NAME: "coollabsio/coolify-testing-host"
-
-jobs:
- build-push:
- strategy:
- matrix:
- include:
- - arch: amd64
- platform: linux/amd64
- runner: ubuntu-24.04
- - arch: aarch64
- platform: linux/aarch64
- runner: ubuntu-24.04-arm
- runs-on: ${{ matrix.runner }}
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Build and Push Image (${{ matrix.arch }})
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/testing-host/Dockerfile
- platforms: ${{ matrix.platform }}
- push: true
- tags: |
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-${{ matrix.arch }}
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-${{ matrix.arch }}
- labels: |
- coolify.managed=true
-
- merge-manifest:
- runs-on: ubuntu-24.04
- needs: build-push
- steps:
- - uses: actions/checkout@v5
- with:
- persist-credentials: false
-
- - uses: docker/setup-buildx-action@v3
-
- - name: Login to ${{ env.GITHUB_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.GITHUB_REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Login to ${{ env.DOCKER_REGISTRY }}
- uses: docker/login-action@v3
- with:
- registry: ${{ env.DOCKER_REGISTRY }}
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
-
- - name: Create & publish manifest on ${{ env.GITHUB_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64 \
- ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-aarch64 \
- --tag ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - name: Create & publish manifest on ${{ env.DOCKER_REGISTRY }}
- run: |
- docker buildx imagetools create \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64 \
- ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest-aarch64 \
- --tag ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
-
- - uses: sarisia/actions-status-discord@v1
- if: always()
- with:
- webhook: ${{ secrets.DISCORD_WEBHOOK_DEV_RELEASE_CHANNEL }}
diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml
deleted file mode 100644
index 935a88721..000000000
--- a/.github/workflows/generate-changelog.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-name: Generate Changelog
-
-on:
- push:
- branches: [ v4.x ]
- workflow_dispatch:
-
-permissions:
- contents: write
-
-jobs:
- changelog:
- name: Generate changelog
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Generate changelog
- uses: orhun/git-cliff-action@v4
- with:
- config: cliff.toml
- args: --verbose
- env:
- OUTPUT: CHANGELOG.md
- GITHUB_REPO: ${{ github.repository }}
-
- - name: Commit
- run: |
- git config user.name 'github-actions[bot]'
- git config user.email 'github-actions[bot]@users.noreply.github.com'
- git add CHANGELOG.md
- git commit -m "docs: update changelog"
- git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git v4.x
diff --git a/app/Actions/Proxy/CheckProxy.php b/app/Actions/Proxy/CheckProxy.php
index 99537e606..eab534ef9 100644
--- a/app/Actions/Proxy/CheckProxy.php
+++ b/app/Actions/Proxy/CheckProxy.php
@@ -102,7 +102,8 @@ public function handle(Server $server, $fromUI = false): bool
foreach ($conflicts as $port => $conflict) {
if ($conflict) {
if ($fromUI) {
- throw new \Exception("Port $port is in use.
You must stop the process using this port.
Docs: https://coolify.io/docs
Discord: https://coolify.io/discord");
+ // MapleDeploy branding: support links
+ throw new \Exception("Port $port is in use.
You must stop the process using this port.
Support: https://mapledeploy.ca/contact");
} else {
return false;
}
diff --git a/app/Console/Commands/Init.php b/app/Console/Commands/Init.php
index 66cb77838..4c0a53d50 100644
--- a/app/Console/Commands/Init.php
+++ b/app/Console/Commands/Init.php
@@ -263,15 +263,11 @@ private function restoreCoolifyDbBackup()
}
}
+ // MapleDeploy branding: telemetry disabled β no phone-home signal
private function sendAliveSignal()
{
- $id = config('app.id');
- $version = config('constants.coolify.version');
- try {
- Http::get("https://undead.coolify.io/v4/alive?appId=$id&version=$version");
- } catch (\Throwable $e) {
- echo "Error in sending live signal: {$e->getMessage()}\n";
- }
+ // Disabled for MapleDeploy: do not send telemetry to coolify.io
+ return;
}
private function replaceSlashInEnvironmentName()
diff --git a/app/Http/Controllers/Api/OpenApi.php b/app/Http/Controllers/Api/OpenApi.php
index 33d21ba5d..26b3ef519 100644
--- a/app/Http/Controllers/Api/OpenApi.php
+++ b/app/Http/Controllers/Api/OpenApi.php
@@ -4,8 +4,9 @@
use OpenApi\Attributes as OA;
-#[OA\Info(title: 'Coolify', version: '0.1')]
-#[OA\Server(url: 'https://app.coolify.io/api/v1', description: 'Coolify Cloud API. Change the host to your own instance if you are self-hosting.')]
+// MapleDeploy branding: API documentation
+#[OA\Info(title: 'MapleDeploy', version: '0.1')]
+#[OA\Server(url: '/api/v1', description: 'MapleDeploy API. Powered by Coolify.')]
#[OA\SecurityScheme(
type: 'http',
scheme: 'bearer',
diff --git a/app/Livewire/Help.php b/app/Livewire/Help.php
index 490515875..29bd05aa2 100644
--- a/app/Livewire/Help.php
+++ b/app/Livewire/Help.php
@@ -35,14 +35,12 @@ public function submit()
$mail->subject("[HELP]: {$this->subject}");
$type = set_transanctional_email_settings($settings);
- // Sending feedback through Cloud API
+ // MapleDeploy branding: feedback sent to MapleDeploy support
if (blank($type)) {
- $url = 'https://app.coolify.io/api/feedback';
- Http::post($url, [
- 'content' => 'User: `'.auth()->user()?->email.'` with subject: `'.$this->subject.'` has the following problem: `'.$this->description.'`',
- ]);
+ // No external API β log locally when SMTP not configured
+ \Illuminate\Support\Facades\Log::info('Feedback from '.auth()->user()?->email.': '.$this->subject.' β '.$this->description);
} else {
- send_user_an_email($mail, auth()->user()?->email, 'feedback@coollabs.io');
+ send_user_an_email($mail, auth()->user()?->email, 'support@mapledeploy.ca');
}
$this->dispatch('success', 'Feedback sent.', 'We will get in touch with you as soon as possible.');
$this->reset('description', 'subject');
diff --git a/config/app.php b/config/app.php
index a94cfadd8..08b3bd88f 100644
--- a/config/app.php
+++ b/config/app.php
@@ -17,7 +17,7 @@
|
*/
- 'name' => env('APP_NAME', 'Coolify'),
+ 'name' => env('APP_NAME', 'MapleDeploy'), // MapleDeploy branding
/*
|--------------------------------------------------------------------------
diff --git a/config/constants.php b/config/constants.php
index 0b404fe9d..bde7cec9a 100644
--- a/config/constants.php
+++ b/config/constants.php
@@ -1,16 +1,17 @@
[
'version' => '4.0.0-beta.463',
'helper_version' => '1.0.12',
'realtime_version' => '1.0.10',
'self_hosted' => env('SELF_HOSTED', true),
- 'autoupdate' => env('AUTOUPDATE'),
+ 'autoupdate' => env('AUTOUPDATE', false),
'base_config_path' => env('BASE_CONFIG_PATH', '/data/coolify'),
- 'registry_url' => env('REGISTRY_URL', 'ghcr.io'),
- 'helper_image' => env('HELPER_IMAGE', env('REGISTRY_URL', 'ghcr.io').'/coollabsio/coolify-helper'),
- 'realtime_image' => env('REALTIME_IMAGE', env('REGISTRY_URL', 'ghcr.io').'/coollabsio/coolify-realtime'),
+ 'registry_url' => env('REGISTRY_URL', 'forgejo.mapledeploy.ca'),
+ 'helper_image' => env('HELPER_IMAGE', 'ghcr.io/coollabsio/coolify-helper'),
+ 'realtime_image' => env('REALTIME_IMAGE', 'ghcr.io/coollabsio/coolify-realtime'),
'is_windows_docker_desktop' => env('IS_WINDOWS_DOCKER_DESKTOP', false),
'cdn_url' => env('CDN_URL', 'https://cdn.coollabs.io'),
'versions_url' => env('VERSIONS_URL', env('CDN_URL', 'https://cdn.coollabs.io').'/coolify/versions.json'),
@@ -19,8 +20,8 @@
],
'urls' => [
- 'docs' => 'https://coolify.io/docs',
- 'contact' => 'https://coolify.io/docs/contact',
+ 'docs' => 'https://mapledeploy.ca/docs',
+ 'contact' => 'https://mapledeploy.ca/contact',
],
'services' => [
@@ -85,12 +86,13 @@
'verification_code_expiry_minutes' => 10,
],
+ // MapleDeploy branding: telemetry disabled
'sentry' => [
- 'sentry_dsn' => env('SENTRY_DSN'),
+ 'sentry_dsn' => null,
],
'webhooks' => [
- 'feedback_discord_webhook' => env('FEEDBACK_DISCORD_WEBHOOK'),
+ 'feedback_discord_webhook' => null,
'dev_webhook' => env('SERVEO_URL'),
],
diff --git a/config/livewire.php b/config/livewire.php
index bd3733076..716739b17 100644
--- a/config/livewire.php
+++ b/config/livewire.php
@@ -118,7 +118,7 @@
'navigate' => [
'show_progress_bar' => true,
- 'progress_bar_color' => '#ffff00',
+ 'progress_bar_color' => '#fcd452',
],
/*
diff --git a/public/mapledeploy-favicon.ico b/public/mapledeploy-favicon.ico
new file mode 100644
index 000000000..8cc2c38c1
Binary files /dev/null and b/public/mapledeploy-favicon.ico differ
diff --git a/resources/css/app.css b/resources/css/app.css
index eeba1ee01..b0bcbc5c8 100644
--- a/resources/css/app.css
+++ b/resources/css/app.css
@@ -13,10 +13,12 @@
@custom-variant dark (&:where(.dark, .dark *));
+/* MapleDeploy branding: Canadian red accent, stone greys */
@theme {
--font-sans: Inter, sans-serif;
+ --font-display: 'Overlock', sans-serif;
- --color-base: #101010;
+ --color-base: #0c0a09;
--color-warning: #fcd452;
--color-warning-50: #fefce8;
--color-warning-100: #fef9c3;
@@ -30,16 +32,16 @@ @theme {
--color-warning-900: #713f12;
--color-success: #22C55E;
--color-error: #dc2626;
- --color-coollabs-50: #f5f0ff;
- --color-coollabs: #6b16ed;
- --color-coollabs-100: #7317ff;
- --color-coollabs-200: #5a12c7;
- --color-coollabs-300: #4a0fa3;
- --color-coolgray-100: #181818;
- --color-coolgray-200: #202020;
- --color-coolgray-300: #242424;
- --color-coolgray-400: #282828;
- --color-coolgray-500: #323232;
+ --color-coollabs-50: #fef3f2;
+ --color-coollabs: #d52b1e;
+ --color-coollabs-100: #f34d40;
+ --color-coollabs-200: #bc2519;
+ --color-coollabs-300: #9c2118;
+ --color-coolgray-100: #1c1917;
+ --color-coolgray-200: #292524;
+ --color-coolgray-300: #44403c;
+ --color-coolgray-400: #57534e;
+ --color-coolgray-500: #78716c;
}
/*
@@ -122,19 +124,19 @@ button[isHighlighted]:not(:disabled) {
}
h1 {
- @apply text-3xl font-bold dark:text-white;
+ @apply text-3xl font-bold font-display dark:text-white;
}
h2 {
- @apply text-xl font-bold dark:text-white;
+ @apply text-xl font-bold font-display dark:text-white;
}
h3 {
- @apply text-lg font-bold dark:text-white;
+ @apply text-lg font-bold font-display dark:text-white;
}
h4 {
- @apply text-base font-bold dark:text-white;
+ @apply text-base font-bold font-display dark:text-white;
}
a {
diff --git a/resources/css/fonts.css b/resources/css/fonts.css
index c8c4448eb..4154e6077 100644
--- a/resources/css/fonts.css
+++ b/resources/css/fonts.css
@@ -70,3 +70,12 @@ @font-face {
src: url('../fonts/inter-v13-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff2') format('woff2');
}
+/* MapleDeploy branding: Overlock for headings */
+@font-face {
+ font-display: swap;
+ font-family: 'Overlock';
+ font-style: normal;
+ font-weight: 900;
+ src: url('../fonts/overlock-v19-latin-900.woff2') format('woff2'),
+ url('../fonts/overlock-v19-latin-900.ttf') format('truetype');
+}
diff --git a/resources/fonts/overlock-v19-latin-900.ttf b/resources/fonts/overlock-v19-latin-900.ttf
new file mode 100644
index 000000000..0cd2b55d3
Binary files /dev/null and b/resources/fonts/overlock-v19-latin-900.ttf differ
diff --git a/resources/fonts/overlock-v19-latin-900.woff2 b/resources/fonts/overlock-v19-latin-900.woff2
new file mode 100644
index 000000000..25b3a0177
Binary files /dev/null and b/resources/fonts/overlock-v19-latin-900.woff2 differ
diff --git a/resources/views/auth/confirm-password.blade.php b/resources/views/auth/confirm-password.blade.php
index ce8f21481..f6eb9d686 100644
--- a/resources/views/auth/confirm-password.blade.php
+++ b/resources/views/auth/confirm-password.blade.php
@@ -3,9 +3,10 @@
Confirm Your Password
diff --git a/resources/views/auth/forgot-password.blade.php b/resources/views/auth/forgot-password.blade.php index 4952cfabd..23d325a04 100644 --- a/resources/views/auth/forgot-password.blade.php +++ b/resources/views/auth/forgot-password.blade.php @@ -3,9 +3,10 @@{{ __('auth.forgot_password_heading') }}
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index ede49117a..21f7c2ec2 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -3,9 +3,10 @@Create your account
diff --git a/resources/views/auth/reset-password.blade.php b/resources/views/auth/reset-password.blade.php index 3e0c237b4..88f096d28 100644 --- a/resources/views/auth/reset-password.blade.php +++ b/resources/views/auth/reset-password.blade.php @@ -3,9 +3,10 @@{{ __('auth.reset_password') }}
diff --git a/resources/views/auth/two-factor-challenge.blade.php b/resources/views/auth/two-factor-challenge.blade.php index 05dbcc90c..fa2bc80f2 100644 --- a/resources/views/auth/two-factor-challenge.blade.php +++ b/resources/views/auth/two-factor-challenge.blade.php @@ -47,9 +47,10 @@Two-Factor Authentication
diff --git a/resources/views/components/callout.blade.php b/resources/views/components/callout.blade.php index ec99729ef..8203d6735 100644 --- a/resources/views/components/callout.blade.php +++ b/resources/views/components/callout.blade.php @@ -48,7 +48,7 @@ {!! $icon !!}Start self-hosting without limits with - our - OSS version. Same features as the paid version, but you have to manage by yourself.
+ the + open source version. Same features as the paid version, but you have to manage by yourself.+ {{-- MapleDeploy branding: link to upstream Coolify docs for technical reference --}} For more help, check this documentation.
@@ -248,12 +219,12 @@ class="bg-red-200 dark:bg-red-900 px-1 rounded-sm">~/.ssh/authorized_keys called resources). All CPU-intensive operations run on the target server.
-
-
-
-
Non-root user support is experimental.
+ {{-- MapleDeploy branding: link to upstream Coolify docs for technical reference --}}
Learn
more
@@ -473,7 +445,7 @@ class="grid grid-cols-1 lg:grid-cols-2 gap-4 p-4 rounded-lg border border-neutra
-
diff --git a/resources/views/livewire/dashboard.blade.php b/resources/views/livewire/dashboard.blade.php
index a58ca0a00..0aedf2a8f 100644
--- a/resources/views/livewire/dashboard.blade.php
+++ b/resources/views/livewire/dashboard.blade.php
@@ -1,6 +1,6 @@
Destinations
diff --git a/resources/views/livewire/force-password-reset.blade.php b/resources/views/livewire/force-password-reset.blade.php
index 96efaaf39..30f58eb4c 100644
--- a/resources/views/livewire/force-password-reset.blade.php
+++ b/resources/views/livewire/force-password-reset.blade.php
@@ -1,8 +1,9 @@