https://github.com/skonovalovs/redmine-external-source
External Sources plugin for Redmine. Add links to Jira, YouTrack, GitLab, GitHub, Confluence, BookStack, Telegram and other external systems directly in issue pages.
https://github.com/skonovalovs/redmine-external-source
github gitlab issue-tracker jira redmine redmine-plugin youtrack
Last synced: 1 day ago
JSON representation
External Sources plugin for Redmine. Add links to Jira, YouTrack, GitLab, GitHub, Confluence, BookStack, Telegram and other external systems directly in issue pages.
- Host: GitHub
- URL: https://github.com/skonovalovs/redmine-external-source
- Owner: SKonovalovS
- License: mit
- Created: 2026-06-24T10:40:10.000Z (5 days ago)
- Default Branch: main
- Last Pushed: 2026-06-24T12:44:18.000Z (5 days ago)
- Last Synced: 2026-06-24T14:12:50.241Z (5 days ago)
- Topics: github, gitlab, issue-tracker, jira, redmine, redmine-plugin, youtrack
- Language: Ruby
- Homepage:
- Size: 19.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Redmine External Source Links
[](https://github.com/SKonovalovS/redmine-external-source/releases)
[](LICENSE)
[](https://www.redmine.org/)
[](https://github.com/SKonovalovS/redmine-external-source/actions/workflows/compatibility.yml)
[](https://github.com/SKonovalovS/redmine-external-source/releases)
**Redmine External Source Links** adds a native-looking **External source** section to Redmine issue pages.
It 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.

## Features
- Native Redmine issue-page section: **External source**.
- Enable or disable per project via **Project settings → Modules**.
- Role-based permissions:
- view external sources;
- manage external sources.
- Add, edit, delete, copy, and reorder external links.
- Edit by pencil icon or by double-clicking a row.
- Drag & drop sorting.
- Issue journal notes for add/update/delete/sort operations.
- Built-in sources with icons:
- Jira;
- Redmine (external);
- BookStack;
- Alfresco;
- Confluence;
- Telegram;
- MAX;
- GitLab;
- GitHub;
- Bitbucket;
- YouTube;
- Other.
- Custom source types via plugin settings.
- Russian and English localization.
- JSON REST API.
- Compatible with Redmine 5.0.x, 5.1.x, and 6.x.
## Screenshots
### Issue page

### Add or edit external source

## Installation
Clone or unpack the plugin into the Redmine `plugins` directory. The directory name must be exactly:
```text
redmine_external_issue_links
```
```bash
cd /path/to/redmine/plugins
git clone https://github.com/SKonovalovS/redmine-external-source.git redmine_external_issue_links
cd /path/to/redmine
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
bundle exec rake tmp:cache:clear RAILS_ENV=production
sudo systemctl restart redmine
```
For Docker-based installations, place the plugin into the host directory or volume used as the source for Redmine plugins, then restart the Redmine container.
Example:
```bash
cd /opt/redmine/data/plugins
git clone https://github.com/SKonovalovS/redmine-external-source.git redmine_external_issue_links
docker restart redmine-redmine-2
```
## Configuration
### Enable the project module
1. Open a project.
2. Go to **Settings → Modules**.
3. Enable **External source**.
### Configure permissions
Go to **Administration → Roles and permissions** and grant:
- **View external sources**;
- **Manage external sources**.
### Custom sources
Go to **Administration → Plugins → Redmine External Source Links → Configure**.
Example:
```yaml
- key: sharepoint
label: SharePoint
icon: external.svg
- key: support_portal
label: Support Portal
icon: external.svg
```
Custom icons should be placed in:
```text
plugins/redmine_external_issue_links/assets/images/source_icons/
```
Then use the file name in the `icon` field.
## REST API
Full API documentation is available here:
[docs/API.md](docs/API.md)
Quick example:
```http
POST /issues/:issue_id/external_issue_links.json
Content-Type: application/json
{
"external_issue_link": {
"source_type": "gitlab",
"subject": "MAX Bot repository",
"url": "https://gitlab.example.com/team/max-bot"
}
}
```
## Uninstall
Use the standard Redmine plugin migration rollback before removing the plugin directory.
```bash
cd /path/to/redmine
bundle exec rake redmine:plugins:migrate NAME=redmine_external_issue_links VERSION=0 RAILS_ENV=production
```
Then remove the plugin directory:
```bash
rm -rf plugins/redmine_external_issue_links
```
Clear cache and restart Redmine:
```bash
bundle exec rake tmp:cache:clear RAILS_ENV=production
sudo systemctl restart redmine
```
For Docker-based installations, remove the plugin from the host directory or volume used as the source for Redmine plugins, then restart the Redmine container.
Example:
```bash
rm -rf /opt/redmine/data/plugins/redmine_external_issue_links
docker restart redmine-redmine-2
```
If the database table was deleted manually while migration records remained in Redmine, clean up the plugin entries in `schema_migrations` before running migrations again:
```sql
DELETE FROM schema_migrations
WHERE version LIKE '%redmine_external_issue_links%';
```
This manual cleanup is only needed after an incorrect manual uninstall. Prefer the standard rollback command above.
## Compatibility
| Redmine | Status |
| ------- | ------ |
| 5.0.x | Supported |
| 5.1.x | Supported |
| 6.x | Supported / CI checked |
## Development
See [CONTRIBUTING.md](CONTRIBUTING.md).
## Security
See [SECURITY.md](SECURITY.md).
## Code of Conduct
See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
## License
MIT License. See [LICENSE](LICENSE).
## Author
Konovalov Semyon
GitHub: [SKonovalovS](https://github.com/SKonovalovS)