Skip to content

chore(sync): integrate Dokploy canary through 5df820a - #38

Merged
Bl4ckBl1zZ merged 40 commits into
mainfrom
automation/dokploy-upstream-sync
Jul 30, 2026
Merged

Bl4ckBl1zZ merged 40 commits into
mainfrom
automation/dokploy-upstream-sync

Conversation

@Bl4ckBl1zZ

@Bl4ckBl1zZ Bl4ckBl1zZ commented Jul 28, 2026 •

Copy link
Copy Markdown
Owner

What is this PR about?

This guarded sync integrates Dokploy upstream canary through 5df820a74. Today's reviewed delta adds 12 commits after d768adb6a, including service icon management, PostgreSQL argument chunking for backup and port operations, Redis infrastructure cleanup, and small DNS and badge UI fixes. The complete PR is 40 commits and 94 paths ahead of the fork's main.

I reviewed every overlapping path. In compose.ts, I preserved the fork's isolated deployment setting and adopted upstream's template icon. Upstream's migration number 0176 collided with the fork's existing 0176-0180 chain, so I generated 0181_exotic_victor_mancha.sql for the compose icon column and regenerated the migration snapshot, journal, and OpenAPI document. A second migration generation reported no drift.

The fork's Cloudflare, Tailscale, Halifax CI, deployment isolation, and other intentional behavior remains present. Upstream canary is still the active source branch.

Verification:

  • pnpm install --frozen-lockfile passed.
  • NODE_ENV=test pnpm --dir apps/dokploy run migration:generate passed twice, with no schema drift on the second run.
  • NODE_ENV=test pnpm --dir apps/dokploy run generate:openapi passed with 584 endpoints.
  • pnpm run format-and-lint passed with six pre-existing warnings.
  • pnpm run typecheck passed across all four projects.
  • A production build passed using an ephemeral local auth secret that was not stored or printed.
  • The full Vitest run passed 80 files and 712 tests, with 1 skipped. Four real deployment tests failed because this machine has no Nixpacks binary and its Docker daemon is not a Swarm manager.

Hosted build, test, and typecheck jobs all passed. This PR remains draft because the automation rules prohibit merging after any failed local run, even when the four failures are caused by missing Nixpacks and Docker Swarm infrastructure.

Risk is high because the cumulative PR includes schema, deployment, proxy, auth, and build behavior. Roll out only after a database backup and review of migration 0181. Roll back the application image first; do not reverse the migration after icon data is written without a deliberate migration plan.

Checklist

  • You created a dedicated branch based on the canary branch. The branch is based on the fork's main and explicitly integrates upstream canary.
  • You have read the suggestions in the CONTRIBUTING.md file https://github.com/Dokploy/dokploy/blob/canary/CONTRIBUTING.md#pull-request
  • You have tested this PR in your local instance. Automated checks and a production build ran locally, but no live Dokploy instance was changed.

Issues related (if applicable)

None.

Screenshots (if applicable)

Not applicable for this upstream integration PR.

Summary by CodeRabbit

  • New Features
    • Added network management for creating, importing, inspecting, syncing, recreating, and deleting Docker networks.
    • Added network assignment controls for applications, databases, and Compose services, including detach options.
    • Added service and Compose icon customization, including template logos.
    • Added a Networks section to the dashboard navigation.
  • Improvements
    • Improved Compose and import previews with scrollable layouts.
    • DNS validation tooltips now show successful validation messages.
    • Tab navigation behaves better on narrow screens.
  • Deprecations
    • Marked Isolated Deployment as deprecated and directed users to Networks.
  • Changes
    • Removed Redis maintenance and health checks from server actions.

Siumauricio and others added 28 commits February 21, 2026 14:53
- Added components for handling and displaying Docker networks, including creation, editing, and listing of networks.
- Introduced a new API router for network operations, integrating with the database schema for network management.
- Updated the sidebar layout to include a link to the networks dashboard, ensuring user access to network features.
- Created necessary database migrations for the network table and its associated types.
- Enhanced the dashboard layout to support the new network management interface.
- Eliminated the unused DOKPLOY_SERVER_VALUE constant from the network handling component.
- Updated the default serverId to undefined in the network form values and adjusted related logic to ensure compatibility with cloud environments.
- Enhanced server validation in the createNetwork function to require a serverId when in cloud mode, improving error handling for network creation.
- Introduced a new column "networkIds" of type text[] with a default value of an empty array to the application, compose, mariadb, mongo, mysql, postgres, and redis tables.
- Updated the application and compose schemas to include the new networkIds field in their respective TypeScript definitions.
- Added corresponding entries in the migration journal and created a snapshot for version 7 to reflect these changes.
- Deleted the SQL files for the "network" table and its associated constraints, as well as the snapshots for versions 0146 and 0147, to clean up the database schema and remove unused components.
- Updated the migration journal to reflect these deletions, ensuring the database remains consistent and manageable.
- Added a new "network" table with various attributes including networkId, name, driver, and constraints for organizationId and serverId.
- Introduced a custom ENUM type "networkDriver" for network drivers.
- Updated existing tables (application, compose, mariadb, mongo, mysql, postgres, redis) to include a new "networkIds" column of type text[].
- Created a snapshot for version 7 to reflect these schema changes in the database.
- Updated the createNetwork function to ensure serverId is required when in cloud mode, improving error handling for network creation.
- Added braces for clarity in the conditional statement, enhancing code readability.
- Deleted the SQL file for the "network" table and its associated constraints, as well as the snapshot for version 0146, to clean up the database schema.
- Updated the migration journal to reflect these deletions, ensuring consistency in the database structure.
- Introduced a new ENUM type "networkDriver" and created the "network" table with various attributes for network management.
- Added "networkIds" column to multiple existing tables (application, compose, mariadb, mongo, mysql, postgres, redis) to support network associations.
- Established foreign key constraints for "organizationId" and "serverId" in the "network" table to ensure referential integrity.
- Updated migration journal and added a new snapshot for version 0166 to reflect these changes.
…gnore

- Deleted the SQL file and snapshot related to the "network" management schema, cleaning up the database structure.
- Updated the migration journal to reflect these deletions.
- Added .playwright-* to .gitignore to exclude Playwright test files from version control.
- Introduced a new SQL file defining the "network" type and its associated table structure.
- Added "networkIds" column to multiple application tables for network association.
- Established foreign key constraints for the "network" table linking to "organization" and "server" tables.
- Updated migration journal and added a new snapshot for versioning.
- Updated the ShowNetworks component to improve the layout and user experience.
- Introduced a new Pencil icon for editing networks and added a Badge component for displaying network drivers.
- Refactored loading and empty state handling for better visual feedback.
- Modified the API query to include server details for each network, enhancing the data returned for better context.
…ogic

- Replaced zodResolver with standardSchemaResolver for improved schema validation.
- Added new toggle options for network settings, enhancing user interface clarity.
- Refactored network creation and update logic to streamline payload handling.
- Updated network form schema to remove default values, ensuring explicit user input.
- Introduced SERVER_LOCAL sentinel for local Dokploy server identification.
- Simplified the network form schema by removing unnecessary fields and enforcing validation rules for IP settings.
- Updated the HandleNetwork component to eliminate the edit functionality, focusing on network creation only.
- Improved the ShowNetworks component by adding a delete action for network management, enhancing user experience.
- Introduced a new SQL migration for the network schema, establishing necessary constraints and types.
- Cleaned up the API by removing the update network functionality, reflecting the immutable nature of Docker networks.
…actions

- Introduced a new ShowNetworkConfig component for displaying detailed Docker network configuration.
- Integrated ShowNetworkConfig into the ShowNetworks component, allowing users to view network details directly.
- Updated the layout of network actions for improved user experience and accessibility.
- Enhanced the API to support network inspection functionality, providing necessary data for the new component.
…synchronization

- Added server filtering capability to the dashboard, allowing users to manage networks specific to selected servers.
- Introduced SyncNetworks component for synchronizing Docker networks with Dokploy, enabling import of new networks and cleanup of stale records.
- Updated HandleNetwork and ShowNetworks components to support server-specific operations, improving user experience and functionality.
- Enhanced API to support network synchronization and importing, ensuring accurate data handling for network management.
…e synchronization

- Added a new API endpoint for recreating Docker networks that have been removed, allowing users to restore networks directly from the Dokploy interface.
- Updated the ShowNetworks and SyncNetworks components to include options for recreating networks, improving user management capabilities.
- Enhanced the network synchronization process to better handle stale records, providing users with clear actions for network maintenance.
- Refactored network creation logic to streamline the process and ensure consistency across network management operations.
- Added functionality for assigning Docker networks to services, allowing users to manage network associations directly from the UI.
- Introduced new components for assigning networks to both individual services and compose files, improving user experience and flexibility.
- Updated existing components to integrate network assignment features, ensuring seamless interaction within the dashboard.
- Enhanced the database schema to support new network-related fields, including `networkIds` and `detachDokployNetwork`, for better service configuration.
- Improved the layout and responsiveness of various UI elements to accommodate new features and enhance usability.
validateDomain returns isValid: true for CDN-fronted domains but reuses
the `error` field to carry the provider's informational warning. Both
domain tooltips branched on `error` alone, so the message rendered under
a red "Error:" heading even though the badge correctly showed a green
"Behind Cloudflare" state.

Check the valid+message case first, matching how the badge already
distinguishes the two. Applied to both the table view (columns.tsx) and
the card view (show-domains.tsx), which shares the same tooltip.

Fixes Dokploy#4910

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Added auditing functionality for network creation, recreation, and deletion actions in the network API.
- Updated the audit log schema to include "network" as a resource type.
- Enhanced the network router to log actions with relevant metadata, improving traceability and accountability for network management operations.
…rk validation

- Added new endpoints for application creation, retrieval, and reloading with detailed request and response schemas.
- Updated existing network validation schemas to enforce minimum length requirements for network IDs.
- Improved OpenAPI documentation to ensure better clarity and validation for application-related operations.
@Bl4ckBl1zZ Bl4ckBl1zZ self-assigned this Jul 28, 2026
@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 64e7be1b-f31f-4027-809f-84c974dea952

📥 Commits

Reviewing files that changed from the base of the PR and between 9a33657 and c809e92.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (93)
  • .gitignore
  • apps/dokploy/__test__/compose/network/service-networks.test.ts
  • apps/dokploy/__test__/drop/drop.test.ts
  • apps/dokploy/__test__/traefik/traefik.test.ts
  • apps/dokploy/components/dashboard/application/advanced/import/show-import.tsx
  • apps/dokploy/components/dashboard/application/domains/columns.tsx
  • apps/dokploy/components/dashboard/application/domains/show-domains.tsx
  • apps/dokploy/components/dashboard/application/icon/show-icon-settings.tsx
  • apps/dokploy/components/dashboard/audit-logs/columns.tsx
  • apps/dokploy/components/dashboard/compose/advanced/add-isolation.tsx
  • apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx
  • apps/dokploy/components/dashboard/networks/assign-compose-networks.tsx
  • apps/dokploy/components/dashboard/networks/assign-networks.tsx
  • apps/dokploy/components/dashboard/networks/handle-network.tsx
  • apps/dokploy/components/dashboard/networks/show-network-config.tsx
  • apps/dokploy/components/dashboard/networks/show-networks.tsx
  • apps/dokploy/components/dashboard/networks/sync-networks.tsx
  • apps/dokploy/components/dashboard/requests/requests-table.tsx
  • apps/dokploy/components/dashboard/settings/servers/actions/show-dokploy-actions.tsx
  • apps/dokploy/components/dashboard/settings/web-server/update-webserver.tsx
  • apps/dokploy/components/dashboard/shared/show-database-advanced-settings.tsx
  • apps/dokploy/components/layouts/side.tsx
  • apps/dokploy/components/shared/drawer-logs.tsx
  • apps/dokploy/components/ui/badge.tsx
  • apps/dokploy/components/ui/button.tsx
  • apps/dokploy/components/ui/textarea.tsx
  • apps/dokploy/drizzle/0180_milky_pride.sql
  • apps/dokploy/drizzle/0181_exotic_victor_mancha.sql
  • apps/dokploy/drizzle/meta/0180_snapshot.json
  • apps/dokploy/drizzle/meta/0181_snapshot.json
  • apps/dokploy/drizzle/meta/_journal.json
  • apps/dokploy/package.json
  • apps/dokploy/pages/dashboard/networks.tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/application/[applicationId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/compose/[composeId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/libsql/[libsqlId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/mariadb/[mariadbId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/mongo/[mongoId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/mysql/[mysqlId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/postgres/[postgresId].tsx
  • apps/dokploy/pages/dashboard/project/[projectId]/environment/[environmentId]/services/redis/[redisId].tsx
  • apps/dokploy/server/api/root.ts
  • apps/dokploy/server/api/routers/ai.ts
  • apps/dokploy/server/api/routers/compose.ts
  • apps/dokploy/server/api/routers/environment.ts
  • apps/dokploy/server/api/routers/network.ts
  • apps/dokploy/server/api/routers/schedule.ts
  • apps/dokploy/server/api/routers/settings.ts
  • apps/dokploy/server/api/routers/volume-backups.ts
  • apps/dokploy/server/queues/redis-connection.ts
  • apps/dokploy/setup.ts
  • apps/schedules/src/utils.ts
  • openapi.json
  • packages/server/src/db/schema/account.ts
  • packages/server/src/db/schema/application.ts
  • packages/server/src/db/schema/audit-log.ts
  • packages/server/src/db/schema/compose.ts
  • packages/server/src/db/schema/index.ts
  • packages/server/src/db/schema/libsql.ts
  • packages/server/src/db/schema/mariadb.ts
  • packages/server/src/db/schema/mongo.ts
  • packages/server/src/db/schema/mysql.ts
  • packages/server/src/db/schema/network.ts
  • packages/server/src/db/schema/postgres.ts
  • packages/server/src/db/schema/redis.ts
  • packages/server/src/db/schema/server.ts
  • packages/server/src/index.ts
  • packages/server/src/services/deployment.ts
  • packages/server/src/services/domain.ts
  • packages/server/src/services/environment.ts
  • packages/server/src/services/mount.ts
  • packages/server/src/services/network.ts
  • packages/server/src/services/port.ts
  • packages/server/src/services/project.ts
  • packages/server/src/services/rollbacks.ts
  • packages/server/src/services/schedule.ts
  • packages/server/src/services/server.ts
  • packages/server/src/services/volume-backups.ts
  • packages/server/src/setup/redis-setup.ts
  • packages/server/src/templates/github.ts
  • packages/server/src/templates/index.ts
  • packages/server/src/utils/builders/index.ts
  • packages/server/src/utils/databases/libsql.ts
  • packages/server/src/utils/databases/mariadb.ts
  • packages/server/src/utils/databases/mongo.ts
  • packages/server/src/utils/databases/mysql.ts
  • packages/server/src/utils/databases/postgres.ts
  • packages/server/src/utils/databases/redis.ts
  • packages/server/src/utils/docker/domain.ts
  • packages/server/src/utils/docker/utils.ts
  • packages/server/src/utils/schedules/index.ts
  • packages/server/src/utils/volume-backups/index.ts
🔥 Files not summarized due to errors (1)
  • openapi.json: Server error: no LLM provider could handle the message

📝 Walkthrough

Walkthrough

This change adds managed Docker network storage, synchronization, creation, inspection, removal, dashboard controls, per-service assignments, Compose network injection, and Swarm network resolution. It also adds Compose icon handling, removes Redis maintenance flows, narrows several database projections, and updates supporting UI styles and fixtures.

Changes

Network management

Layer / File(s) Summary
Network schema and persistence
packages/server/src/db/schema/*, apps/dokploy/drizzle/*
Adds the network table, driver enum, service network fields, validation, relations, migrations, and schema snapshots.
Network services and API
packages/server/src/services/network.ts, apps/dokploy/server/api/routers/network.ts
Adds Docker synchronization, import, create, inspect, recreate, remove, audit, and organization-scoped tRPC operations.
Compose and Swarm integration
packages/server/src/utils/docker/*, packages/server/src/utils/databases/*, packages/server/src/utils/builders/*
Resolves configured service networks, applies Compose attachments and detach behavior, and assigns resolved networks to Swarm services.
Network dashboard
apps/dokploy/pages/dashboard/networks.tsx, apps/dokploy/components/dashboard/networks/*
Adds the network listing, filtering, pagination, synchronization, creation, inspection, and service-assignment interfaces.
Service and supporting updates
apps/dokploy/pages/dashboard/project/..., apps/dokploy/server/api/routers/*, packages/server/src/services/*
Adds Compose icon propagation, removes Redis maintenance operations, narrows relation projections, and updates related UI and fixtures.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

Suggested reviewers: siumauricio

Poem

A rabbit hops through networks bright,
Attaching services left and right.
Compose roots now know the way,
Swarm paths bloom in clear array.
Icons shine and queues are clean—
Carrots for every Docker scene!

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch automation/dokploy-upstream-sync

Comment @coderabbitai help to get the list of available commands.

dmtrTm and others added 12 commits July 28, 2026 15:49
Rolling back any application fails with

  PostgresError: cannot pass more than 100 arguments to a function (54023)

since 0175_fantastic_peter_quill took the application table to 101 columns.
findRollbackById hydrated deployment -> application -> environment -> project,
so drizzle compiled all 101 application columns plus the nested blob into one
json_build_array() call, above the FUNC_MAX_ARGS = 100 limit. At 99 columns it
sat exactly on the limit.

None of that nested data is read: the routers only use deployment.applicationId,
and rollback()/removeRollbackById() read the rollback row itself. Drop the nested
relations, the same shape as Dokploy#4257 for findPreviewDeploymentById.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ersisting

fix(ui): make interactive icons inside badges clickable again
Dokploy stopped using Redis in v0.29.9 when the deployment queue moved
to an in-memory implementation, and install.sh no longer creates the
dokploy-redis service. Remove the remaining references so fresh installs
don't report Redis as unhealthy:

- checkRedisHealth from infrastructure health check
- cleanRedis/reloadRedis endpoints and their UI actions
- initializeRedis dev setup and redis-connection config
- unused bullmq dependency
…vers

chore: remove leftover Redis infrastructure code
fix: avoid postgres 100-argument limit in findRollbackById
…it-finders

fix: avoid postgres 100-argument limit in schedule, volume backup and port queries
- Updated ShowIconSettings component to handle both application and compose service types.
- Added new icon column to the compose table in the database.
- Implemented fetching and updating of icons for services in the environment and application pages.
- Introduced fetchTemplateLogo function to retrieve logos for templates, improving icon handling for compose services.
feat(icon): enhance icon management for services
…tooltip-error-title

fix(domains): don't render CDN info message as an error in DNS tooltip
@Bl4ckBl1zZ Bl4ckBl1zZ changed the title chore(sync): integrate upstream network management chore(sync): integrate Dokploy canary through 5df820a Jul 29, 2026
@Bl4ckBl1zZ
Bl4ckBl1zZ marked this pull request as ready for review July 30, 2026 04:03
@Bl4ckBl1zZ
Bl4ckBl1zZ merged commit 6d8733d into main Jul 30, 2026
3 of 4 checks passed
@Bl4ckBl1zZ
Bl4ckBl1zZ deleted the automation/dokploy-upstream-sync branch July 30, 2026 04:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants