source: github: - token: some-token # alternatively, specify token in a file, relative to current working directory when executed. # token_file: token.txt user: some-user # the user you want to clone the repositories from. # if you want to get everything from your user, leave out the user parameter and just use the token. # for the clone process, either use: # - username + password # - sshkey # - token username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos "foo" and "bar" - foo - bar include: # this includes the repo "foobar" - foobar excludeorgs: # this excludes repos from the organizations "foo" and "bar" - foo - bar includeorgs: # this includes repos from the organizations "foo1" and "bar1" - foo1 - bar1 wiki: true # includes wiki too starred: true # includes the user's starred repositories too filter: stars: 100 # only clone repos with 100 stars lastactivity: 1y # only clone repos which had activity during the last year excludearchived: true languages: # only clone repositories with the following languages - go - java gitea: - token: some-token # token_file: token.txt # alternatively, specify token in a file user: some-user # the user you want to clone the repositories from. url: http(s)://url-to-gitea # if empty, it uses https://gitea.com # if you want to get everything from your user, leave out the user parameter and just use the token. # for the clone process, either use: # - username + password # - sshkey # - token username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos "foo" and "bar" - foo - bar include: # this includes the repo "foobar" - foobar excludeorgs: # this excludes repos from the organizations "foo" and "bar" - foo - bar includeorgs: # this includes repos from the organizations "foo1" and "bar1" - foo1 - bar1 wiki: true # includes wiki too starred: true # includes the user's starred repositories too filter: stars: 100 # only clone repos with 100 stars lastactivity: 1y # only clone repos which had activity during the last year excludearchived: true languages: # only clone repositories with the following languages - go - java gogs: - token: some-token # token_file: token.txt # alternatively, specify token in a file user: some-user # the user you want to clone the repositories from. url: http(s)://url-to-gogs # no default value # if you want to get everything from your user, leave out the user parameter and just use the token. # for the clone process, either use: # - username + password # - sshkey # - token username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos "foo" and "bar" - foo - bar include: # this includes the repo "foobar" - foobar excludeorgs: # this excludes repos from the organizations "foo" and "bar" - foo - bar includeorgs: # this includes repos from the organizations "foo1" and "bar1" - foo1 - bar1 wiki: true # includes wiki too filter: stars: 100 # only clone repos with 100 stars lastactivity: 1y # only clone repos which had activity during the last year gitlab: - token: some-token # token_file: token.txt # alternatively, specify token in a file user: some-user # the user you want to clone the repositories from. url: http(s)://url-to-gitlab # if empty, it uses https://gitlab.com # if you want to get everything from your user, leave out the user parameter and just use the token. # for the clone process, either use: # - username + password # - sshkey # - token username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos "foo" and "bar" - foo - bar include: # this includes the repo "foobar" - foobar excludeorgs: # this excludes repos from the organizations "foo" and "bar" - foo - bar includeorgs: # this includes repos from the organizations "foo1" and "bar1" - foo1 - bar1 wiki: true # includes wiki too starred: true # includes the user's starred repositories too bitbucket: - user: some-user # the user you want to clone the repositories from. url: http(s)://url-to-bitbucket # if empty, it uses https://bitbucket.org username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos foo and bar - foo - bar include: - foobar filter: lastactivity: 1y # only clone repos which had activity during the last year onedev: - user: some-user # the user you want to clone the repositories from. url: http(s)://url-to-onedev # if empty, it uses https://bitbucket.org username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos foo and bar - foo - bar include: - foobar filter: lastactivity: 1y # only clone repos which had activity during the last year sourcehut: - token: some-token # token_file: token.txt # alternatively, specify token in a file user: some-user # the user you want to clone the repositories from. url: http(s)://url-to-sourcehut # if empty, it uses https://git.sr.ht # if you want to get everything from your user, leave out the user parameter and just use the token. # for the clone process, either use: # - username + password # - sshkey # - token username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa exclude: # this excludes the repos "foo" and "bar" - foo - bar include: # this includes the repo "foobar" - foobar wiki: true # includes wiki too filter: lastactivity: 1y # only clone repos which had activity during the last year any: - url: url-to-any-repo # can be https, http or ssh username: your-user # user is used to clone the repo with password: your-password ssh: true # can be true or false sshkey: /path/to/key # if empty, it uses your home directories' .ssh/id_rsa - url: can-also-be-a-local-path-to-a-bare-repo destination: gitea: - token: some-token # token_file: token.txt # alternatively, specify token in a file user: some-nome # can be a user or an organization, it must exist on the system url: http(s)://url-to-gitea createorg: true # creates an organization if it doesn't exist already, if no user is set it creates an organization with the name of the original author visibility: repositories: private # private, public, default: private organizations: private # private, limited, public, default: private gogs: - token: some-token # token_file: token.txt # alternatively, specify token in a file user: some-nome # can be a user or an organization, it must exist on the system url: http(s)://url-to-gogs createorg: true # creates an organization if it doesn't exist already, if no user is set it creates an organization with the name of the original author visibility: repositories: private # private, public, default: private gitlab: - token: some-token # token_file: token.txt # alternatively, specify token in a file url: http(s)://url-to-gitlab local: # Export this path from Docker with a volume to make it accessible and more permanent. - path: /some/path/gickup structured: true # checks repos out like hostersite/user|organization/repo zip: true # zips the repository after cloned and removes the repository afterwards keep: 5 # only keeps x backups bare: true # clone the repositories as bare cron: 0 22 * * * # optional - when cron is not provided, the program runs once and exits. # Otherwise, it runs according to the cron schedule. # See timezone commentary in docker-compose.yml for making sure this container runs # in the timezone you want. # For more information on crontab or testing: https://crontab.guru/ log: # optional timeformat: 2006-01-02 15:04:05 # you can use a custom time format, use https://yourbasic.org/golang/format-parse-string-time-date-example/ to check how date formats work in go # or set it as environment variable GICKUP_TIME_FORMAT file-logging: # optional dir: log # directory to log into file: gickup.log # file to log into maxage: 7 # keep logs for 7 days metrics: prometheus: # optional, needs to be provided in the first config endpoint: /metrics listen_addr: ":6178" # default listens on port 6178 on all IPs. heartbeat: # optional - upon successful backup, makes a GET http request to one or more URLs. This is useful for use with monitoring services such as healthchecks.io or deadmanssnitch.com urls: - http(s)://url-to-make-request-to - http(s)://another-url-to-make-request-to --- # you can define separate source and destination pairs, # like "mirror all repos from github to gitea but keep gitlab repos up-to-date in ~/backup" # if cron is defined in the first config, this cron interval will be used for all the other confgurations, except it has one of its own. # if cron is not enabled for the first config, cron will not run for any other configuration # metrics configuration is always used from the first configuration