{"id":17645554,"url":"https://github.com/sgaunet/gitlab-backup2s3","last_synced_at":"2026-04-01T17:42:11.456Z","repository":{"id":52524459,"uuid":"512201542","full_name":"sgaunet/gitlab-backup2s3","owner":"sgaunet","description":"Enhanced Docker image to export GitLab projects, encrypt archives (optional), and save them to S3. Supports automated backups with AES GCM encryption, group/project exports, and configurable S3 storage.","archived":false,"fork":false,"pushed_at":"2026-03-18T19:41:19.000Z","size":223,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-19T08:49:12.291Z","etag":null,"topics":["aes-gcm","automated-backup","aws","backup","cronjob","docker","encryption","gitlab","gitlab-api","golang","helm","kubernetes","minio","s3"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sgaunet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["sgaunet"]}},"created_at":"2022-07-09T14:08:12.000Z","updated_at":"2026-03-11T19:31:55.000Z","dependencies_parsed_at":"2022-08-25T23:01:50.156Z","dependency_job_id":"07f0b86d-3c12-4e2d-b66c-04715ee5f183","html_url":"https://github.com/sgaunet/gitlab-backup2s3","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/sgaunet/gitlab-backup2s3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgaunet%2Fgitlab-backup2s3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgaunet%2Fgitlab-backup2s3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgaunet%2Fgitlab-backup2s3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgaunet%2Fgitlab-backup2s3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sgaunet","download_url":"https://codeload.github.com/sgaunet/gitlab-backup2s3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgaunet%2Fgitlab-backup2s3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes-gcm","automated-backup","aws","backup","cronjob","docker","encryption","gitlab","gitlab-api","golang","helm","kubernetes","minio","s3"],"created_at":"2024-10-23T10:57:13.702Z","updated_at":"2026-04-01T17:42:11.441Z","avatar_url":"https://github.com/sgaunet.png","language":"Go","funding_links":["https://github.com/sponsors/sgaunet"],"categories":[],"sub_categories":[],"readme":"[![Go Report Card](https://goreportcard.com/badge/github.com/sgaunet/gitlab-backup2s3)](https://goreportcard.com/report/github.com/sgaunet/gitlab-backup2s3)\n[![GitHub release](https://img.shields.io/github/release/sgaunet/gitlab-backup2s3.svg)](https://github.com/sgaunet/gitlab-backup2s3/releases/latest)\n![GitHub Downloads](https://img.shields.io/github/downloads/sgaunet/gitlab-backup2s3/total)\n![Test Coverage](https://raw.githubusercontent.com/wiki/sgaunet/gitlab-backup2s3/coverage-badge.svg)\n[![linter](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/linter.yml/badge.svg)](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/linter.yml)\n[![coverage](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/coverage.yml/badge.svg)](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/coverage.yml)\n[![Snapshot Build](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/snapshot.yml/badge.svg)](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/snapshot.yml)\n[![Release Build](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/release.yml/badge.svg)](https://github.com/sgaunet/gitlab-backup2s3/actions/workflows/release.yml)\n[![GoDoc](https://godoc.org/github.com/sgaunet/gitlab-backup2s3?status.svg)](https://godoc.org/github.com/sgaunet/gitlab-backup2s3)\n[![License](https://img.shields.io/github/license/sgaunet/gitlab-backup2s3.svg)](LICENSE)\n\n# gitlab-backup2s3\n\ngitlab-backup2s3 is an enhanced docker image to export gitlab projects, encrypt the archive (optional) and save them in a S3.\n\nYou can use the binary but it will need some prerequisites :\n\n* [gocrypt](https://github.com/sgaunet/gocrypt) \u003e= v2.0.0 (if you like to encrypt archives with AES)\n* [gitlab-backup](https://github.com/sgaunet/gitlab-backup) \u003e= v1.0.0\n\n## Version Compatibility\n\n⚠️ **Important Breaking Change** ⚠️\n\nVersion 2 of **gocrypt** (v2) introduced AES GCM (Galois/Counter Mode) encryption, which breaks compatibility with files encrypted using version 1 (v1).\n\n- Files encrypted with v1 **cannot** be decrypted with v2\n- Files encrypted with v2 **cannot** be decrypted with v1\n\nThis incompatibility is due to the fundamental change in the encryption mode from v1 to v2. AES GCM provides better security with authenticated encryption but requires a different format that is not backwards compatible.\n\nVersion 2 of **gocrypt** is not compatible with version 1. If you have files encrypted with v1, you will need to decrypt them using the v1 version of **gocrypt** before you can use them with v2. Version 2 of gitlab-backup2s3 uses v2 of gocrypt.\nVersion 1 of **gitlab-backup2s3** is compatible with version 1 of **gocrypt**. \n\n## Configuration\n\nIt needs some environement variables to run:\n\n* GOCRYPT_KEY (if you want to encrypt archives)\n* POSTBACKUP (if you want to encrypt archives, set it to: gocrypt enc --i %INPUTFILE% )\n* GITLAB_TOKEN\n* GITALB_URI (if the endpoint differs from https://gitlab.com)\n* GITLABPROJECTID: id of the project to export\n* GITLABGROUPID: id of the group to export (will export all sub projects)\n* DEBUGLEVEL: info by default\n* TMPDIR: /tmp by default\n* LOCALPATH: if you want to export archives locally (let empty if you prefer to copy archives to s3)\n* S3ENDPOINT: Example https://s3.eu-west-3.amazonaws.com   or http://localhost:9090 for a local minio instance\n* S3REGION: region of s3\n* S3BUCKETNAME\n* S3BUCKETPATH\n* AWS_SECRET_ACCESS_KEY: not mandatory if you associate an IAM role to the pod or ec2\n* AWS_ACCESS_KEY_ID: not mandatory too\n* EXPORT_TIMEOUT_MIN: default timeout export in minutes (default \"10\")\n\n# Development\n\nThis project is using :\n\n* Golang\n* [task for development](https://taskfile.dev/)\n* docker\n* [docker buildx](https://github.com/docker/buildx)\n* docker manifest\n* [goreleaser](https://goreleaser.com/)\n* [pre-commit](https://pre-commit.com/)\n\nThere are hooks executed in the precommit stage. Once the project cloned on your disk, please install pre-commit:\n\n```\nbrew install pre-commit\n```\n\nInstall tools:\n\n```\ntask dev:install-prereq\n```\n\nAnd install the hooks:\n\n```\ntask dev:install-pre-commit\n```\n\nIf you like to launch manually the pre-commmit hook:\n\n```\ntask dev:pre-commit\n```\n\n## Example of deployment\n\n### raw kubernetes manifests\n\nIn the [deploy/k8s folder](deploy/k8s/), you will find manifests to deploy a cronjob in kubernetes.\n\n### helm\n\nAnother github project contains the helm chart. This is [https://github.com/sgaunet/helm-gitlab-backup2s3](https://github.com/sgaunet/helm-gitlab-backup2s3), check the README.\n\n[Configuration of the helm chart is available here.](https://github.com/sgaunet/helm-gitlab-backup2s3/blob/main/charts/gitlab-backup2s3/README.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgaunet%2Fgitlab-backup2s3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgaunet%2Fgitlab-backup2s3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgaunet%2Fgitlab-backup2s3/lists"}