If you've built an application and it's sitting in a GitHub repository, getting it in front of users shouldn't take an afternoon. Harbor connects directly to GitHub and handles the deployment pipeline—build, run, SSL, domain—without requiring you to write infrastructure code or configure a server.
Here's exactly how to go from repository to live production site.
Step 1: Connect your GitHub account
In your Harbor dashboard, navigate to the Websites section and choose "Add from GitHub." You'll be redirected to GitHub's OAuth flow to authorize Harbor. You can grant access to all repositories or specific ones—Harbor only requests the minimum permissions needed to read your code and receive push notifications.
Once connected, your repositories appear in Harbor's interface. Both public and private repositories work.
Step 2: Select your repository and branch
Pick the repository you want to deploy. Harbor will ask which branch to track—typically main or master for production. Every push to that branch will trigger a new deployment automatically.
You can also trigger manual deploys from the dashboard at any time, which is useful for re-deploying without pushing a code change (for example, after updating an environment variable).
Step 3: Let Harbor detect your framework
Harbor analyzes your repository and detects the framework or runtime automatically. It recognizes Next.js, React (static), Vue, Vite, plain Node.js, and static HTML/CSS sites. For most projects, you don't need to configure a build command or output directory—Harbor infers them from your package.json and project structure.
If your project has unusual requirements, you can override the detected settings. The build command, start command, and output directory are all configurable per application.
Step 4: Add environment variables
Before your first deploy, add any environment variables your application needs: API keys, database URLs, feature flags. Harbor stores environment variables encrypted at rest. They're injected into your application at build time and runtime—they never appear in your repository or build logs.
You can add, update, or remove variables at any time. Changes to variables don't automatically redeploy your application—you'll need to trigger a new deploy after updating them.
Step 5: Deploy
Click deploy. Harbor clones your repository, runs the build command, and starts your application. You can follow the build log in real time in the dashboard—if something fails, the error output is right there without needing to look elsewhere.
A successful first deploy usually takes 1–3 minutes depending on your project's dependency install and build time.
Step 6: Connect a domain
Once deployed, your application has a Harbor-generated URL you can use immediately. To connect a custom domain:
- If you registered the domain through Harbor, you can connect it directly from the application settings with one click.
- If the domain is registered elsewhere, add a CNAME or A record pointing to your Harbor application. Harbor will detect propagation and automatically provision an SSL certificate via Let's Encrypt.
SSL is automatic and renews without any action on your part.
Ongoing deployments
After setup, your deployment workflow is just pushing to GitHub. Every push to your tracked branch triggers a build and deploy. If a build fails, your previous deployment keeps running—Harbor doesn't take your site down while a broken build is in progress.
Build and runtime logs are available in the dashboard for each deployment. You can restart a running application without triggering a full redeploy, which is useful if your application enters a broken state without a code change.
EU infrastructure by default
Everything above runs on Hetzner Cloud infrastructure in the EU. There's no configuration required to get EU data residency—it's the default, not an add-on. Your application, its data, and its build artifacts all stay within Europe.
For teams with GDPR obligations or clients who require EU data residency, Harbor removes the need to configure regional settings or pay for a premium tier to get compliant infrastructure.