Atlassian全家桶及其插件激活方法

  很多团队都采用 Atlassian 公司出品的 Jira、Confluence 作为团队的项目管理、知识管理平台,zhile 大佬对其写了一个通杀的 agent,并于GitHub、码云上开源(可惜目前均已由于DMCA 被BAN)。Alliot 大致帮小伙伴整理了一下该 agent 的使用方法以及在已用其他方式激活过的情景下,如何使用该 agent 激活我们所需要的插件。

前言

声明: 感谢 zhilecptactionhank 两位大佬,一切功劳归与两位大佬。文中内容仅用于个人测试尝鲜,从未用于多人使用场景。读者如需商业使用请向Atlassian官方购买正版,一切商用侵权行为等导致的后果,归咎于直接使用者,与两位大佬以及 Alliot 无关。

  原作者的仓库已无法访问,下文中使用到的 atlassian-agent.jar 下载地址(请注意,如继续,则默认表示您同意以上申明):

1
2
3
# 解压密码www.iots.vip,将jpg后缀改成zip解压
阿里云盘链接:https://www.aliyundrive.com/s/R6kbGyEZ1qk
通过这个链接注册可以多领取500G容量: https://pages.aliyundrive.com/mobile-page/web/beinvited.html?code=f8fd344

部署

直接部署

  直接部署需要较长篇幅配置较多的基础环境,暂时没时间写,优先使用 Docker 尝鲜测试吧。

Docker

Jira
打包镜像

  直接在这位大佬的镜像基础上打入破解包。
  新建文件 Dockerfile 内容如下:

1
2
3
4
5
6
7
8
9
10
# 这边仅测试了7版本,其他版本理论上也没啥问题,自行测试一下
FROM cptactionhank/atlassian-jira-software:7.13.1

USER root

# 将破解包加入容器
COPY "atlassian-agent.jar" /opt/atlassian/jira/

# 设置启动加载
RUN echo 'export CATALINA_OPTS="-javaagent:/opt/atlassian/jira/atlassian-agent.jar ${CATALINA_OPTS}"' >> /opt/atlassian/jira/bin/setenv.sh

将破解包 atlassian-agent.jar 置于 Dockerfile 同一个目录下,构建生成 Docker 镜像并启动:

1
2
3
4
5
# 在当前目录下执行构建,命令最后的“.”不要丢!  
docker build -t jira/jira:v7.13.1 .

# 启动容器,测试环境JVM堆大小等环境变量可以不用指定,生产必须指定,切记
docker run -itd -p 8080:8080 --name jira -v "/data/jira/data:/var/atlassian/jira" --env "CATALINA_OPTS=-Xms1024m -Xmx1024m -Datlassian.plugins.enable.wait=300" jira/jira:v7.13.1

  等待片刻后,浏览器打开 IP:8080,进入初始化安装阶段。

初始化安装

  选择手动配置,如图:
jira-初始化1
下一步,选择数据库(测试可以直接用内置数据库,生产请选择其他数据库)
  数据库建库请使用如下 SQL 来建库:

1
CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;

选择好我们的数据库之后,下一步。
  这里是最关键的一步——激活,这里需要将服务器ID(server-id) 留存备用:
jira-初始化02-激活
  这里假设我的服务器ID为 AAAA-BBBB-CCCC-DDDD:

获取激活码

  打开命令行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 打开我们的jira容器shell  
docker exec -it `docker ps|grep jira|awk '{print $1}'` /bin/bash


cd /opt/atlassian/jira/

# 通过破解包生成激活码
# -p 产品名称 jira
# -m 邮箱(test@test.com)
# -n 用户名,这个随意
# -o 部署的入口地址
# -s 服务器ID(BY9B-GWD1-1C78-K2DE)

java -jar atlassian-agent.jar -p jira -m test@test.com -n BAT -o https://www.iots.vip -s AAAA-BBBB-CCCC-DDDD

  复制上面得到的 licences 填入许可证关键字中,下一步,稍等若干分钟即可初始化完成。

Confluence

  基本步骤与 Jira 一致,唯二不同的是 Dockerfile 的不同以及生成激活码的时候 -p 后面的参数不同,这里附上 Dockerfile:

1
2
3
4
5
6
7
8
9
FROM cptactionhank/atlassian-confluence:6.15.9

USER root

# 将破解包加入容器
COPY "atlassian-agent.jar" /opt/atlassian/confluence/

# 设置启动加载
RUN echo 'export CATALINA_OPTS="-javaagent:/opt/atlassian/confluence/atlassian-agent.jar ${CATALINA_OPTS}"' >> /opt/atlassian/confluence/bin/setenv.sh

  构建与运行命令为:

1
2
3
4
5
# 构建
docker build -f Dockerfile -t confluence/confluence:6.15.9 .

# 启动容器,测试环境JVM堆大小等环境变量可以不用指定,生产必须指定,切记
docker run -itd -p 8090:8090 --name confluence -v "/data/confluence/data:/var/atlassian/confluence" --env "CATALINA_OPTS=-Xms1024m -Xmx1024m -Datlassian.plugins.enable.wait=300" confluence/confluence:6.15.9

生成激活码:

1
2
3
4
5
6
7
8
# 打开我们的jira容器shell  
docker exec -it `docker ps|grep confluence|awk '{print $1}'` /bin/bash


cd /opt/atlassian/confluence/

# 通过破解包生成激活码
java -jar atlassian-agent.jar -p conf -m test@test.com -n BAT -o https://www.iots.vip -s AAAA-BBBB-CCCC-DDDD

插件破解方法

  进入管理面板中的插件页面中,选择想要破解的插件,点击“立即购买”:
jira-插件破解1
  等待下载安装完成后,进入插件管理页面,选择刚才安装的插件,得到应用密钥备用:
jira-插件破解2
  再次进入命令行:

1
2
3
4
5
6
7
8
# 打开我们的jira容器shell  
docker exec -it `docker ps|grep jira|awk '{print $1}'` /bin/bash


cd /opt/atlassian/jira/

# 生成激活码,这里后面添加-d参数
java -jar atlassian-agent.jar -p "这里填写得到的插件的应用密钥" -m test@test.com -n BAT -o https://www.iots.vip -s AAAA-BBBB-CCCC-DDDD -d

  将得到的 licences 填入“许可证关键字”中,选择“更新”即可完成激活。

已用其他方式激活的情况下

  如果已经通过其他方式破解激活了 Jira,需要用本文的方式来激活,则需要先从数据库中得到 licences ,用破解包生成的 licences 替换。

生成 licenses

  进入后台管理面板页,在系统信息中获得服务器ID (管理——系统——系统信息——服务器 ID)
  之后,参照上文获取激活码(license),保存备用。

修改 licenses

  我们需要进入数据库,使用上文得到的激活码(license)来替换原有的 license。

登陆数据库

  忘记数据库连接信息的,可以通过数据库配置文件来得到:
  我这边的路径为: /data01/atlassian/application-data/jira/dbconfig.xml 具体的路径请根据自己实际的安装位置来确定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cat /data01/atlassian/application-data/jira/dbconfig.xml
<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
<name>defaultDS</name>
<delegator-name>default</delegator-name>
<database-type>mysql</database-type>
<jdbc-datasource>
<url>jdbc:mysql://127.0.0.1:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<username>jiradb</username>
<password>123456</password>
<pool-min-size>20</pool-min-size>
<pool-max-size>20</pool-max-size>
<pool-max-wait>30000</pool-max-wait>
<validation-query>select 1</validation-query>
<min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
<time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>
<pool-max-idle>20</pool-max-idle>
<pool-remove-abandoned>true</pool-remove-abandoned>
<pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
<pool-test-on-borrow>false</pool-test-on-borrow>
<pool-test-while-idle>true</pool-test-while-idle>
<validation-query-timeout>3</validation-query-timeout>
</jdbc-datasource>
</jira-database-config>

  则连接信息为:127.0.0.1:3306 用户名jiradb,密码123456

1
2
# 进入sql
mysql -ujiradb -p123456
1
2
3
4
5
6
7
8
9
10
11
12
# 执行SELECT * FROM productlicense\G获得原来的激活信息(别忘了备份旧的license信息,方便回退):  
MySQL [jiradb]> SELECT * FROM productlicense\G
*************************** 1. row ***************************
ID: 10200
LICENSE: AAABZg0xxxx
*************************** 2. row ***************************
ID: 10201
LICENSE: AAABcQ0ODAoxxxx

# 利用上面获取licences的方式获取licences后,更新记录
update productlicense set license ='xxxxx' WHERE id=10200;
update productlicense set license ='xxxxx' WHERE id=10201;

  Confluence 同理,Alliot 这边的 Confluence 的配置文件路径为: /data01/app/atlassian/application-data/confluence/confluence.cfg.xml 基本一眼就能看出来,这里就不多啰嗦。

修改启动命令

  停止 jira 后,在 setenv.sh 文件末尾加入:

1
export JAVA_OPTS="-javaagent:/[路径]/atlassian-agent.jar ${JAVA_OPTS}"

重新启动即可。