Install the portable core
Prerequisites: private product-repository access, Git, Docker with Compose and OpenSSL. Container builds supply application toolchains; development outside containers uses the pinned product Go/Node versions.
git clone git@github.com:mjtechguy/golf-git.git
cd golf-git
./scripts/init-env.sh
docker compose up -d --build
curl --fail http://localhost:8080/readyz
Open Golf at http://localhost:8080 and Forgejo at http://localhost:3001. Use localhost consistently; writes require the exact configured origin. Readiness returns 503 while dependencies initialize.
Enroll an account
Registration is disabled. Replace the example identity and create a user through Forgejo's supported command:
docker compose exec forgejo forgejo --config /var/lib/gitea/custom/conf/app.ini admin user create \
--username golf-owner --email owner@example.com --admin \
--random-password --must-change-password=false
The /var/lib/gitea path is the pinned rootless Forgejo image's layout; do not rename it. Store the printed native password securely, sign into Forgejo and create a per-user scoped token. Read-only browsing needs read:user and read:repository; creation additionally needs native write scopes and current authority.
Through your editor or secret manager, create an ignored mode-0600 enrollment JSON file containing username, email, a unique Golf password, that user's forge_token, and is_instance_admin only for the deliberately enrolled operator. The product README gives the exact shape and scope requirements. Never put real credentials in shell arguments or examples.
docker compose exec -T golf golf local-account create < .tmp/local-account/enrollment.json
Sign into Golf with its own email-or-username/password. Read authentication before adding OAuth or machine credentials.
Retain your data
docker compose logs --tail=80 golf forgejo
docker compose stop
docker compose start
# Removes containers/network while retaining named volumes:
docker compose down
Do not routinely add --volumes: that destroys data. Preserve private .env, key material, both PostgreSQL databases and Forgejo volumes together. Changing environment passwords does not rotate an existing database role.
Add execution deliberately
Configured Docker workers/private object storage and agent services use separate Compose files, enrollment and policy. Follow the product pipeline profile; simply starting Golf does not enable jobs.
Kubernetes
Follow Install Golf on Kubernetes for the complete Golf-specific workflow: architecture and prerequisites, building/pushing the application image, private existing Secrets, retained claims, complete values, ingress/TLS/network policy, enrollment, readiness checks, external database trust, rollouts and recovery limits.
The Golf chart deploys the shared interface/API and Forgejo with separate PostgreSQL ownership. API replicas have native spread/disruption controls; the forge/database remain single-writer unless separately replaced by qualified external services.
Recovery and migration limits
The historical backup tool qualifies a bounded Forgejo fixture, not a current Forgejo restore. Do not swap Forgejo over retained Forgejo databases or treat volumes as backups. Read deployment profiles, recovery and status.