Deploy your first app on EU infrastructure
What we do
We're a simple platform for deploying your applications to the web. You bring your code, we handle the rest — builds, networking, TLS, and hosting. Whether it's a backend API, an internal worker, or a static website, you can have it running in minutes. We support web services (public-facing), private services (internal, service-to-service), and static websites. Every public service gets a subdomain out of the box so you can start using it right away, and you can attach your own custom domain whenever you're ready. We're a European company, and our infrastructure runs entirely out of European regions. We're GDPR compliant by default — no extra configuration needed.
First deployment
Deploying your first app takes just a few steps: 1 - Point us to your code, either a Git repository (public or private) or a Docker image from a container registry. 2 - Pick your location and pod size — all available regions are based in Europe. 3 - Hit deploy. That's it. We build your app, assign it a subdomain, and it's live. No infrastructure to configure, no YAML to wrestle with.
Migrating from another platform
Coming from Heroku, Railway, or Render? Most apps migrate in minutes. We support the same runtimes and a similar Git-based deployment model, so your existing app will likely work without changes. From Heroku: replace your Procfile with a run command in the service settings. Heroku-style buildpacks are not supported — use a native runtime or a Dockerfile instead. Environment variables, add-on credentials, and custom domains all map directly to Partiri equivalents. From Railway or Render: your build command, start command, and environment variables transfer as-is. If you are using a Dockerfile, it will work unchanged. Custom domains and TLS certificates are provisioned automatically. There is no sleep-on-idle behavior — services run continuously. One difference worth noting: there is no automatic preview environment feature for pull requests. Deployments are always triggered manually or via Git push webhooks to a configured branch.
Migrating from Heroku, Railway or Render? See the dedicated guide for your platform.
Still deciding? Compare Partiri with Render, Railway or Fly.io side by side.
Security & compliance
Partiri is a European platform. All infrastructure runs in EU regions and customer data stays within the EU. We are GDPR-compliant by default — no extra configuration is required. Containers run as non-root users (UID 1001) with read-only root filesystems and dropped Linux capabilities. Each service runs in an isolated Kubernetes pod on a shared cluster. We handle TLS certificate provisioning and renewal automatically via Let's Encrypt. HTTPS is enforced for all public-facing web services and static websites. Private services are never exposed to the internet — they are only reachable from other services within the same workspace. All API communication uses HTTPS. API keys are stored hashed and are not recoverable after creation.
Troubleshooting
Build fails: check that your build command is correct and that all dependencies are declared in your dependency file (package.json, requirements.txt, Cargo.toml, go.mod, etc.). The build runs in a clean environment, so any dependency that is not declared will not be available. Service crashes on start: open the Logs tab for your service and look for error messages at startup. Common causes are a missing or incorrect run command, a missing required environment variable, or a port mismatch — the platform expects your service to listen on the port defined by the PORT environment variable. Health check failing: verify that your health check path returns HTTP 200. The check runs after the service starts, so a slow-starting service may need a longer initial grace period. Make sure the endpoint is reachable without authentication. Deployment stuck in progress: deployments have a timeout. If a build takes too long or the container never passes its health check, the deployment will be marked as failed and the previous version (if any) will continue running. Check the Events tab for details. Custom domain not resolving: DNS changes can take up to 48 hours to propagate. Verify that your CNAME or A record points to the correct value shown in the service settings. Make sure there are no conflicting records at your DNS provider.
FAQ
Can I use my own domain? Yes. You can attach custom domains to any web service or static website from the service settings. TLS certificates are provisioned automatically via Let's Encrypt. What regions are available? All regions are based in Europe. You can see the full list of regions when creating a service. Can I deploy from a private repository? Yes. Add your personal access token or deploy key in the workspace credentials settings, and your private repositories will be available when creating a service.