2026-09-20 20:21:56 +02:00
2026-04-05 21:39:20 +02:00
2026-04-08 16:32:34 +02:00
2026-09-09 18:05:42 +02:00
2026-07-29 15:41:13 +02:00
2026-09-20 19:27:52 +02:00
2026-08-18 19:54:39 +02:00
2026-09-20 20:21:56 +02:00
2026-04-08 16:32:34 +02:00
2026-04-05 21:39:20 +02:00
2026-07-29 15:41:13 +02:00
2026-09-20 19:27:52 +02:00
2026-04-20 10:24:20 +02:00
2026-04-20 10:24:20 +02:00
2026-09-20 19:27:52 +02:00
2023-01-10 09:10:34 +01:00
2026-08-18 19:54:39 +02:00
2026-08-18 19:54:39 +02:00
2025-03-13 17:45:51 +01:00
2021-05-30 23:04:17 +02:00
2026-09-20 20:21:56 +02:00
2026-09-20 20:21:56 +02:00
2022-03-20 11:25:11 +01:00

logo
GICKUP

Backup your Git repositories with ease.

Website • GitHub • Docs

Build and Publish

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

Here is an example

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
S
Description
No description provided
Readme Apache-2.0
2.7 MiB
Languages
Go 99.5%
Dockerfile 0.3%
Makefile 0.1%