{"id":19036561,"url":"https://github.com/salamek/gitlab-tools","last_synced_at":"2025-06-21T23:04:40.183Z","repository":{"id":41442181,"uuid":"119310502","full_name":"Salamek/gitlab-tools","owner":"Salamek","description":"Web application providing tools not avaiable in GitLab CE (Gitlab push/pull mirror and more)","archived":false,"fork":false,"pushed_at":"2024-06-21T20:10:19.000Z","size":795,"stargazers_count":103,"open_issues_count":3,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-13T12:11:38.229Z","etag":null,"topics":["git","gitlab","gitlab-mirror","gitlab-mirror-webhook","mirrored-repositories","mirroring","replication"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Salamek.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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}},"created_at":"2018-01-29T00:15:20.000Z","updated_at":"2025-02-26T20:54:33.000Z","dependencies_parsed_at":"2024-06-22T11:57:23.812Z","dependency_job_id":"0a478140-fd4e-4898-95e1-580a0cd6d0ad","html_url":"https://github.com/Salamek/gitlab-tools","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/Salamek/gitlab-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salamek%2Fgitlab-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salamek%2Fgitlab-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salamek%2Fgitlab-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salamek%2Fgitlab-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Salamek","download_url":"https://codeload.github.com/Salamek/gitlab-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salamek%2Fgitlab-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261206106,"owners_count":23124837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["git","gitlab","gitlab-mirror","gitlab-mirror-webhook","mirrored-repositories","mirroring","replication"],"created_at":"2024-11-08T21:54:48.966Z","updated_at":"2025-06-21T23:04:35.164Z","avatar_url":"https://github.com/Salamek.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitLab Tools\n\nThis application provides functionality not avaiable in GitLab (CE) Mainly useful for pull mirroring from GitHub\n\n\u003e Please consider sponsoring if you're using this package commercially, my time is not free :) You can sponsor me by clicking on \"Sponsor\" button in top button row. Thank You.\n\n\n[![Home](doc/img/home_thumb.png)](doc/img/home.png)\n\n- [Fingerprints screenshoot](doc/img/fingerprints.png)\n- [Pull mirrors screenshoot](doc/img/pull_mirrors.png)\n\n# Avaiable features\n\n| Feature name | Gitlab CE | Gitlab EE | Gitlab Tools | Description |\n| :-- | :-: | :-: | :-: | :-: |\n| Pull mirror [(doc)](https://github.com/Salamek/gitlab-tools/wiki/1.-Pull-mirror-configuration-guide) | No | Yes | Yes | Allows to automaticaly mirror your Git or SVN repositories to GitLab by hook trigger or periodicaly |\n| Push mirror [(doc)](https://github.com/Salamek/gitlab-tools/wiki/2.-Push-mirror-configuration-guide) | Yes(10.8) | Yes | Yes | Allows to automaticaly mirror your GitLab repository to any remote Git repository |\n\n# Installation\n\n## Debian and derivates (Debian 11 and Ubuntu 20.04.4 LTS are supported, other versions may also work...)\n\nAdd repository by running these commands\n\n```bash\n$ wget -O - https://repository.salamek.cz/deb/salamek.gpg.key|sudo apt-key add -\n$ echo \"deb     https://repository.salamek.cz/deb/pub all main\" | sudo tee /etc/apt/sources.list.d/salamek.cz.list\n```\n\nAnd then you can install a package gitlab-tools\n\n```bash\n$ apt update \u0026\u0026 apt install gitlab-tools\n```\n\n## Archlinux\n\nAdd repository by adding this at end of file /etc/pacman.conf\n\n```\n[salamek]\nServer = https://repository.salamek.cz/arch/pub\nSigLevel = Optional\n```\n\nand then install by running\n\n```bash\n$ pacman -Sy gitlab-tools\n```\n\n## Docker\n\nYou can create your docker-compose stack to run this application on docker. You can visit [cenk1cenk2/docker-gitlab-tools](https://github.com/cenk1cenk2/docker-gitlab-tools) for more information on the container.\n\n# Setup\n\nAfter successful installation you will need to run setup to configure your installation:\n\n```bash\n$ gitlab-tools setup\n```\n\nThis will start simple setup utility where you can/must configure\n\n1. gitlab-tools user (default: gitlab-tools, should be created after install)\n2. Database type to use, PostgreSQL is recommended database to use (you can use other database types only on your own risk)\n   1. Database host (PostgreSQL, MySQL) or path (Only SQLite)\n   2. Database name (PostgreSQL, MySQL)\n   3. Database user (PostgreSQL, MySQL)\n   4. Database password (PostgreSQL, MySQL)\n3. Webserver configuration (Host and port makes sense only when using integrated web server controlled by gitlab-tools service)\n4. Server name (eg.: https://gitlab-tools.example.com or IP:PORT when using integrated webserver)\n5. GitLab API configuration (you can follow this guide till point 7. https://docs.gitlab.com/ee/integration/gitlab.html) redirect url is https://gitlab-tools.example.com/sign/in/do where example.com is your server domain\n   1. Gitlab APP ID: Application Id\n   2. Gitlab APP SECRET: Secret\n   3. Gitlab SSH: hostname and port where is your gitlab SSH port exposed in format gitlab.com:22\n6. Save new configuration ? -\u003e y (this will create config file in /etc/gitlab-tools/config.yml)\n7. Recreate database ? -\u003e y (this will create new empty database)\n8. Restart services to load new configuration ? -\u003e y this will restart all gitlab-tools services:\n   1. gitlab-tools: Controlling integrated webserver, disable this one if you want to use uwsgi or so.\n   2. gitlab-tools_celeryworker: Controlling backround workers, must be enabled and running to perform mirroring\n   3. gitlab-tools_celerybeat: Controlling celery scheduler\n\nThis creates/updates config file in /etc/gitlab-tools/config.yml, you can modify this file manualy\n\nAfter this you should have gitlab-tools running on your \"server name\"\n\n# Running behind UWSGI\n\nInstall uwsgi\n\n```\n$ apt install uwsgi uwsgi-plugin-python3\n```\n\nCreate uwsgi application configuration file at `/etc/uwsgi/apps-available/gitlab-tools.example.com.ini`:\n\n```ini\n[uwsgi]\nuid = gitlab-tools\nmaster = true\nchdir = /usr/lib/python3/dist-packages/gitlab_tools\nsocket = /tmp/gitlab-tools.sock\nmodule = wsgi\ncallable = app\nplugins = python3\nbuffer-size = 32768\n```\n\nLink this config file to `/etc/uwsgi/apps-enabled` by running\n\n```bash\n$ ln -s /etc/uwsgi/apps-available/gitlab-tools.example.com.ini /etc/uwsgi/apps-enabled/\n```\n\nRestart uwsgi to load new configuration\n\n```bash\n$ systemctl restart uwsgi\n```\n\nNow you should have `/tmp/gitlab-tools.sock` socket file created, check that by running\n\n```bash\n$ file /tmp/gitlab-tools.sock\n```\n\n# Webserver NGINX\n\nInstall nginx by running\n\n```\napt install nginx\n```\n\nCreate configuration file at `/etc/nginx/sites-available/gitlab-tools.example.com`:\n\n```\n# Uncomment this when using SSL\n#server {\n#    listen       80;\n#    listen       [::]:80;\n#    server_name  gitlab-tools.example.com;\n#    return       301 https://gitlab-tools.example.com$request_uri;\n#}\n\nserver {\n        # Uncomment these to use SSL\n        #listen 443 ssl http2;\n        #listen [::]:443 ssl http2;\n        # Comment these to use SSL\n        listen 80;\n        listen [::]:80;\n        server_name gitlab-tools.example.com;\n\n        root /usr/lib/python3/dist-packages/gitlab_tools;\n\n        # Uncomment these to use SSL\n        #ssl on;\n        #ssl_certificate letsencrypt/certs/example.com/fullchain.pem;\n        #ssl_certificate_key letsencrypt/certs/example.com/privkey.pem;\n\n        location '/.well-known/acme-challenge' {\n                default_type \"text/plain\";\n                root        /var/tmp/letsencrypt-auto;\n        }\n\n        location / {\n                uwsgi_pass unix:///tmp/gitlab-tools.sock;\n                include uwsgi_params;\n        }\n}\n\n```\n\nLink this file to `/etc/nginx/sites-enabled` by running\n\n```bash\n$ ln -s /etc/nginx/sites-available/gitlab-tools.example.com /etc/nginx/sites-enabled/\n```\n\nAnd restart nginx\n\n```bash\n$ systemctl restart nginx\n```\n\nNow you should have gitlab-tools accessible at `server_name`\n\n# Mirrors\n\nThis project is also mirrored on GitLab https://gitlab.com/Salamek/gitlab-tools\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalamek%2Fgitlab-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalamek%2Fgitlab-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalamek%2Fgitlab-tools/lists"}