# Publishing ADconsole to a Git host How this working tree was turned into the public repository, and the checklist to follow if you re-publish it somewhere else (a fork, a mirror, a different host). **Canonical repository:** (self-hosted Gitea). The first public tag is **`v1.0.0`**. ## 1. Placeholders — all filled for the canonical repo If you re-publish under a different owner/host, revisit these: | File | Was | Now / put | |---|---|---| | `README.md`, `docs/installation.md`, `docs/development.md` | `` in the `git clone` lines | `https://gitea.kzbikowski.pl/kzbkowski/ADconsle.git` | | `docs/SECURITY.md` | `` | `mail@kzbikowski.pl` | | `.github/ISSUE_TEMPLATE/config.yml` | `https://github.com/OWNER/REPO/...` | The repo's Gitea issue/wiki URLs | | `LICENSE` | `2026 Kacper Żbikowski` | Copyright year + holder, if different | | `lang/{pl,en}/pages.php` → `author.*` | `Kacper Żbikowski` | Author/maintainer shown on the in-app *About* page | | `composer.json` | `adconsole/adconsole` | Your package name (optional; nothing depends on it) | `tests/Feature/Pages/AboutPageTest.php` asserts the author name and `Copyright (c) ` — if you change `pages.php` `author`, update that test too. ## 2. Confirm nothing sensitive is tracked Everything below is already covered by `.gitignore` / `.dockerignore` — verify none of it slipped in: - `.env`, `.env.backup`, `.env.production`, `.env.*.local` - `storage/app/panel_settings.json` and `*.migrated` - `vendor/`, `node_modules/`, `public/build/`, `public/hot/` - `storage/` runtime (logs, sessions, framework cache) — only the `.gitignore` keep-files should be tracked - `docker/compose.override.yaml`, `docker/compose.dev.override.yaml` - `docker/data/` (production DB + storage state) - IDE / agent dirs (`.idea/`, `.vscode/`, `.claude/`, …) ```sh # Dry-run: what would a fresh repo add? git init -q _probe && git --git-dir=_probe/.git --work-tree=. add -An | grep -Ei '(^add ...env$|vendor/|node_modules/|storage/(logs|framework)/.+/|panel_settings\.json)' rm -rf _probe # No output = clean. ``` Also grep for lab-specific values before the first push: ```sh grep -rniE 'YOUR-DOMAIN|internal-hostname|real-ip' --exclude-dir=vendor --exclude-dir=node_modules . ``` ## 3. Green build ```sh composer install cp .env.example .env && php artisan key:generate php artisan migrate # against a throwaway SQLite/MySQL php artisan test # 40+ pass (the DEPR tag is noise) vendor/bin/pint --test # style clean ``` ## 4. Create the repository This tree started life inside an unrelated parent checkout, so it is published as a fresh repo scoped to just this folder: ```sh cd /path/to/adconsole git init -b main git add . git status # sanity-check the file list git commit -m "ADconsole v1.0.0" git remote add origin https://gitea.kzbikowski.pl/kzbkowski/ADconsle.git git push -u origin main git tag -a v1.0.0 -m "ADconsole v1.0.0" git push origin v1.0.0 ``` ## 5. On the Git host - Set the repository **description** and topics: `active-directory`, `ldap`, `laravel`, `ldaprecord`, `admin-panel`, `self-hosted`. - Enable **Issues**. Point the "Question / help" contact link at the repo's issues (Gitea has no Discussions). - The workflows in `.github/workflows/` are read by Gitea Actions if Actions is enabled on the instance (otherwise harmless): - `ci.yml` — Pint + PHPUnit on PHP 8.4, on every push / PR. - `release.yml` — on a `vX.Y.Z` tag, builds `docker/php/Dockerfile` target `prod` and pushes `…/adconsole:{X.Y.Z, X.Y, latest}` to the instance's container registry. Needs `packages: write`; if the built-in token can't push, add a `REGISTRY_TOKEN` repo secret. Adjust `REGISTRY` / `IMAGE_NAME` in the workflow (and the default in `docker/compose.yaml`) for a different host or owner. - Release: `git tag -a vX.Y.Z -m "ADconsole vX.Y.Z" && git push origin vX.Y.Z` (that fires `release.yml`), then cut a **release** from the tag on the Git host and paste the matching `docs/CHANGELOG.md` section as the notes. ## 6. First-deploy sanity (for whoever installs it) Point them at [`installation.md`](installation.md) (bare metal) or [`deployment.md`](deployment.md) (Docker), and [`active-directory.md`](active-directory.md) for the service account and delegation. [`troubleshooting.md`](troubleshooting.md) covers the usual first-run stumbles.