Your homelab can ship like the cloud.
A no-downtime, multi-tenant Next.js deployment manager for your own hardware. Blue-green deploys, preview branches, and managed Postgres, Redis and MinIO — with built-in Cloudflare tunnel automation. No cloud bill required.
Watch a deploy happen, without a blink.
Push to main. Port-Au-Next builds the new version, health-checks it, and only then tells nginx to route traffic over. The old version serves the whole time.
Runs on whatever you've got.
No datacenter, no static IP, no credit card on file. You need a machine that runs Docker and a Cloudflare account. The closet PC is the whole point.
Cloudflare tunnels reach your apps through an outbound connection — no exposed home network. Connect your account in the dashboard to automate routes and DNS; you still run cloudflared on the box.
That 2016 desktop, a mini-PC, a spare laptop, a NUC. If it runs Docker, it can run your whole fleet. Give the hardware you already own something useful to do.
A few watts in the closet instead of an invoice that renews every month whether you ship or not. Your projects, your electricity, your rules.
per app, every month, forever. Plus bandwidth, plus build minutes, plus the next price hike.
plus a few watts. The tenth app costs exactly what the ninth did: nothing.
The same platform points at a VPS, a dedicated server, or a rack the day you need more. Start on the closet PC, move when it matters, keep every workflow.
A real deployment platform, on your own metal.
The DX you'd expect from a managed cloud, without the vendor lock-in, the surprise bills, or handing over your data.
Every push spins up a fresh container. Traffic only switches once it's verified healthy. True zero downtime, even on a closet PC.
Every side project on one box. Host as many Next.js apps as your hardware can handle, each isolated with its own database and env.
Ship any feature branch to its own subdomain with an isolated database and per-branch environment variables.
Connect your Cloudflare account in the dashboard, pick a tunnel, and Port-Au-Next creates published application routes and proxied DNS when you assign domains — no port forwarding.
Push to a configured branch and it deploys automatically. Or trigger a deploy via the REST API from anywhere.
Switches only happen when the new container is verified. Failed deploys roll traffic back to the last good version.
Set env vars per app, per branch, or per preview. Run dev, staging and prod from one Port-Au-Next instance.
port-schedule gives every app cron-like jobs that call your public routes. No crontab inside containers.
Authenticated admin UI, isolated Docker network, read-only SSH keys, and restricted Docker socket access.
Six steps, fully automated.
From a git push to live traffic, Port-Au-Next runs the whole pipeline so you never babysit a deploy on the closet box.
Triggered by the UI or a GitHub webhook.
Latest code built into a new Docker image.
New container starts, assigned a version.
Verified healthy before any traffic moves.
Nginx routes traffic to the new container.
Previous container gracefully terminated.
Batteries included. Wired in automatically.
Every app gets credentials injected at deploy time, no manual config. Connect to managed services the moment your container boots.
A dedicated database and user per app, with isolated credentials. Optional Prisma support with managed migrations.
Shared cache for sessions, a Next.js cache handler, and anything else you need fast key-value storage for.
On-the-fly image optimization and resizing, ready to plug in as a custom Next.js image loader.
S3-compatible object storage for uploads and assets, with per-app policies and credentials.
Nginx routes every domain and preview branch internally. Connect Cloudflare in the dashboard to list tunnels, sync published application routes, and proxied DNS per app.
A first-party HTTP cron scheduler. Per-app jobs fire signed webhooks at your public routes on a schedule.
Opt-in privacy-focused analytics with a per-app dashboard login. Enable in settings, add the snippet, redeploy.
One dashboard for the whole fleet.
Add apps, watch deployments roll out, tail logs, and manage env vars, all from an authenticated web console.
Running in four steps.
Point it at a VPS, a cloud box, or that old PC humming in your closet. If it runs Docker, it runs Port-Au-Next.
Good to know before you self-host.
Do I need a cloud account or any paid service?
No. Port-Au-Next runs entirely on infrastructure you own — a VPS, a cloud box, or hardware at home. Cloudflare tunnels are optional but recommended to expose apps safely without opening ports. It's MIT licensed and free forever.
Will it run on a Raspberry Pi or an old laptop?
If it runs Docker and Docker Compose, it runs Port-Au-Next. A spare laptop, a mini-PC, an old desktop, even a Raspberry Pi for lighter workloads. More apps and heavier builds simply want more RAM, so a machine with 8GB or more is a comfortable starting point.
Do I need to open ports or have a static IP?
No. Cloudflare tunnels open an outbound connection from your machine, so your apps are reachable without port forwarding, a static IP, or exposing your home network. Port-Au-Next can connect to your Cloudflare account and automate tunnel routes and DNS from the dashboard — you still run cloudflared on your box and add domains to Cloudflare yourself.
Is it okay to leave running 24/7?
That's the idea. A closet machine sips power compared to a recurring cloud invoice, and blue-green deploys mean you can update apps any time without taking anything down. When you outgrow the box, point the same setup at a VPS or a rack and keep every workflow.
How does the zero-downtime deploy actually work?
It's a true blue/green strategy. A new container is built and started alongside the running one. Only after it passes a health check does nginx switch traffic over, then the old container is gracefully drained. If the new version is unhealthy, traffic never moves.
Can I run more than one app on a single server?
Yes — that's the whole point. Port-Au-Next is multi-tenant. Each app runs in its own isolated container with its own database, credentials, and environment variables, and you map domains and subdomains to each one independently.
What are preview branches?
Deploy any feature branch to its own subdomain (e.g. feature-x.preview.yourdomain.dev) with an isolated database and branch-specific env vars. Point previews at dev services, test in a production-like environment, then clean them up automatically when the branch merges.
Does it auto-deploy from GitHub?
Yes. Push to a configured branch and Port-Au-Next deploys it via GitHub Actions integration. You can also trigger deployments programmatically through the REST API, or kick them off manually from the dashboard.
What is port-schedule?
A first-party HTTP scheduler. Instead of a crontab inside your container, each app registers cron-like jobs via an API, and port-schedule fires signed webhook requests to your app's public routes on schedule. Perfect for nightly syncs, cleanups, and recurring tasks in a stateless deploy model.
What is Umami analytics?
A shared, privacy-focused analytics instance. Opt in per app from the dashboard to get an isolated website, tracking env vars on production deploy, and your own Umami login. You add the Next.js snippet yourself; cookie and consent banners stay your responsibility.
How does Cloudflare tunnel setup work?
Connect your Cloudflare account under Settings → Cloudflare with a scoped API token, select or create a tunnel, then run cloudflared on your homelab using the token shown in the UI. Add domains to Cloudflare and point nameservers yourself. When you assign an app domain — or click Sync route on existing apps — Port-Au-Next creates the tunnel published application and proxied CNAME. Preview branch wildcards are provisioned when you enable preview branches.
Take back your deploys.
Self-hosting your Next.js apps shouldn't feel scary. Clone the repo and have a zero-downtime platform running on your own hardware tonight.