Gitea on Hostinger
A Private GitHub for ₱370 a Month: the Gitea-on-Hostinger Playbook for Filipino Freelance Developers
Reading Time: 9 minutes

Key Takeaway

  • 🔑 Gitea on Hostinger gives your client code its own vault. Gitea v1.25 turns a KVM 1 VPS (from about $6.49/month intro) into a private, unlimited-repo GitHub you fully control.
  • ⚡ Nine commands from zero to git server: Docker + PostgreSQL + Gitea + Caddy HTTPS — the whole stack installs in under an hour, no Linux wizardry required.
  • 🛡️ No lockouts, no price ambushes: free platform accounts can suspend or re-price your work; a private instance answers only to you — and nightly backups to object storage keep it survivable.
  • 👥 Freelance-ready out of the box: organizations, per-client repos, issue tracking, and pull-request reviews — the workflow agencies pay for, running on your terms.
  • 📦 Version-verified: this guide installs Gitea 1.25.x (current stable line) with the official Docker image and documents the restore path, not just the install.

If you write code for a living — freelance projects, client systems, even your agency’s internal tools — your repositories are sitting in somebody else’s cloud, under terms you agreed to without reading. Platform outages suspend your push access; pricing pivots; acquisition rumors follow you around. The fix is a Saturday-afternoon project with a permanent payoff, the cheapest respectable version of it: Gitea on Hostinger, your own private GitHub running on a virtual private server that costs less than a family dinner. This guide walks the whole path — VPS choice, Docker stack, HTTPS, backups, and the restore drill nobody else documents.

Why Gitea on Hostinger Beats Renting, and Why Now

Gitea is a community-maintained, open-source git service written in Go — think GitHub’s core workflow (repos, issues, pull requests, organizations, wikis) distilled into a single lightweight binary that runs comfortably on a small VPS. The current stable line, v1.25.x (release notes), ships with a hardened packages API (the 1.25.4 maintenance releases fixed token-scope access on package registries), an official Docker image, and PostgreSQL/MySQL/SQLite backends. It’s the engine also powering Gitea.com itself, and fork-heritage from Gogs means the config surface is small, documented, and boring in the best way.

Three forces make installing Gitea on Hostinger the right move this month. First, the economics: a Hostinger KVM 1 (current KVM pricing; the KVM 2 range handles teams) starts around $6.49 intro — while commercial git platforms bill per-seat and per-feature for the same privilege of holding your files. Second, the risk picture: every client repository on a shared platform inherits that platform’s outage and policy calendar; one mistaken ToS flag and your agency’s codebase is frozen during a renewal dispute. Third, the AI-era audit trail: when your work touches AI-assisted coding agents, provenance matters — a git history you own is the cleanest evidence chain you can show a client.

Gitea on Hostinger in One Look

The stack in one sentence: Gitea on Hostinger means a KVM virtual server running three Docker containers — Gitea’s web app, a PostgreSQL database, and Caddy for HTTPS — behind your own domain, with a nightly dump copied off the server. Every piece below maps to that sentence, and every step keeps the stack small enough to understand at 2 a.m. when something breaks.

Step 0: Choose the VPS (2 Minutes)

For a solo developer or a small agency (up to ~10 active users), the Gitea on Hostinger sweet spot is the Hostinger KVM 1 template — 1 vCPU, 4 GB RAM, 50 GB NVMe — runs Gitea comfortably; the KVM 2 tier adds headroom for CI runners and larger histories. Pick a data center close to your clients (Singapore for most PH-audience workloads), Ubuntu 24.04 LTS, and note the IP. The math that justifies the whole exercise: even at renewal pricing, the yearly cost lands below what two seats on a commercial platform cost — and seats scale, your VPS doesn’t.

The 9-Command Install

SSH in as root (or your sudo user), then bring up the Gitea on Hostinger stack. Docker Compose keeps every component reproducible:

apt update && apt -y upgrade

curl -fsSL https://get.docker.com | sh

mkdir -p /opt/gitea/{data,config,pg} && cd /opt/gitea

Create docker-compose.yml with three services — postgres (image postgres:16-alpine, database gitea, user gitea, a generated strong password), gitea (image gitea/gitea:1.25, ports 3000:3000 and 2222:22, volumes for /data), and caddy (image caddy:2, ports 80/443, a Caddyfile that reverse-proxies to gitea:3000 and auto-issues your Let’s Encrypt certificate):

wget -O docker-compose.yml https://your-gist-or-the-compose-below/gitea-compose.yml — or paste the compose block below into nano:

services:
  gitea-db:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: gitea
      POSTGRES_PASSWORD: <generated-strong-password>
      POSTGRES_DB: gitea
    volumes: [ "./pg:/var/lib/postgresql/data" ]
    restart: unless-stopped
  gitea:
    image: gitea/gitea:1.25
    environment:
      USER_UID: "1000"
      USER_GID: "1000"
      GITEA__database__DB_TYPE: postgres
      GITEA__database__HOST: gitea-db:5432
      GITEA__database__NAME: gitea
      GITEA__database__USER: gitea
      GITEA__database__PASSWD: <same-password>
    volumes: [ "./data:/data" ]
    ports: [ "3000:3000", "2222:22" ]
    depends_on: [ gitea-db ]
    restart: unless-stopped
  caddy:
    image: caddy:2
    volumes: [ "./Caddyfile:/etc/caddy/Caddyfile", "./caddydata:/data" ]
    ports: [ "80:80", "443:443" ]
    restart: unless-stopped

Point your DNS A record (say, git.yourdomain.com) at the VPS IP, drop the matching Caddyfile beside it —

git.yourdomain.com {
    reverse_proxy gitea:3000
}

— and bring the stack up:

docker compose up -d

Open https://git.yourdomain.com, run Gitea’s install wizard (pick PostgreSQL, keep the injected credentials, set the admin account before anyone else can register), and you have a private git server with a clean web UI, issue tracker, and pull-request reviews. Two settings to change immediately in Site Admin → Configuration: disable open registrations, and set the default branch to main.

SSH Push: the Detail Every Guide Skips

Because Gitea’s SSH port maps to 2222, your clone URLs need the port suffix once: git clone ssh://git@git.yourdomain.com:2222/youruser/yourrepo.git. Add your laptop’s public key in Gitea → Settings → SSH/GPG Keys, and pushes feel exactly like GitHub. If you want clean git@host:org/repo.git URLs without the port suffix, point Caddy’s git.yourdomain.com:22 route at the container’s SSH port — one more Caddy line, zero friction for clients who clone daily.

Gitea on Hostinger Backups: the Restore Path You’ll Actually Test

Backup discipline is what separates Gitea on Hostinger from a GitHub account with extra steps — the dump loop below is the part that makes the server yours.

A git server without a tested restore is a diary you can’t read. The whole-state backup is three commands on a nightly cron: gitea dump (produces a zip of repos, issues, and config), a pg_dump of the database, and an rclone copy to any object storage or even another server. Keep 7 daily and 4 weekly generations. The restore drill that matters: on a scratch VPS, install the same compose stack, drop in the dump zip, reattach app.ini, and confirm a clone works end-to-end. Do it once now, while nothing is broken — future-you will not regret it.

Running Gitea on Hostinger Like a Freelancer’s Workshop

Gitea’s organizations map perfectly to client boundaries: one organization per client, repositories inside it, access limited to the people on that engagement. Branch protection on main, required pull-request reviews on anything shared, and issues as the client’s visible paper trail turn the server into a delivery record — the artifact that wins renewal arguments. For teams that live in CI, a small runner (even Gitea Actions on the same box for light jobs) keeps builds private; scale to a second VPS only when the KVM 2 ceiling actually arrives.

The quiet bonus: Gitea’s web UI is fast on tiny VPS hardware — a KVM 1 serves a dozen developers without breaking a sweat, and its RAM footprint leaves room to co-locate other tools you may already run the Hostinger way, from monitoring to documentation. Our Uptime Kuma guide pairs naturally here, and the Hermes Agent VPS guide shows how to add an AI ops layer on the same box — your git vault deserves its own monitor. And when a project graduates to a bigger team or you need heavy CI, the migration path to automation with n8n keeps the ops story coherent.

The Real Cost Math: VPS vs Platform Seats

Run the two-year ledger honestly. A commercial git platform’s team plan for four developers runs $40–100+ per month depending on tier — $960 to $2,400 a year, forever, for the privilege of holding your own files under somebody else’s terms. The Gitea on Hostinger path: KVM 1 at the $6.49 intro (renewing around the standard KVM rate), domain already owned, certificates free via Caddy, backups to cheap object storage measured in cents. Two-year total: a few hundred dollars, hardware-owned, zero seats to manage. The gap funds your time twice over — and unlike seat pricing, it never scales with headcount.

The hidden line item is your Saturday afternoon. Budget three: one for the install this guide covers, one for the migration and client handoff, one for the restore drill. After that the server asks for patch attention a few minutes a month. That trade — three afternoons against a recurring bill and a platform-risk ledger — is the whole business case.

The Honest Caveat: Who Should NOT Self-Host This

Balance matters, so the contra-case deserves space. If your team needs heavy CI at scale (hourly matrix builds across many runners), a self-hosted Gitea on a small VPS will frustrate you — buy the managed compute and keep Gitea for the code. If your clients demand SOC-2-style attestations from their tooling vendors, a one-person VPS won’t tick that box; some agencies run both and let the client choose. And if nobody on your side enjoys server ownership — no one to watch the disk, the patch notes, the backup logs — then an unattended VPS is its own failure mode. Self-hosting is a habit, not a purchase — and when repositories hold client personal data, owning the server keeps you in direct control of your Philippine Data Privacy Act obligations (privacy.gov.ph). If you can’t adopt the habit yet, bookmark this and start with the backup habit on your existing platform.

How the Alternatives Compare, Briefly

Gitea isn’t the only self-hosted git server, and the field’s differences are real. GitLab CE is the heavyweight: built-in CI/CD, container registry, more process machinery — but it wants 4+ GB RAM idle and rewards teams with a sysadmin habit. Gogs, Gitea’s ancestor, still runs happily on tiny boxes but develops more slowly. Forgejo, the community fork, tracks close to Gitea and shares the same lightweight ethos. The practical PH-freelancer verdict: Gitea for the best speed-to-capability ratio on budget hardware, GitLab CE if CI-in-one-box outweighs resource cost, Forgejo if you want the fork’s governance. All three install the same way this guide shows — Docker, a database, a reverse proxy — so the skill transfers even if you switch engines later.

The Gitea on Hostinger Decision, Recapped

The whole playbook in one paragraph: pick the KVM 1 (or KVM 2 for teams), run the three-container Docker stack — Gitea, PostgreSQL, Caddy — point your domain, run the install wizard, disable open registration, map SSH once, then set the nightly gitea dump + pg_dump + rclone loop and actually run the restore drill once. Three Saturday afternoons buys you a private git server whose costs never scale with headcount, whose outage calendar is yours, and whose delivery record belongs to your agency — that is the Gitea on Hostinger case in full.

Financial Disclaimer: Prices and tiers mentioned (Hostinger KVM plans, commercial platform seat pricing) are introductory offers verified at writing time and subject to provider changes; compute your own renewal-year totals before deciding. WorldNgayon.com is not a financial adviser — this guide is educational, and server or spending decisions are yours.

Frequently Asked Questions

Is Gitea really a GitHub replacement?

For the workflow that matters to freelancers and small agencies — private repos, issues, pull requests, organizations, releases, and SSH/HTTPS push — yes, fully. It doesn’t replicate GitHub’s social layer (stars, public profiles, Explore), which is precisely the part a private vault doesn’t need. Teams that need marketplace integrations keep a GitHub mirror and treat Gitea as the system of record.

What does Gitea on Hostinger cost per month?

The KVM 1 tier starts at about $6.49 intro pricing with the domain you likely already own — the whole stack is one VPS plus free Let’s Encrypt certificates via Caddy. At renewal it stays well under the cost of two commercial platform seats, and the limit is your hardware, not your headcount.

Can I migrate my existing GitHub repos to Gitea?

Yes — Gitea’s built-in migration imports repositories from GitHub with issues, pull requests, labels, and milestones intact. Create a repo, choose Migration, paste the GitHub URL with a personal access token, and the history lands complete. Run one test migration before the bulk move.

How do I keep the server secure?

Disable open registration, keep SSH key-only access (no passwords), keep Caddy’s automatic HTTPS on, patch with docker compose pull && docker compose up -d when Gitea releases security tags — 1.25.x’s maintenance line shows exactly why token-scope fixes deserve fast adoption — and let the nightly off-server backup be non-negotiable.

Does this work for teams outside the Philippines?

The stack is location-independent; choose the Hostinger data center nearest your collaborators and the same guide holds. The cost anchors in this piece reflect PH-market pricing at writing time.

What happens when my VPS dies?

Rebuild from the nightly dump: fresh VPS, the same Gitea on Hostinger compose file, restore zip, pg_dump load, DNS flip. The backup loop you set up in this guide is the difference between an hour of downtime and a catastrophe — which is why the restore drill is part of the install, not an afterthought.

Affiliate note: some hosting links may be referral links at no extra cost to you; prices verified at writing time and subject to provider changes. This guide is educational; server administration decisions are yours.

Editorial Transparency Note:WorldNgayon uses AI-assisted tools in parts of its editorial workflow. For our editorial standards, sourcing practices and use of AI, see worldngayon.com/about/. Article bylines and source credits identify the stated authorship; this general note does not certify how an individual archive article was originally produced. Report factual errors through worldngayon.com/contact-us/.

Leave a Reply