# Publishing to Gitea Everything here needs a Gitea **personal access token**, which is why it isn't automated: the token should only ever exist in your own shell. Create one at **Gitea → Settings → Applications → Generate New Token** with scopes: - `write:repository` — to create the repo and push - `write:package` — to push the container image Export it once per shell session: ```bash export GITEA_TOKEN='' ``` ## 1. Create the repository ```bash curl -s -X POST "https://gitea.milesward.dev/api/v1/user/repos" -H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/json" -d '{"name":"Discord-Authenticator","description":"Self-hosted TOTP authenticator with live Discord delivery","private":true,"auto_init":false}' ``` `"private": true` is deliberate. The repo is harmless on its own, but this is tooling that handles second factors — there's no reason to publish it by default. Change it if you decide otherwise. ## 2. Push the code and the tag ```bash cd "/Users/casperadmin/Discord Authenticator" && git -c "http.extraHeader=Authorization: token $GITEA_TOKEN" push -u origin main --follow-tags ``` That pushes `main` and the `v0.1` tag together. ## 3. Push the container image The image is already built and tagged locally as `gitea.milesward.dev/mward4/discord-authenticator:0.1` and `:latest`. ```bash printf '%s' "$GITEA_TOKEN" | docker login gitea.milesward.dev --username mward4 --password-stdin && docker push gitea.milesward.dev/mward4/discord-authenticator:0.1 && docker push gitea.milesward.dev/mward4/discord-authenticator:latest && docker logout gitea.milesward.dev ``` If the image isn't built (a fresh machine, say), `scripts/build-and-publish-unraid.sh` does the clone, build, login and push in one pass: ```bash GITEA_TOKEN="$GITEA_TOKEN" ./scripts/build-and-publish-unraid.sh ``` ## 4. Deploy on Unraid Add a container with Repository set to: ``` gitea.milesward.dev/mward4/discord-authenticator:0.1 ``` Since the package is in a private registry, add the Gitea credentials under Unraid's Docker → Registries first, or the pull will 401. Map `/var/lib/discord-authenticator` to `/mnt/user/appdata/discord-authenticator`, publish port `8710`, and leave networking on bridge. Or import `deploy/unraid/discord-authenticator.xml` into `/boot/config/plugins/dockerMan/templates-user/` to get all of that prefilled. ## Afterwards Confirm the token isn't left lying around in your shell history: ```bash unset GITEA_TOKEN ```