# Mirror your github repositories to your gitea server ## Badges [![image pulls](https://img.shields.io/docker/pulls/jaedle/mirror-to-gitea.svg)](https://cloud.docker.com/repository/docker/jaedle/mirror-to-gitea) [![microbadger analysis](https://images.microbadger.com/badges/image/jaedle/mirror-to-gitea.svg)](https://microbadger.com/images/jaedle/mirror-to-gitea "Get your own image badge on microbadger.com") ## Description `mirror-to-gitea` automatically creates repository mirrors from a Github User to your gitea server. The hard work ( continous mirroring) is done by Gitea on a continuous basis. ### Modes There a different usage modes: 1. mirror **only public** repositories: No authentication on Github required. You may utilize an optional Github token to avoid rate limits 2. Mirror **public and private** repositories: Authentication for Github required. ### Prerequisites #### Mandatory - Something to mirror from Github (repositories from a Github user) - An application token for a gitea instance #### Optional - A Github token (to *avoid rate limits* or to *mirror private repositories*) ### Examples #### Mirror public repositories A github user `github-user` has the public repositories `dotfiles` and `zsh-config`. Starting the script with a gitea token for the account `gitea-user` will create the following mirror repositories: - github.com/github-user/dotfiles ← some-gitea.url/gitea-user/dotfiles - github.com/github-user/zsh-config ← some-gitea.url/zsh-config/dotfiles The mirror settings are default by your gitea instance. #### Mirror private repositories You obtained a github token for `github-user` which has a public repository `public-example` a private repository `private-example`. Running the mirroring process for `gitea-user` will create the following mirror repositories: - github.com/github-user/public-example ← some-gitea.url/gitea-user/public-example - github.com/github-user/private-example ← some-gitea.url/zsh-config/private-example The mirror settings are default by your gitea instance. ## Run public repository mirrors ### Parameters #### Mirror public repositories ##### Mandatory - `GITHUB_USERNAME` name of user with public repos should be mirrored - `GITEA_URL` url of your gitea server - `GITEA_TOKEN` token for your gitea user ##### Optional - `MIRROR_REPOSITORIES` `PUBLIC` (optional, is default) - `GITHUB_TOKEN` Github personal access token (optional to avoid rate limits) ```sh docker container run \ -d \ --restart always \ -e MIRROR_REPOSITORIES='PUBLIC' \ -e GITHUB_USERNAME='github-user' \ -e GITHUB_TOKEN='' \ -e GITEA_URL=https://some-gitea.url \ -e GITEA_TOKEN='' \ jaedle/mirror-to-gitea:latest ``` This will a spin up a docker container running infinite which will try to mirror all your repositories once every hour to your gitea server. ## Run private repository mirrors ##### Mandatory - `MIRROR_MODE` 'PRIVATE_AND_PUBLIC' - `GITHUB_TOKEN` Github personal access token - `GITEA_URL` url of your gitea server - `GITEA_TOKEN` token for your gitea user ```sh docker container run \ -d \ --restart always \ -e MIRROR_MODE='PRIVATE_AND_PUBLIC' \ -e GITHUB_TOKEN='' \ -e GITEA_URL=https://some-gitea.url \ -e GITEA_TOKEN=please-exchange-with-token \ jaedle/mirror-to-gitea:latest ```