GICKUP
Backup your Git repositories with ease.
What is GICKUP?
Gickup is a tool that allows you to clone/mirror repositories from one host to another. This is useful if you want to have a backup of your repositories on another host or on a local server.
Supported Source and Destinations
You can clone/mirror repositories from:
- Github
- Gitlab
- Codeberg (Forgejo)
- Gitea
- Gogs
- Bitbucket
- OneDev
- Sourcehut
- Opengist
- Any
You can clone/mirror repositories to:
- Github
- Gitlab
- Codeberg (Forgejo)
- Gitea
- Gogs
- OneDev
- Sourcehut
- Radicle
- Local
- S3
If your hoster is not listed, feel free to open an issue and I will add it.
How to make a configuration file
How to run the binary version
./gickup path-to-conf.yml
Start with the web interface
./gickup --webui :8080 /path/to/conf.yml
Open http://localhost:8080. If the file is missing or empty, the interface opens
configuration setup. Paste your YAML and save; Gickup creates the file and its
parent directory, then loads it within about five seconds. Without a cron schedule,
loading a configuration starts a backup. With a schedule, backups wait for that schedule.
The configuration path defaults to conf.yml in the working directory.
Pass the listen address directly to --webui, for example --webui :8080
or --webui 127.0.0.1:9090.
When --webui is supplied, this address takes precedence over webui.addr in YAML.
Without the flag, the existing YAML setting still works.
The interface has no authentication; restrict access to trusted users.
For Docker, mount a directory so the interface can create the configuration file:
services:
gickup:
build: .
command: ["--webui", ":8080", "/config/conf.yml"]
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./config:/config
- ./backups:/backups
Run mkdir -p config backups and docker compose up --build, then open
http://localhost:8080. The saved configuration persists in ./config/conf.yml.
Use /backups as the local destination path to persist backups on the host.
How to run the Docker image
mkdir gickup
wget https://raw.githubusercontent.com/cooperspencer/gickup/main/docker-compose.yml
nano conf.yml # Make your config here
docker-compose up
Compile the binary version
go build .
Compile the Docker Image
git clone https://github.com/cooperspencer/gickup.git
cd gickup
nano docker-compose.yml # Uncomment the Build
nano conf.yml # Make your config here
docker-compose build
docker-compose up
Questions?
If anything is unclear or you have a great idea for the project, feel free to open a discussion about it. https://github.com/cooperspencer/gickup/discussions
Distribution Packages
| Distribution | Package | Maintainer |
|---|---|---|
| Arch | gickup | me |
| Homebrew | gickup | |
| Fedora | gickup | FrostyX |
| Scoop | gickup | |
| Winget | gickup |
Issues
The mirroring to Gitlab doesn't work, or at least I can't test it properly because I have no access to a Gitlab EE instance.
Future Ideas
- Additional VCS
- Add minio as a destination