Skip to content

Feature request: cross-project networking, host port exposure, and post-deployment hooks #79

@Vadime

Description

@Vadime

Is your feature request related to a problem? Please describe.
I am using QuickStack in production and overall it works really well. However, I ran into a few limitations that make some real-world deployment scenarios difficult.

The main issue is networking between apps that are deployed in different projects. If two apps are in two separate projects, I cannot reach them internally. Exposing them externally does not solve the problem either, because I run into a NAT issue: both apps end up using the same IP address, which causes conflicts and makes communication unreliable or impossible.

Another limitation is that apps can currently only be exposed through Traefik-oriented workflows. In some cases, I would like to expose an app directly on a node/host port instead. For example, I may want to run an SFTP pod and bind it directly to a host port on a specific node. At the moment, there does not seem to be support for this.

Finally, I understand that not exposing databases is a deliberate security decision. That makes sense for production. However, for development workflows, it would be very helpful to have some secure built-in access mechanism, for example WireGuard support or something similar, so databases and internal services can be reached safely during development.

Additionally, there is currently no way to run post-deployment or post-build logic. In many cases, it is necessary to run tasks such as database migrations or seeding after deployment. There is no built-in mechanism for this.

This also creates practical issues: for example, I am running Gitea inside QuickStack, but it cannot connect to its database because it is deployed in a different project. This ties back to the lack of cross-project networking, but also highlights the need for better orchestration or pipeline-like features.

Describe the solution you’d like
I would like QuickStack to support the following:
1. Cross-project internal connectivity
Apps deployed in different projects should be able to communicate internally in a reliable way, without IP/NAT conflicts.
2. Alternative exposure methods beyond Traefik
It should be possible to expose certain workloads directly via host/node ports, for example for services like SFTP, game servers, or other TCP-based applications that are not a great fit for Traefik.
3. Secure development access to internal services/databases
Even if public database exposure remains intentionally unsupported, it would be great to have built-in support for a secure developer access path, such as WireGuard or a similar VPN/tunneling solution.
4. Post-deployment hooks / pipelines
A way to run logic after build/deployment (e.g. migrations, seeding, setup scripts). This could be implemented as:
• simple post-deploy commands
• or more advanced pipeline/job support
5. Improved service orchestration across projects
Either through proper cross-project networking or another mechanism, so services like Gitea can reliably connect to their databases even when deployed in different projects.

Describe alternatives you’ve considered
For cross-project communication, I considered restructuring apps so they live inside the same project, but that is not always practical from an organizational or architectural perspective.

For non-HTTP services such as SFTP, I considered handling exposure outside of QuickStack, but that reduces the value of having a unified deployment platform.

For database access during development, external VPN or tunneling setups are possible, but built-in support would make the developer experience much smoother and easier to manage.

For post-deployment tasks, I considered handling migrations and seeding manually or via external CI/CD pipelines, but this breaks the deployment flow and adds operational overhead.

Additional context
This feedback comes from using QuickStack in production. In general, the experience has been very positive, and these points are the main gaps I have noticed so far.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions