# Deployment and operation

> How Githome is deployed and run on Cloudflare: the hosts, the resources, the deploy scripts, the superadmin console, mirrors and backups, and where to go next.

Source: https://git.pkgforge.dev/docs/self-hosting

Githome is one private, internal forge at `https://git.pkgforge.dev`. It runs on Cloudflare, with copies kept off Cloudflare, and is deployed from a private repository by the operator. There is no hosted service to sign up for and no copy for a visitor to deploy: accounts are made by invitation from the superadmin. This page is the overview of how the instance is put together and run; [Deploy and update Githome](https://git.pkgforge.dev/docs/self-hosting/deploy) describes the deploy scripts, and [Configuration](https://git.pkgforge.dev/docs/self-hosting/configuration) lists the settings the core reads.

## The hosts

| Host | What it serves |
| --- | --- |
| `git.pkgforge.dev` | The core: the web UI, Git over HTTPS, the REST and GraphQL APIs, the MCP server at `/mcp`, the container registry and these docs. |
| `uploads.git.pkgforge.dev` | The uploads of the core. |
| `dash.git.pkgforge.dev` | The dash, the superadmin console: its own Worker, its own D1 database and its own passkey sign-in. |
| `NAME.git.pkgforge.dev` | The host of each module, a small Worker of its own, once the module is deployed. |

Anyone can browse and clone public repositories without an account. A write needs an account, and sign-in is with a passkey.

## What the instance runs on

| Part | Cloudflare product |
| --- | --- |
| The core and the dash | Workers |
| One repository (refs, objects, issues, pull requests, reviews) | A Durable Object with SQLite storage, one per repository |
| Accounts, organizations, tokens, sessions, the audit log | D1 |
| Large git objects, LFS objects, caches, release assets, profile pictures | R2 |
| Webhooks, notifications, email jobs | Queues |
| Imports, account exports and deletions | Workflows |

The instance starts no Cloudflare Container: the forge CI is dormant (see below). [Architecture](https://git.pkgforge.dev/docs/self-hosting/architecture) maps each part of Githome to the product that runs it. The resources of each Worker are listed in one file of the private repository, `deploy/resources.jsonc`, which the deploy script reads.

## How it is deployed

The operator deploys from a checkout of the private repository with `node scripts/deploy.ts`. `render` writes the deployed config of each Worker without any network call, `plan` compares the Cloudflare account with the list of resources and changes nothing, and `apply` creates what is missing, applies the D1 migrations, deploys and sets the secrets that the deploy generates. `scripts/setup.sh` checks the toolchain (Node 26.7.0 and pnpm 12.11.2), installs the workspace and starts the same script, so the two never differ. The Cloudflare credential is a child token minted for one run from a minter credential kept outside the repository, and it is revoked when the run ends. See [Deploy and update Githome](https://git.pkgforge.dev/docs/self-hosting/deploy).

## After a deploy

- **Who can join.** The instance is invite-only. The superadmin invites each account in the dash and sends the one-time invitation link by hand; Githome sends no email for an invitation. Open sign-up is off. See [Invitations](https://git.pkgforge.dev/docs/accounts/invitations) and [SIGNUP](https://git.pkgforge.dev/docs/self-hosting/configuration#signup).
- **Limits.** Per-account quotas are set with the `QUOTA_*` variables and changed for one account in the dash; see [Configuration](https://git.pkgforge.dev/docs/self-hosting/configuration#worker-variables).
- **Running it.** The dash covers accounts and invitations, sign-in links, contact messages, reports, security reports, status incidents, the audit log, quotas, kill switches, the workflow scheduler, mirrors and ingest. [Site administration](https://git.pkgforge.dev/docs/admin/site-administration) describes it, and the [status page](https://git.pkgforge.dev/docs/self-hosting/status-page) shows whether each part of the instance works.
- **The forge CI is dormant.** git.pkgforge.dev starts no Actions run, no hosted job, no agent sandbox and no terminal. The setting is `GITHOME_CI=off`. The Actions code stays in Githome, and the Actions pages of these docs keep their reference content.
- **Mirrors.** Push mirrors copy each repository with its forge state to another provider: GitHub, Cloudflare Artifacts, GitLab, Forgejo or Codeberg.
- **Backups.** Backups are encrypted and go to an S3-compatible bucket off Cloudflare once its credentials are set; with no target, no backup runs.
- **Your tools.** People install the CLI from the instance and run `githome setup`. AI apps connect to `https://git.pkgforge.dev/mcp`. An editor clones with the plain HTTPS URL.

## Get help

Report bugs and ask questions in the public tracker, [github.com/Azathothas/issues](https://github.com/Azathothas/issues), with the label `git.pkgforge.dev`. People with an account can report security problems privately with the [report form](https://git.pkgforge.dev/security/report), which takes reports only from signed-in people until the deployment has its Turnstile keys; see [Vulnerability disclosure](https://git.pkgforge.dev/docs/security/disclosure).
