{"id":51226203,"url":"https://github.com/skonovalovs/redmine-external-source","last_synced_at":"2026-06-28T12:00:32.319Z","repository":{"id":367080370,"uuid":"1279064494","full_name":"SKonovalovS/redmine-external-source","owner":"SKonovalovS","description":"External Sources plugin for Redmine. Add links to Jira, YouTrack, GitLab, GitHub, Confluence, BookStack, Telegram and other external systems directly in issue pages.","archived":false,"fork":false,"pushed_at":"2026-06-24T12:44:18.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-24T14:12:50.241Z","etag":null,"topics":["github","gitlab","issue-tracker","jira","redmine","redmine-plugin","youtrack"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/SKonovalovS.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-24T10:40:10.000Z","updated_at":"2026-06-24T12:43:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SKonovalovS/redmine-external-source","commit_stats":null,"previous_names":["skonovalovs/redmine-external-source"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/SKonovalovS/redmine-external-source","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKonovalovS%2Fredmine-external-source","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKonovalovS%2Fredmine-external-source/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKonovalovS%2Fredmine-external-source/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKonovalovS%2Fredmine-external-source/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SKonovalovS","download_url":"https://codeload.github.com/SKonovalovS/redmine-external-source/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SKonovalovS%2Fredmine-external-source/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34887328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["github","gitlab","issue-tracker","jira","redmine","redmine-plugin","youtrack"],"created_at":"2026-06-28T12:00:23.083Z","updated_at":"2026-06-28T12:00:32.304Z","avatar_url":"https://github.com/SKonovalovS.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Redmine External Source Links\n\n[![Latest Release](https://img.shields.io/github/v/release/SKonovalovS/redmine-external-source?label=Latest%20Release)](https://github.com/SKonovalovS/redmine-external-source/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Redmine](https://img.shields.io/badge/Redmine-5.0%20%7C%205.1%20%7C%206.x-red.svg)](https://www.redmine.org/)\n[![CI](https://github.com/SKonovalovS/redmine-external-source/actions/workflows/compatibility.yml/badge.svg)](https://github.com/SKonovalovS/redmine-external-source/actions/workflows/compatibility.yml)\n[![Downloads](https://img.shields.io/github/downloads/SKonovalovS/redmine-external-source/total?label=Downloads)](https://github.com/SKonovalovS/redmine-external-source/releases)\n\n**Redmine External Source Links** adds a native-looking **External source** section to Redmine issue pages.\n\nIt lets teams attach links to external systems without full synchronization or API integration. The plugin stores the source type, subject, URL, display order, and journal history inside Redmine.\n\n![External Source Links in Redmine dark theme](screenshots/external-source-dark.png)\n\n## Features\n\n- Native Redmine issue-page section: **External source**.\n- Enable or disable per project via **Project settings → Modules**.\n- Role-based permissions:\n  - view external sources;\n  - manage external sources.\n- Add, edit, delete, copy, and reorder external links.\n- Edit by pencil icon or by double-clicking a row.\n- Drag \u0026 drop sorting.\n- Issue journal notes for add/update/delete/sort operations.\n- Built-in sources with icons:\n  - Jira;\n  - Redmine (external);\n  - BookStack;\n  - Alfresco;\n  - Confluence;\n  - Telegram;\n  - MAX;\n  - GitLab;\n  - GitHub;\n  - Bitbucket;\n  - YouTube;\n  - Other.\n- Custom source types via plugin settings.\n- Russian and English localization.\n- JSON REST API.\n- Compatible with Redmine 5.0.x, 5.1.x, and 6.x.\n\n## Screenshots\n\n### Issue page\n\n![Issue page](screenshots/external-source-dark.png)\n\n### Add or edit external source\n\n![Add external source](screenshots/add-source.png)\n\n## Installation\n\nClone or unpack the plugin into the Redmine `plugins` directory. The directory name must be exactly:\n\n```text\nredmine_external_issue_links\n```\n\n```bash\ncd /path/to/redmine/plugins\ngit clone https://github.com/SKonovalovS/redmine-external-source.git redmine_external_issue_links\n\ncd /path/to/redmine\nbundle exec rake redmine:plugins:migrate RAILS_ENV=production\nbundle exec rake tmp:cache:clear RAILS_ENV=production\nsudo systemctl restart redmine\n```\n\nFor Docker-based installations, place the plugin into the host directory or volume used as the source for Redmine plugins, then restart the Redmine container.\n\nExample:\n\n```bash\ncd /opt/redmine/data/plugins\ngit clone https://github.com/SKonovalovS/redmine-external-source.git redmine_external_issue_links\ndocker restart redmine-redmine-2\n```\n\n## Configuration\n\n### Enable the project module\n\n1. Open a project.\n2. Go to **Settings → Modules**.\n3. Enable **External source**.\n\n### Configure permissions\n\nGo to **Administration → Roles and permissions** and grant:\n\n- **View external sources**;\n- **Manage external sources**.\n\n### Custom sources\n\nGo to **Administration → Plugins → Redmine External Source Links → Configure**.\n\nExample:\n\n```yaml\n- key: sharepoint\n  label: SharePoint\n  icon: external.svg\n- key: support_portal\n  label: Support Portal\n  icon: external.svg\n```\n\nCustom icons should be placed in:\n\n```text\nplugins/redmine_external_issue_links/assets/images/source_icons/\n```\n\nThen use the file name in the `icon` field.\n\n## REST API\n\nFull API documentation is available here:\n\n[docs/API.md](docs/API.md)\n\nQuick example:\n\n```http\nPOST /issues/:issue_id/external_issue_links.json\nContent-Type: application/json\n\n{\n  \"external_issue_link\": {\n    \"source_type\": \"gitlab\",\n    \"subject\": \"MAX Bot repository\",\n    \"url\": \"https://gitlab.example.com/team/max-bot\"\n  }\n}\n```\n\n## Uninstall\n\nUse the standard Redmine plugin migration rollback before removing the plugin directory.\n\n```bash\ncd /path/to/redmine\nbundle exec rake redmine:plugins:migrate NAME=redmine_external_issue_links VERSION=0 RAILS_ENV=production\n```\n\nThen remove the plugin directory:\n\n```bash\nrm -rf plugins/redmine_external_issue_links\n```\n\nClear cache and restart Redmine:\n\n```bash\nbundle exec rake tmp:cache:clear RAILS_ENV=production\nsudo systemctl restart redmine\n```\n\nFor Docker-based installations, remove the plugin from the host directory or volume used as the source for Redmine plugins, then restart the Redmine container.\n\nExample:\n\n```bash\nrm -rf /opt/redmine/data/plugins/redmine_external_issue_links\ndocker restart redmine-redmine-2\n```\n\nIf the database table was deleted manually while migration records remained in Redmine, clean up the plugin entries in `schema_migrations` before running migrations again:\n\n```sql\nDELETE FROM schema_migrations\nWHERE version LIKE '%redmine_external_issue_links%';\n```\n\nThis manual cleanup is only needed after an incorrect manual uninstall. Prefer the standard rollback command above.\n\n## Compatibility\n\n| Redmine | Status |\n| ------- | ------ |\n| 5.0.x   | Supported |\n| 5.1.x   | Supported |\n| 6.x     | Supported / CI checked |\n\n## Development\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Security\n\nSee [SECURITY.md](SECURITY.md).\n\n## Code of Conduct\n\nSee [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).\n\n## License\n\nMIT License. See [LICENSE](LICENSE).\n\n## Author\n\nKonovalov Semyon  \nGitHub: [SKonovalovS](https://github.com/SKonovalovS)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskonovalovs%2Fredmine-external-source","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskonovalovs%2Fredmine-external-source","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskonovalovs%2Fredmine-external-source/lists"}