This script automatically mirrors the repositories from a github-user or github-organization to your gitea server. Once started, it will create a mirrored repository under a given token for a gitea user, completely automatically.
Example:
A github user github-user
has public repositories dotfiles
and zsh-config
.
Starting the script with a gitea token for the account gitea-user
will create the following mirrored repositories:
- github.com/github-user/dotfiles → your-gitea.url/gitea-user/dotfiles
- github.com/github-user/zsh-config → your-gitea.url/gitea-user/zsh-config
The mirror settings are default by your gitea instance.
It is also possible to mirror private repos, which can be configred here in #parameters. When mirroring private repos, they will be created as private repos on your gitea server.
- A github user or organization with repositories
- Configured Gitea instance up and running
- User for Gitea with generated token (Settings -> Applications -> Generate New Token)
- Docker or Docker Compose
docker build -t mirror-to-gitea .
docker run \
-d \
mirror-to-gitea \
--restart unless=stopped \
--env-file .env
This will a spin up a docker container which will run forever, mirroring all your repositories once every hour to your gitea server.
version: '3.3'
services:
mirror-to-gitea:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
env_file:
- .env
container_name: mirror-to-gitea
- NodeJS
- NPM
npm install
If errors occur, try deleting the package-lock.json
file and run npm install
again.
docker build -t mirror-to-gitea .
export GITHUB_USERNAME=github-user
export GITEA_URL=https://your-gitea.url
export GITEA_TOKEN=please-exchange-with-token
node src/index.js
Also export GITHUB_TOKEN
and MIRROR_PRIVATE_REPOSITORIES
if you want to mirror private repos, or DELAY
if you want to change the delay between checks.
In the above Docker run command, replace jaedle/mirror-to-gitea:latest
with mirror-to-gitea
.
In your Docker Compose file, replace jaedle/mirror-to-gitea:latest
with build: .
. Then run docker compose build
and docker compose up -d
.
GITHUB_USERNAME
: The name of your user or organization which public repos should be mirroredGITEA_URL
: The url of your gitea serverGITEA_TOKEN
: The token for your gitea user (Settings -> Applications -> Generate New Token)
GITHUB_TOKEN
: GitHub personal access token. Attention: if this is set, the token will be transmitted to your specified Gitea instance!MIRROR_PRIVATE_REPOSITORIES
: If set totrue
, your private GitHub repositories will also be mirrored to gitea. TheGITHUB_TOKEN
parameter must be set for this to work.DELAY
: How often to check for new repositories in seconds. Default is 3600 (1 hour).GITEA_ORG_NAME
: If set, the repositories will be mirrored to an organization instead of a user.
- Refactoring
- Think about how to test
- Better logging
- Add gitlab support
- And so on..