blob: 3b5f5530e8658956cd612a0bc7d9a990225e61f2 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2021-11-12 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Project &#x2013; Guice-Cassandra-Rabbitmq-S3 installation guide</title>
<style type="text/css" media="all">
@import url("../../css/james.css");
@import url("../../css/maven-base.css");
@import url("../../css/maven-theme.css");
@import url("../../css/site.css");
@import url("../../js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("../../js/jquery/css/print.css");
@import url("../../js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="../../js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../../js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="../../js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
<meta name="Date-Revision-yyyymmdd" content="20211112" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="../../index.html" id="bannerLeft" title="james-logo.png">
<img src="../../images/logos/james-logo.png" alt="James Project" />
</a>
<a href="https://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2021-11-12</span>
</div>
<div class="xright"> <a href="../../index.html" title="Home">Home</a>
|
<a href="../../documentation.html" title="James">James</a>
|
<a href="../../mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="../../jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="../../jspf/index.html" title="jSPF">jSPF</a>
|
<a href="../../jdkim/index.html" title="jDKIM">jDKIM</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>James components</h5>
<ul>
<li class="collapsed">
<a href="../../documentation.html" title="About James">About James</a>
</li>
<li class="expanded">
<a href="../../server/index.html" title="Server">Server</a>
<ul>
<li class="none">
<a href="../../server/advantages.html" title="Advantages">Advantages</a>
</li>
<li class="none">
<a href="../../server/objectives.html" title="Objectives">Objectives</a>
</li>
<li class="expanded">
<a href="../../server/quick-start.html" title="User Manual">User Manual</a>
<ul>
<li class="collapsed">
<a href="../../server/features.html" title="1. Features">1. Features</a>
</li>
<li class="none">
<a href="../../server/packaging.html" title="2. Packaging">2. Packaging</a>
</li>
<li class="expanded">
<a href="../../server/install.html" title="3. Install James">3. Install James</a>
<ul>
<li class="none">
<strong>Cassandra-RabbitMQ-S3-guice</strong>
</li>
<li class="none">
<a href="../../server/install/guice-cassandra.html" title="Cassandra-guice">Cassandra-guice</a>
</li>
<li class="none">
<a href="../../server/install/guice-jpa.html" title="JPA-guice">JPA-guice</a>
</li>
<li class="none">
<a href="../../server/install/guice-jpa-smtp.html" title="JPA-SMTP-guice">JPA-SMTP-guice</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../../server/config.html" title="4. Configure James">4. Configure James</a>
</li>
<li class="collapsed">
<a href="../../server/manage.html" title="5. Manage">5. Manage</a>
</li>
<li class="collapsed">
<a href="../../server/monitor.html" title="6. Monitor">6. Monitor</a>
</li>
<li class="collapsed">
<a href="../../server/upgrade.html" title="7. Upgrade">7. Upgrade</a>
</li>
<li class="collapsed">
<a href="../../server/dev.html" title="8. Developers Corner">8. Developers Corner</a>
</li>
</ul>
</li>
<li class="none">
<a href="../../mail.html#James_Mailing_lists" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="../../server/release-notes.html" title="Release Notes">Release Notes</a>
</li>
<li class="none">
<a href="../../server/apidocs/index.html" title="Javadoc">Javadoc</a>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue Tracker</a>
</li>
<li class="none">
<a href="https://github.com/apache/james-project" title="Sources">Sources</a>
</li>
<li class="none">
<a href="../../server/rfcs.html" title="RFCs">RFCs</a>
</li>
<li class="none">
<a href="../../download.cgi#Apache_James_Server" title="Download releases">Download releases</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../../mailet/index.html" title="Mailets">Mailets</a>
</li>
<li class="collapsed">
<a href="../../mailbox/index.html" title="Mailbox">Mailbox</a>
</li>
<li class="collapsed">
<a href="../../protocols/index.html" title="Protocols">Protocols</a>
</li>
<li class="collapsed">
<a href="../../mpt/index.html" title="MPT">MPT</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<h1>Guice-Cassandra-Rabbitmq-S3 installation guide</h1><section>
<h2><a name="Building"></a>Building</h2><section>
<h3><a name="Requirements"></a>Requirements</h3>
<ul>
<li>Java 11 SDK</li>
<li>Docker &#x2215; ElasticSearch 7.10.2, RabbitMQ Management 3.8.18, compatible S3 ObjectStorage and Cassandra 3.11.10</li>
<li>Maven 3</li>
</ul></section><section>
<h3><a name="Building_the_artifacts"></a>Building the artifacts</h3>
<p>An usual compilation using maven will produce two artifacts into server/apps/distributed-app/target directory:</p>
<ul>
<li>james-server-distributed-app.jar</li>
<li>james-server-distributed-app.lib</li>
</ul>
<p>You can for example run in the base of <a class="externalLink" href="https://github.com/apache/james-project">this git repository</a>:</p>
<div class="source">
<div class="source">
<pre>mvn clean install
</pre></div></div>
</section></section><section>
<h2><a name="Running"></a>Running</h2><section>
<h3><a name="Requirements"></a>Requirements</h3>
<ul>
<li>Cassandra 3.11.10</li>
<li>ElasticSearch 7.10.2</li>
<li>RabbitMQ-Management 3.8.18</li>
<li>Zenko Cloudserver or AWS S3 compatible API</li>
</ul></section><section>
<h3><a name="James_Launch"></a>James Launch</h3>
<p>To run james, you have to create a directory containing required configuration files.</p>
<p>James requires the configuration to be in a subfolder of working directory that is called <b>conf</b>. You can get a sample directory for configuration from <a class="externalLink" href="https://github.com/apache/james-project/tree/master/server/apps/distributed-app/sample-configuration">server/apps/distributed-app/sample-configuration</a>. You might need to adapt it to your needs.</p>
<p>You also need to generate a keystore in your conf folder with the following command:</p>
<div class="source">
<div class="source">
<pre>$ keytool -genkey -alias james -keyalg RSA -keystore conf/keystore
</pre></div></div>
<p>You need to have a Cassandra, ElasticSearch, S3 and RabbitMQ instance running. You can either install the servers or launch them via docker:</p>
<div class="source">
<div class="source">
<pre>$ docker run -d -p 9042:9042 --name=cassandra cassandra:3.11.10
$ docker run -d -p 9200:9200 --name=elasticsearch --env 'discovery.type=single-node' docker.elastic.co/elasticsearch/elasticsearch:7.10.2
$ docker run -d -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq:3.8.18-management
$ docker run -d --env 'REMOTE_MANAGEMENT_DISABLE=1' --env 'SCALITY_ACCESS_KEY_ID=accessKey1' --env 'SCALITY_SECRET_ACCESS_KEY=secretKey1' --name=s3 zenko/cloudserver:8.2.6
</pre></div></div>
<p>Once everything is set up, you just have to run the jar with:</p>
<div class="source">
<div class="source">
<pre>$ java -Dworking.directory=. -jar target/james-server-distributed-app.jar
</pre></div></div>
<section>
<h4><a name="Using_AWS_S3_of_Zenko_Cloudserver"></a>Using AWS S3 of Zenko Cloudserver</h4>
<p>By default, James is configured with <a class="externalLink" href="https://hub.docker.com/r/zenko/cloudserver">Zenko Cloudserver</a> which is compatible with AWS S3, in blobstore.propeties as such:</p>
<div class="source">
<div class="source">
<pre>implementation=s3
objectstorage.namespace=james
objectstorage.s3.endPoint=http://s3.docker.test:8000/
objectstorage.s3.region=eu-west-1
objectstorage.s3.accessKeyId=accessKey1
objectstorage.s3.secretKey=secretKey1
</pre></div></div></section></section></section>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2006-2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>