Move all the files into purpose-defined subdirectories
parent
7b4e49c238
commit
c5ff481255
|
|
@ -239,7 +239,7 @@ Example docker-compose file for our third node:
|
|||
|
||||
```
|
||||
db3:
|
||||
image: library/postgres:9.6.17-alpine
|
||||
image: library/postgres:9.6.24-alpine
|
||||
environment:
|
||||
- "POSTGRES_DB=openfire"
|
||||
- "POSTGRES_USER=openfire"
|
||||
|
|
@ -296,7 +296,7 @@ configuration data:
|
|||
...
|
||||
|
||||
db3:
|
||||
image: library/postgres:9.6.17-alpine
|
||||
image: library/postgres:9.6.24-alpine
|
||||
environment:
|
||||
- "POSTGRES_DB=openfire"
|
||||
- "POSTGRES_USER=openfire"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ services:
|
|||
- "POSTGRES_USER=openfire"
|
||||
- "POSTGRES_PASSWORD=hunter2"
|
||||
volumes:
|
||||
- ./sql/clustered:/docker-entrypoint-initdb.d
|
||||
- ./sql:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.11
|
||||
|
|
@ -23,7 +23,7 @@ services:
|
|||
- "57070:57070"
|
||||
- "57443:57443"
|
||||
volumes:
|
||||
- ./nginx/clustered/nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.99
|
||||
|
|
@ -39,9 +39,9 @@ services:
|
|||
depends_on:
|
||||
- "db"
|
||||
volumes:
|
||||
- ./_data/xmpp/clustered/1/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_clustered:/opt/plugins
|
||||
- ./wait-for-it.sh:/wait-for-it.sh
|
||||
- ./_data/xmpp/1/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
|
|
@ -65,9 +65,9 @@ services:
|
|||
depends_on:
|
||||
- "db"
|
||||
volumes:
|
||||
- ./_data/xmpp/clustered/2/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_clustered:/opt/plugins
|
||||
- ./wait-for-it.sh:/wait-for-it.sh
|
||||
- ./_data/xmpp/2/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
|
|
@ -91,9 +91,9 @@ services:
|
|||
depends_on:
|
||||
- "db"
|
||||
volumes:
|
||||
- ./_data/xmpp/clustered/3/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_clustered:/opt/plugins
|
||||
- ./wait-for-it.sh:/wait-for-it.sh
|
||||
- ./_data/xmpp/3/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
|
|
@ -106,6 +106,13 @@ services:
|
|||
- "xmpp3.localhost.example:172.60.0.30"
|
||||
- "conference.xmpp3.localhost.example:172.60.0.30"
|
||||
|
||||
dozzle:
|
||||
image: amir20/dozzle:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- 9999:8080
|
||||
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
driver: bridge
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
|
||||
usage() { echo "Usage: $0 [-n openfire-tag] [-h]
|
||||
-n openfire-tag Launches all Openfire instances with the specified tag. This overrides the value in .env
|
||||
-h Show this helpful information
|
||||
"; exit 0; }
|
||||
|
||||
PROJECT="openfire"
|
||||
COMPOSE_FILE_COMMAND=("docker-compose")
|
||||
COMPOSE_FILE_COMMAND+=("--env-file" "../_common/.env")
|
||||
COMPOSE_FILE_COMMAND+=("--project-name" "$PROJECT")
|
||||
|
||||
while getopts n:h o; do
|
||||
case "$o" in
|
||||
n)
|
||||
if [[ $OPTARG =~ " " ]]; then
|
||||
echo "Docker tags cannot contain spaces"
|
||||
exit 1
|
||||
fi
|
||||
echo "Using Openfire tag: $OPTARG"
|
||||
export OPENFIRE_TAG="$OPTARG"
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Starting a clustered environment."
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-clustered.yml")
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" down
|
||||
"${COMPOSE_FILE_COMMAND[@]}" pull
|
||||
|
||||
# Clean up temporary persistence data
|
||||
rm -rf _data
|
||||
mkdir _data
|
||||
cp -r xmpp _data/
|
||||
cp -r plugins _data/
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" up -d
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
|
||||
db:
|
||||
image: library/postgres:9.6.24-alpine
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
- "POSTGRES_DB=openfire"
|
||||
- "POSTGRES_USER=openfire"
|
||||
- "POSTGRES_PASSWORD=hunter2"
|
||||
volumes:
|
||||
- ./sql/clustered:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.11
|
||||
|
||||
lb:
|
||||
image: nginx:stable
|
||||
ports:
|
||||
- "55222:55222"
|
||||
- "57070:57070"
|
||||
- "57443:57443"
|
||||
volumes:
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.99
|
||||
|
||||
xmpp1:
|
||||
image: "openfire:${OPENFIRE_TAG}"
|
||||
ports:
|
||||
- "5221:5222"
|
||||
- "5261:5269"
|
||||
- "7071:7070"
|
||||
- "7441:7443"
|
||||
- "9091:9090"
|
||||
depends_on:
|
||||
- "db"
|
||||
volumes:
|
||||
- ./_data/xmpp/1/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.10
|
||||
extra_hosts:
|
||||
- "xmpp1.localhost.example:172.60.0.10"
|
||||
- "conference.xmpp1.localhost.example:172.60.0.10"
|
||||
- "xmpp2.localhost.example:172.60.0.20"
|
||||
- "conference.xmpp2.localhost.example:172.60.0.20"
|
||||
- "xmpp3.localhost.example:172.60.0.30"
|
||||
- "conference.xmpp3.localhost.example:172.60.0.30"
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
xmpp2:
|
||||
image: "openfire:${OPENFIRE_TAG}"
|
||||
ports:
|
||||
- "5222:5222"
|
||||
- "5262:5269"
|
||||
- "7072:7070"
|
||||
- "7442:7443"
|
||||
- "9092:9090"
|
||||
depends_on:
|
||||
- "db"
|
||||
volumes:
|
||||
- ./_data/xmpp/2/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.20
|
||||
extra_hosts:
|
||||
- "xmpp1.localhost.example:172.60.0.10"
|
||||
- "conference.xmpp1.localhost.example:172.60.0.10"
|
||||
- "xmpp2.localhost.example:172.60.0.20"
|
||||
- "conference.xmpp2.localhost.example:172.60.0.20"
|
||||
- "xmpp3.localhost.example:172.60.0.30"
|
||||
- "conference.xmpp3.localhost.example:172.60.0.30"
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
xmpp3:
|
||||
image: "openfire:${OPENFIRE_TAG}"
|
||||
ports:
|
||||
- "5223:5222"
|
||||
- "5263:5269"
|
||||
- "7073:7070"
|
||||
- "7443:7443"
|
||||
- "9093:9090"
|
||||
depends_on:
|
||||
- "db"
|
||||
volumes:
|
||||
- ./_data/xmpp/3/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.30
|
||||
extra_hosts:
|
||||
- "xmpp1.localhost.example:172.60.0.10"
|
||||
- "conference.xmpp1.localhost.example:172.60.0.10"
|
||||
- "xmpp2.localhost.example:172.60.0.20"
|
||||
- "conference.xmpp2.localhost.example:172.60.0.20"
|
||||
- "xmpp3.localhost.example:172.60.0.30"
|
||||
- "conference.xmpp3.localhost.example:172.60.0.30"
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
otherdb:
|
||||
image: library/postgres:9.6.24-alpine
|
||||
ports:
|
||||
- "5433:5432"
|
||||
environment:
|
||||
- "POSTGRES_DB=openfire"
|
||||
- "POSTGRES_USER=openfire"
|
||||
- "POSTGRES_PASSWORD=hunter2"
|
||||
volumes:
|
||||
- ./sql/otherdomain:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.111
|
||||
|
||||
otherxmpp:
|
||||
image: "openfire:${OPENFIRE_TAG}"
|
||||
ports:
|
||||
- "5229:5222"
|
||||
- "5269:5269"
|
||||
- "7079:7070"
|
||||
- "7449:7443"
|
||||
- "9099:9090"
|
||||
depends_on:
|
||||
- "otherdb"
|
||||
volumes:
|
||||
- ./_data/xmpp/otherdomain/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_otherdomain:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "otherdb:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.110
|
||||
extra_hosts:
|
||||
- "xmpp.localhost.example:172.60.0.99"
|
||||
- "conference.xmpp.localhost.example:172.60.0.99"
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
dozzle:
|
||||
image: amir20/dozzle:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- 9999:8080
|
||||
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
driver: bridge
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: 172.60.0.0/24
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
# error_log stdout debug;
|
||||
|
||||
stream {
|
||||
upstream xmpp {
|
||||
server 172.60.0.10:5222;
|
||||
server 172.60.0.20:5222;
|
||||
server 172.60.0.30:5222;
|
||||
}
|
||||
server {
|
||||
listen 55222;
|
||||
tcp_nodelay on;
|
||||
proxy_connect_timeout 10s;
|
||||
proxy_timeout 12h; # Set this lower to be more flappy
|
||||
proxy_pass xmpp;
|
||||
}
|
||||
|
||||
upstream bosh {
|
||||
server 172.60.0.10:7070;
|
||||
server 172.60.0.20:7070;
|
||||
server 172.60.0.30:7070;
|
||||
}
|
||||
server {
|
||||
listen 57070;
|
||||
tcp_nodelay on;
|
||||
proxy_connect_timeout 10s;
|
||||
proxy_timeout 12h; # Set this lower to be more flappy
|
||||
proxy_pass bosh;
|
||||
}
|
||||
|
||||
upstream boshs {
|
||||
server 172.60.0.10:7443;
|
||||
server 172.60.0.20:7443;
|
||||
server 172.60.0.30:7443;
|
||||
}
|
||||
server {
|
||||
listen 57443;
|
||||
tcp_nodelay on;
|
||||
proxy_connect_timeout 10s;
|
||||
proxy_timeout 30s;
|
||||
proxy_pass boshs;
|
||||
}
|
||||
|
||||
upstream s2s {
|
||||
server 172.60.0.10:5269;
|
||||
server 172.60.0.20:5269;
|
||||
server 172.60.0.30:5269;
|
||||
}
|
||||
server {
|
||||
listen 5269;
|
||||
tcp_nodelay on;
|
||||
proxy_connect_timeout 10s;
|
||||
proxy_timeout 1m;
|
||||
proxy_pass s2s;
|
||||
}
|
||||
|
||||
upstream s2slegacy {
|
||||
server 172.60.0.10:5270;
|
||||
server 172.60.0.20:5270;
|
||||
server 172.60.0.30:5270;
|
||||
}
|
||||
server {
|
||||
listen 5270;
|
||||
tcp_nodelay on;
|
||||
proxy_connect_timeout 10s;
|
||||
proxy_timeout 1m;
|
||||
proxy_pass s2slegacy;
|
||||
}
|
||||
}
|
||||
|
||||
events {}
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
|
||||
usage() { echo "Usage: $0 [-n openfire-tag] [-h]
|
||||
-n openfire-tag Launches all Openfire instances with the specified tag. This overrides the value in .env
|
||||
-h Show this helpful information
|
||||
"; exit 0; }
|
||||
|
||||
PROJECT="openfire"
|
||||
COMPOSE_FILE_COMMAND=("docker-compose")
|
||||
COMPOSE_FILE_COMMAND+=("--env-file" "../_common/.env")
|
||||
COMPOSE_FILE_COMMAND+=("--project-name" "$PROJECT")
|
||||
|
||||
while getopts n:h o; do
|
||||
case "$o" in
|
||||
n)
|
||||
if [[ $OPTARG =~ " " ]]; then
|
||||
echo "Docker tags cannot contain spaces"
|
||||
exit 1
|
||||
fi
|
||||
echo "Using Openfire tag: $OPTARG"
|
||||
export OPENFIRE_TAG="$OPTARG"
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Starting a clustered environment."
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-clustered.yml")
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" down
|
||||
"${COMPOSE_FILE_COMMAND[@]}" pull
|
||||
|
||||
# Clean up temporary persistence data
|
||||
rm -rf _data
|
||||
mkdir _data
|
||||
cp -r xmpp _data/
|
||||
cp -r plugins _data/
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" up -d
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast xmlns="http://www.hazelcast.com/schema/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.hazelcast.com/schema/config
|
||||
http://www.hazelcast.com/schema/config/hazelcast-config-3.12.xsd">
|
||||
<group>
|
||||
<name>openfire</name>
|
||||
<password>openfire</password>
|
||||
</group>
|
||||
<network>
|
||||
<port auto-increment="true" port-count="100">5701</port>
|
||||
<outbound-ports>
|
||||
<ports>0</ports>
|
||||
</outbound-ports>
|
||||
<!-- The following enables multicast discovery of cluster members
|
||||
See http://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#discovering-members-by-multicast
|
||||
-->
|
||||
<join>
|
||||
<multicast enabled="true">
|
||||
<multicast-group>224.2.2.3</multicast-group>
|
||||
<multicast-port>54327</multicast-port>
|
||||
</multicast>
|
||||
<tcp-ip enabled="false"/>
|
||||
</join>
|
||||
<!-- The following enables TCP/IP based discovery of cluster members
|
||||
See http://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#discovering-members-by-tcp
|
||||
-->
|
||||
<!--
|
||||
<join>
|
||||
<multicast enabled="false"/>
|
||||
<tcp-ip enabled="true">
|
||||
<member>10.10.1.1:5701</member>
|
||||
<member>10.10.1.2:5701</member>
|
||||
</tcp-ip>
|
||||
</join>
|
||||
-->
|
||||
<interfaces enabled="false">
|
||||
<interface>10.10.1.*</interface>
|
||||
</interfaces>
|
||||
<ssl enabled="false"/>
|
||||
<socket-interceptor enabled="false"/>
|
||||
<symmetric-encryption enabled="false">
|
||||
<!--
|
||||
encryption algorithm such as
|
||||
DES/ECB/PKCS5Padding,
|
||||
PBEWithMD5AndDES,
|
||||
AES/CBC/PKCS5Padding,
|
||||
Blowfish,
|
||||
DESede
|
||||
-->
|
||||
<algorithm>PBEWithMD5AndDES</algorithm>
|
||||
<!-- salt value to use when generating the secret key -->
|
||||
<salt>thesalt</salt>
|
||||
<!-- pass phrase to use when generating the secret key -->
|
||||
<password>thepass</password>
|
||||
<!-- iteration count to use when generating the secret key -->
|
||||
<iteration-count>19</iteration-count>
|
||||
</symmetric-encryption>
|
||||
</network>
|
||||
</hazelcast>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This file stores bootstrap properties needed by Openfire.
|
||||
Property names must be in the format: "prop.name.is.blah=value"
|
||||
That will be stored as:
|
||||
<prop>
|
||||
<name>
|
||||
<is>
|
||||
<blah>value</blah>
|
||||
</is>
|
||||
</name>
|
||||
</prop>
|
||||
|
||||
Most properties are stored in the Openfire database. A
|
||||
property viewer and editor is included in the admin console.
|
||||
-->
|
||||
<!-- root element, all properties must be under this element -->
|
||||
<jive>
|
||||
<adminConsole>
|
||||
<!-- Disable either port by setting the value to -1 -->
|
||||
<port>9090</port>
|
||||
<securePort>9091</securePort>
|
||||
</adminConsole>
|
||||
<locale>en</locale>
|
||||
<!-- Network settings. By default, Openfire will bind to all network interfaces.
|
||||
Alternatively, you can specify a specific network interfaces that the server
|
||||
will listen on. For example, 127.0.0.1. This setting is generally only useful
|
||||
on multi-homed servers. -->
|
||||
<!--
|
||||
<network>
|
||||
<interface></interface>
|
||||
</network>
|
||||
-->
|
||||
<!--
|
||||
One time token to gain temporary access to the admin console.
|
||||
-->
|
||||
<!--
|
||||
<oneTimeAccessToken>secretToken</oneTimeAccessToken>
|
||||
-->
|
||||
<connectionProvider>
|
||||
<className>org.jivesoftware.database.DefaultConnectionProvider</className>
|
||||
</connectionProvider>
|
||||
<database>
|
||||
<defaultProvider>
|
||||
<driver>org.postgresql.Driver</driver>
|
||||
<serverURL>jdbc:postgresql://db:5432/openfire</serverURL>
|
||||
<username encrypted="true">10d847caed2654fbb1fe6cefac0f381893323ae6b5eea27d31503d5880091fca</username>
|
||||
<password encrypted="true">30c1893796e0110fc4607c8b1bca0d0e54f10b270c4615d3</password>
|
||||
<testSQL>select 1</testSQL>
|
||||
<testBeforeUse>false</testBeforeUse>
|
||||
<testAfterUse>false</testAfterUse>
|
||||
<testTimeout>500</testTimeout>
|
||||
<timeBetweenEvictionRuns>30000</timeBetweenEvictionRuns>
|
||||
<minIdleTime>900000</minIdleTime>
|
||||
<maxWaitTime>500</maxWaitTime>
|
||||
<minConnections>5</minConnections>
|
||||
<maxConnections>25</maxConnections>
|
||||
<connectionTimeout>1.0</connectionTimeout>
|
||||
</defaultProvider>
|
||||
</database>
|
||||
<setup>true</setup>
|
||||
<fqdn>xmpp1.localhost.example</fqdn>
|
||||
<clustering>
|
||||
<enabled>true</enabled>
|
||||
</clustering>
|
||||
</jive>
|
||||
Binary file not shown.
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast xmlns="http://www.hazelcast.com/schema/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.hazelcast.com/schema/config
|
||||
http://www.hazelcast.com/schema/config/hazelcast-config-3.12.xsd">
|
||||
<group>
|
||||
<name>openfire</name>
|
||||
<password>openfire</password>
|
||||
</group>
|
||||
<network>
|
||||
<port auto-increment="true" port-count="100">5701</port>
|
||||
<outbound-ports>
|
||||
<ports>0</ports>
|
||||
</outbound-ports>
|
||||
<!-- The following enables multicast discovery of cluster members
|
||||
See http://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#discovering-members-by-multicast
|
||||
-->
|
||||
<join>
|
||||
<multicast enabled="true">
|
||||
<multicast-group>224.2.2.3</multicast-group>
|
||||
<multicast-port>54327</multicast-port>
|
||||
</multicast>
|
||||
<tcp-ip enabled="false"/>
|
||||
</join>
|
||||
<!-- The following enables TCP/IP based discovery of cluster members
|
||||
See http://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#discovering-members-by-tcp
|
||||
-->
|
||||
<!--
|
||||
<join>
|
||||
<multicast enabled="false"/>
|
||||
<tcp-ip enabled="true">
|
||||
<member>10.10.1.1:5701</member>
|
||||
<member>10.10.1.2:5701</member>
|
||||
</tcp-ip>
|
||||
</join>
|
||||
-->
|
||||
<interfaces enabled="false">
|
||||
<interface>10.10.1.*</interface>
|
||||
</interfaces>
|
||||
<ssl enabled="false"/>
|
||||
<socket-interceptor enabled="false"/>
|
||||
<symmetric-encryption enabled="false">
|
||||
<!--
|
||||
encryption algorithm such as
|
||||
DES/ECB/PKCS5Padding,
|
||||
PBEWithMD5AndDES,
|
||||
AES/CBC/PKCS5Padding,
|
||||
Blowfish,
|
||||
DESede
|
||||
-->
|
||||
<algorithm>PBEWithMD5AndDES</algorithm>
|
||||
<!-- salt value to use when generating the secret key -->
|
||||
<salt>thesalt</salt>
|
||||
<!-- pass phrase to use when generating the secret key -->
|
||||
<password>thepass</password>
|
||||
<!-- iteration count to use when generating the secret key -->
|
||||
<iteration-count>19</iteration-count>
|
||||
</symmetric-encryption>
|
||||
</network>
|
||||
</hazelcast>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This file stores bootstrap properties needed by Openfire.
|
||||
Property names must be in the format: "prop.name.is.blah=value"
|
||||
That will be stored as:
|
||||
<prop>
|
||||
<name>
|
||||
<is>
|
||||
<blah>value</blah>
|
||||
</is>
|
||||
</name>
|
||||
</prop>
|
||||
|
||||
Most properties are stored in the Openfire database. A
|
||||
property viewer and editor is included in the admin console.
|
||||
-->
|
||||
<!-- root element, all properties must be under this element -->
|
||||
<jive>
|
||||
<adminConsole>
|
||||
<!-- Disable either port by setting the value to -1 -->
|
||||
<port>9090</port>
|
||||
<securePort>9091</securePort>
|
||||
</adminConsole>
|
||||
<locale>en</locale>
|
||||
<!-- Network settings. By default, Openfire will bind to all network interfaces.
|
||||
Alternatively, you can specify a specific network interfaces that the server
|
||||
will listen on. For example, 127.0.0.1. This setting is generally only useful
|
||||
on multi-homed servers. -->
|
||||
<!--
|
||||
<network>
|
||||
<interface></interface>
|
||||
</network>
|
||||
-->
|
||||
<!--
|
||||
One time token to gain temporary access to the admin console.
|
||||
-->
|
||||
<!--
|
||||
<oneTimeAccessToken>secretToken</oneTimeAccessToken>
|
||||
-->
|
||||
<connectionProvider>
|
||||
<className>org.jivesoftware.database.DefaultConnectionProvider</className>
|
||||
</connectionProvider>
|
||||
<database>
|
||||
<defaultProvider>
|
||||
<driver>org.postgresql.Driver</driver>
|
||||
<serverURL>jdbc:postgresql://db:5432/openfire</serverURL>
|
||||
<username encrypted="true">10d847caed2654fbb1fe6cefac0f381893323ae6b5eea27d31503d5880091fca</username>
|
||||
<password encrypted="true">30c1893796e0110fc4607c8b1bca0d0e54f10b270c4615d3</password>
|
||||
<testSQL>select 1</testSQL>
|
||||
<testBeforeUse>false</testBeforeUse>
|
||||
<testAfterUse>false</testAfterUse>
|
||||
<testTimeout>500</testTimeout>
|
||||
<timeBetweenEvictionRuns>30000</timeBetweenEvictionRuns>
|
||||
<minIdleTime>900000</minIdleTime>
|
||||
<maxWaitTime>500</maxWaitTime>
|
||||
<minConnections>5</minConnections>
|
||||
<maxConnections>25</maxConnections>
|
||||
<connectionTimeout>1.0</connectionTimeout>
|
||||
</defaultProvider>
|
||||
</database>
|
||||
<setup>true</setup>
|
||||
<fqdn>xmpp2.localhost.example</fqdn>
|
||||
<clustering>
|
||||
<enabled>true</enabled>
|
||||
</clustering>
|
||||
</jive>
|
||||
Binary file not shown.
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast xmlns="http://www.hazelcast.com/schema/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.hazelcast.com/schema/config
|
||||
http://www.hazelcast.com/schema/config/hazelcast-config-3.12.xsd">
|
||||
<group>
|
||||
<name>openfire</name>
|
||||
<password>openfire</password>
|
||||
</group>
|
||||
<network>
|
||||
<port auto-increment="true" port-count="100">5701</port>
|
||||
<outbound-ports>
|
||||
<ports>0</ports>
|
||||
</outbound-ports>
|
||||
<!-- The following enables multicast discovery of cluster members
|
||||
See http://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#discovering-members-by-multicast
|
||||
-->
|
||||
<join>
|
||||
<multicast enabled="true">
|
||||
<multicast-group>224.2.2.3</multicast-group>
|
||||
<multicast-port>54327</multicast-port>
|
||||
</multicast>
|
||||
<tcp-ip enabled="false"/>
|
||||
</join>
|
||||
<!-- The following enables TCP/IP based discovery of cluster members
|
||||
See http://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#discovering-members-by-tcp
|
||||
-->
|
||||
<!--
|
||||
<join>
|
||||
<multicast enabled="false"/>
|
||||
<tcp-ip enabled="true">
|
||||
<member>10.10.1.1:5701</member>
|
||||
<member>10.10.1.2:5701</member>
|
||||
</tcp-ip>
|
||||
</join>
|
||||
-->
|
||||
<interfaces enabled="false">
|
||||
<interface>10.10.1.*</interface>
|
||||
</interfaces>
|
||||
<ssl enabled="false"/>
|
||||
<socket-interceptor enabled="false"/>
|
||||
<symmetric-encryption enabled="false">
|
||||
<!--
|
||||
encryption algorithm such as
|
||||
DES/ECB/PKCS5Padding,
|
||||
PBEWithMD5AndDES,
|
||||
AES/CBC/PKCS5Padding,
|
||||
Blowfish,
|
||||
DESede
|
||||
-->
|
||||
<algorithm>PBEWithMD5AndDES</algorithm>
|
||||
<!-- salt value to use when generating the secret key -->
|
||||
<salt>thesalt</salt>
|
||||
<!-- pass phrase to use when generating the secret key -->
|
||||
<password>thepass</password>
|
||||
<!-- iteration count to use when generating the secret key -->
|
||||
<iteration-count>19</iteration-count>
|
||||
</symmetric-encryption>
|
||||
</network>
|
||||
</hazelcast>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This file stores bootstrap properties needed by Openfire.
|
||||
Property names must be in the format: "prop.name.is.blah=value"
|
||||
That will be stored as:
|
||||
<prop>
|
||||
<name>
|
||||
<is>
|
||||
<blah>value</blah>
|
||||
</is>
|
||||
</name>
|
||||
</prop>
|
||||
|
||||
Most properties are stored in the Openfire database. A
|
||||
property viewer and editor is included in the admin console.
|
||||
-->
|
||||
<!-- root element, all properties must be under this element -->
|
||||
<jive>
|
||||
<adminConsole>
|
||||
<!-- Disable either port by setting the value to -1 -->
|
||||
<port>9090</port>
|
||||
<securePort>9091</securePort>
|
||||
</adminConsole>
|
||||
<locale>en</locale>
|
||||
<!-- Network settings. By default, Openfire will bind to all network interfaces.
|
||||
Alternatively, you can specify a specific network interfaces that the server
|
||||
will listen on. For example, 127.0.0.1. This setting is generally only useful
|
||||
on multi-homed servers. -->
|
||||
<!--
|
||||
<network>
|
||||
<interface></interface>
|
||||
</network>
|
||||
-->
|
||||
<!--
|
||||
One time token to gain temporary access to the admin console.
|
||||
-->
|
||||
<!--
|
||||
<oneTimeAccessToken>secretToken</oneTimeAccessToken>
|
||||
-->
|
||||
<connectionProvider>
|
||||
<className>org.jivesoftware.database.DefaultConnectionProvider</className>
|
||||
</connectionProvider>
|
||||
<database>
|
||||
<defaultProvider>
|
||||
<driver>org.postgresql.Driver</driver>
|
||||
<serverURL>jdbc:postgresql://db:5432/openfire</serverURL>
|
||||
<username encrypted="true">10d847caed2654fbb1fe6cefac0f381893323ae6b5eea27d31503d5880091fca</username>
|
||||
<password encrypted="true">30c1893796e0110fc4607c8b1bca0d0e54f10b270c4615d3</password>
|
||||
<testSQL>select 1</testSQL>
|
||||
<testBeforeUse>false</testBeforeUse>
|
||||
<testAfterUse>false</testAfterUse>
|
||||
<testTimeout>500</testTimeout>
|
||||
<timeBetweenEvictionRuns>30000</timeBetweenEvictionRuns>
|
||||
<minIdleTime>900000</minIdleTime>
|
||||
<maxWaitTime>500</maxWaitTime>
|
||||
<minConnections>5</minConnections>
|
||||
<maxConnections>25</maxConnections>
|
||||
<connectionTimeout>1.0</connectionTimeout>
|
||||
</defaultProvider>
|
||||
</database>
|
||||
<setup>true</setup>
|
||||
<fqdn>xmpp3.localhost.example</fqdn>
|
||||
<clustering>
|
||||
<enabled>true</enabled>
|
||||
</clustering>
|
||||
</jive>
|
||||
Binary file not shown.
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This file stores security-related properties needed by Openfire.
|
||||
You may edit this file to manage encrypted properties and
|
||||
encryption configuration value. Note however that you should not
|
||||
edit this file while Openfire is running, or it may be overwritten.
|
||||
|
||||
It is important to note that Openfire will store encrypted property
|
||||
values securely "at rest" (e.g. in the database or XML), but the
|
||||
values will be managed as clear text strings in memory at runtime for
|
||||
interoperability and performance reasons. Encrypted property values
|
||||
are not visible via the Openfire console, but they may be edited or
|
||||
deleted as needed.
|
||||
-->
|
||||
<security>
|
||||
<encrypt>
|
||||
<!-- This can be set to "AES" or "Blowfish" (default) at setup time -->
|
||||
<algorithm>Blowfish</algorithm>
|
||||
<key>
|
||||
<!--
|
||||
If this is a new server setup, you may set a custom encryption key
|
||||
by setting a value for the <new /> encryption key element only.
|
||||
|
||||
To change the encryption key, provide values for both new and old
|
||||
encryption keys here. The "old" key must match the unencrypted value
|
||||
of the "current" key. The server will update the existing property
|
||||
values in the database, re-encrypting them using the new key. After
|
||||
the encrypted properties have been updated, the new key will itself
|
||||
be encrypted and re-written into this file as <current />.
|
||||
|
||||
Note that if the current encryption key becomes invalid, any property
|
||||
values secured by the original key will be inaccessible as well.
|
||||
|
||||
The key value can be any string, and it will be hashed, filled, and/or
|
||||
truncated to produce a compatible key for the corresponding algorithm.
|
||||
Note that leading and trailing spaces will be ignored. A strong key
|
||||
will contain sixteen characters or more.
|
||||
|
||||
<old></old>
|
||||
<new></new>
|
||||
-->
|
||||
<current></current>
|
||||
</key>
|
||||
<property>
|
||||
<!--
|
||||
This list includes the names of properties that have been marked for
|
||||
encryption. Any XML properties (from openfire.xml) that are listed here
|
||||
will be encrypted automatically upon first use. Other properties
|
||||
(already in the database) can be added to this list at runtime via the
|
||||
"System Properties" page in the Openfire console.
|
||||
-->
|
||||
<name>database.defaultProvider.username</name>
|
||||
<name>database.defaultProvider.password</name>
|
||||
</property>
|
||||
</encrypt>
|
||||
<!--
|
||||
Any other property defined in this file will be treated as an encrypted
|
||||
property. The value (in clear text) will be encrypted and migrated into
|
||||
the Openfire database during the next startup. The property name will
|
||||
be added to the list of encrypted properties and the clear text value
|
||||
will be removed from this file.
|
||||
|
||||
<foo><bar>Secr3t$tr1ng!</bar></foo>
|
||||
-->
|
||||
</security>
|
||||
|
|
@ -0,0 +1 @@
|
|||
This directory is used as a default location in which Openfire stores backups of keystore files.
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,11 +0,0 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
|
||||
dozzle:
|
||||
container_name: dozzle
|
||||
image: amir20/dozzle:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- 9999:8080
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
|
||||
otherdb:
|
||||
image: library/postgres:9.6.17-alpine
|
||||
ports:
|
||||
- "5433:5432"
|
||||
environment:
|
||||
- "POSTGRES_DB=openfire"
|
||||
- "POSTGRES_USER=openfire"
|
||||
- "POSTGRES_PASSWORD=hunter2"
|
||||
volumes:
|
||||
- ./sql/otherdomain:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.111
|
||||
|
||||
otherxmpp:
|
||||
image: "openfire:${OPENFIRE_TAG}"
|
||||
ports:
|
||||
- "5229:5222"
|
||||
- "5269:5269"
|
||||
- "7079:7070"
|
||||
- "7449:7443"
|
||||
- "9099:9090"
|
||||
depends_on:
|
||||
- "otherdb"
|
||||
volumes:
|
||||
- ./_data/xmpp/otherdomain/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_other:/opt/plugins
|
||||
- ./wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "otherdb:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-clustered-net:
|
||||
ipv4_address: 172.60.0.110
|
||||
extra_hosts:
|
||||
- "xmpp.localhost.example:172.60.0.99"
|
||||
- "conference.xmpp.localhost.example:172.60.0.99"
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
xmpp1:
|
||||
extra_hosts:
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
xmpp2:
|
||||
extra_hosts:
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
||||
xmpp3:
|
||||
extra_hosts:
|
||||
- "otherxmpp.localhost.example:172.60.0.110"
|
||||
- "conference.otherxmpp.localhost.example:172.60.0.110"
|
||||
|
|
@ -11,7 +11,7 @@ services:
|
|||
- "POSTGRES_USER=openfire"
|
||||
- "POSTGRES_PASSWORD=hunter2"
|
||||
volumes:
|
||||
- ./sql/federated/1:/docker-entrypoint-initdb.d
|
||||
- ./sql/1:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
openfire-federated-net:
|
||||
ipv4_address: 172.50.0.11
|
||||
|
|
@ -25,7 +25,7 @@ services:
|
|||
- "POSTGRES_USER=openfire"
|
||||
- "POSTGRES_PASSWORD=hunter2"
|
||||
volumes:
|
||||
- ./sql/federated/2:/docker-entrypoint-initdb.d
|
||||
- ./sql/2:/docker-entrypoint-initdb.d
|
||||
networks:
|
||||
openfire-federated-net:
|
||||
ipv4_address: 172.50.0.21
|
||||
|
|
@ -41,9 +41,9 @@ services:
|
|||
depends_on:
|
||||
- "db1"
|
||||
volumes:
|
||||
- ./_data/xmpp/federated/1/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_federated:/opt/plugins
|
||||
- ./wait-for-it.sh:/wait-for-it.sh
|
||||
- ./_data/xmpp/1/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db1:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-federated-net:
|
||||
|
|
@ -65,9 +65,9 @@ services:
|
|||
depends_on:
|
||||
- "db2"
|
||||
volumes:
|
||||
- ./_data/xmpp/federated/2/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins_for_federated:/opt/plugins
|
||||
- ./wait-for-it.sh:/wait-for-it.sh
|
||||
- ./_data/xmpp/2/conf:/var/lib/openfire/conf
|
||||
- ./_data/plugins:/opt/plugins
|
||||
- ../_common/wait-for-it.sh:/wait-for-it.sh
|
||||
command: ["/wait-for-it.sh", "-s", "db2:5432", "--", "/sbin/entrypoint.sh"]
|
||||
networks:
|
||||
openfire-federated-net:
|
||||
|
|
@ -77,6 +77,13 @@ services:
|
|||
- "conference.xmpp1.localhost.example:172.50.0.10"
|
||||
- "xmpp2.localhost.example:172.50.0.20"
|
||||
- "conference.xmpp2.localhost.example:172.50.0.20"
|
||||
|
||||
dozzle:
|
||||
image: amir20/dozzle:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- 9999:8080
|
||||
|
||||
networks:
|
||||
openfire-federated-net:
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
|
||||
usage() { echo "Usage: $0 [-n openfire-tag] [-h]
|
||||
-n openfire-tag Launches all Openfire instances with the specified tag. This overrides the value in .env
|
||||
-h Show this helpful information
|
||||
"; exit 0; }
|
||||
|
||||
PROJECT="openfire"
|
||||
COMPOSE_FILE_COMMAND=("docker-compose")
|
||||
COMPOSE_FILE_COMMAND+=("--env-file" "../_common/.env")
|
||||
COMPOSE_FILE_COMMAND+=("--project-name" "$PROJECT")
|
||||
|
||||
while getopts n:h o; do
|
||||
case "$o" in
|
||||
n)
|
||||
if [[ $OPTARG =~ " " ]]; then
|
||||
echo "Docker tags cannot contain spaces"
|
||||
exit 1
|
||||
fi
|
||||
echo "Using Openfire tag: $OPTARG"
|
||||
export OPENFIRE_TAG="$OPTARG"
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Starting a federated environment."
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-federated.yml")
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" down
|
||||
"${COMPOSE_FILE_COMMAND[@]}" pull
|
||||
|
||||
# Clean up temporary persistence data
|
||||
rm -rf _data
|
||||
mkdir _data
|
||||
cp -r xmpp _data/
|
||||
cp -r plugins _data/
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" up -d
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This file stores security-related properties needed by Openfire.
|
||||
You may edit this file to manage encrypted properties and
|
||||
encryption configuration value. Note however that you should not
|
||||
edit this file while Openfire is running, or it may be overwritten.
|
||||
|
||||
It is important to note that Openfire will store encrypted property
|
||||
values securely "at rest" (e.g. in the database or XML), but the
|
||||
values will be managed as clear text strings in memory at runtime for
|
||||
interoperability and performance reasons. Encrypted property values
|
||||
are not visible via the Openfire console, but they may be edited or
|
||||
deleted as needed.
|
||||
-->
|
||||
<security>
|
||||
<encrypt>
|
||||
<!-- This can be set to "AES" or "Blowfish" (default) at setup time -->
|
||||
<algorithm>Blowfish</algorithm>
|
||||
<key>
|
||||
<!--
|
||||
If this is a new server setup, you may set a custom encryption key
|
||||
by setting a value for the <new /> encryption key element only.
|
||||
|
||||
To change the encryption key, provide values for both new and old
|
||||
encryption keys here. The "old" key must match the unencrypted value
|
||||
of the "current" key. The server will update the existing property
|
||||
values in the database, re-encrypting them using the new key. After
|
||||
the encrypted properties have been updated, the new key will itself
|
||||
be encrypted and re-written into this file as <current />.
|
||||
|
||||
Note that if the current encryption key becomes invalid, any property
|
||||
values secured by the original key will be inaccessible as well.
|
||||
|
||||
The key value can be any string, and it will be hashed, filled, and/or
|
||||
truncated to produce a compatible key for the corresponding algorithm.
|
||||
Note that leading and trailing spaces will be ignored. A strong key
|
||||
will contain sixteen characters or more.
|
||||
|
||||
<old></old>
|
||||
<new></new>
|
||||
-->
|
||||
<current></current>
|
||||
</key>
|
||||
<property>
|
||||
<!--
|
||||
This list includes the names of properties that have been marked for
|
||||
encryption. Any XML properties (from openfire.xml) that are listed here
|
||||
will be encrypted automatically upon first use. Other properties
|
||||
(already in the database) can be added to this list at runtime via the
|
||||
"System Properties" page in the Openfire console.
|
||||
-->
|
||||
<name>database.defaultProvider.username</name>
|
||||
<name>database.defaultProvider.password</name>
|
||||
</property>
|
||||
</encrypt>
|
||||
<!--
|
||||
Any other property defined in this file will be treated as an encrypted
|
||||
property. The value (in clear text) will be encrypted and migrated into
|
||||
the Openfire database during the next startup. The property name will
|
||||
be added to the list of encrypted properties and the clear text value
|
||||
will be removed from this file.
|
||||
|
||||
<foo><bar>Secr3t$tr1ng!</bar></foo>
|
||||
-->
|
||||
</security>
|
||||
|
|
@ -0,0 +1 @@
|
|||
This directory is used as a default location in which Openfire stores backups of keystore files.
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
This file stores security-related properties needed by Openfire.
|
||||
You may edit this file to manage encrypted properties and
|
||||
encryption configuration value. Note however that you should not
|
||||
edit this file while Openfire is running, or it may be overwritten.
|
||||
|
||||
It is important to note that Openfire will store encrypted property
|
||||
values securely "at rest" (e.g. in the database or XML), but the
|
||||
values will be managed as clear text strings in memory at runtime for
|
||||
interoperability and performance reasons. Encrypted property values
|
||||
are not visible via the Openfire console, but they may be edited or
|
||||
deleted as needed.
|
||||
-->
|
||||
<security>
|
||||
<encrypt>
|
||||
<!-- This can be set to "AES" or "Blowfish" (default) at setup time -->
|
||||
<algorithm>Blowfish</algorithm>
|
||||
<key>
|
||||
<!--
|
||||
If this is a new server setup, you may set a custom encryption key
|
||||
by setting a value for the <new /> encryption key element only.
|
||||
|
||||
To change the encryption key, provide values for both new and old
|
||||
encryption keys here. The "old" key must match the unencrypted value
|
||||
of the "current" key. The server will update the existing property
|
||||
values in the database, re-encrypting them using the new key. After
|
||||
the encrypted properties have been updated, the new key will itself
|
||||
be encrypted and re-written into this file as <current />.
|
||||
|
||||
Note that if the current encryption key becomes invalid, any property
|
||||
values secured by the original key will be inaccessible as well.
|
||||
|
||||
The key value can be any string, and it will be hashed, filled, and/or
|
||||
truncated to produce a compatible key for the corresponding algorithm.
|
||||
Note that leading and trailing spaces will be ignored. A strong key
|
||||
will contain sixteen characters or more.
|
||||
|
||||
<old></old>
|
||||
<new></new>
|
||||
-->
|
||||
<current></current>
|
||||
</key>
|
||||
<property>
|
||||
<!--
|
||||
This list includes the names of properties that have been marked for
|
||||
encryption. Any XML properties (from openfire.xml) that are listed here
|
||||
will be encrypted automatically upon first use. Other properties
|
||||
(already in the database) can be added to this list at runtime via the
|
||||
"System Properties" page in the Openfire console.
|
||||
-->
|
||||
<name>database.defaultProvider.username</name>
|
||||
<name>database.defaultProvider.password</name>
|
||||
</property>
|
||||
</encrypt>
|
||||
<!--
|
||||
Any other property defined in this file will be treated as an encrypted
|
||||
property. The value (in clear text) will be encrypted and migrated into
|
||||
the Openfire database during the next startup. The property name will
|
||||
be added to the list of encrypted properties and the clear text value
|
||||
will be removed from this file.
|
||||
|
||||
<foo><bar>Secr3t$tr1ng!</bar></foo>
|
||||
-->
|
||||
</security>
|
||||
|
|
@ -0,0 +1 @@
|
|||
This directory is used as a default location in which Openfire stores backups of keystore files.
|
||||
Binary file not shown.
Binary file not shown.
76
start.sh
76
start.sh
|
|
@ -1,76 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
usage() { echo "Usage: $0 [-c] [-o] [-l] [-n openfire-tag] [-h]
|
||||
|
||||
-c Launches a Cluster instead of a FMUC stack
|
||||
-o Launches another separate domain alongside the cluster
|
||||
-l Launches a Dozzle container to collect logs
|
||||
-n openfire-tag Launches all Openfire instances with the specified tag. This overrides the value in .env
|
||||
-h Show this helpful information
|
||||
"; exit 0; }
|
||||
|
||||
CLUSTER_MODE=false
|
||||
OTHER_DOMAIN=false
|
||||
DOZZLE=false
|
||||
COMPOSE_FILE_COMMAND=("docker-compose")
|
||||
|
||||
while getopts coln:h o; do
|
||||
case "$o" in
|
||||
c)
|
||||
CLUSTER_MODE=true
|
||||
;;
|
||||
o)
|
||||
OTHER_DOMAIN=true
|
||||
;;
|
||||
l)
|
||||
DOZZLE=true
|
||||
;;
|
||||
n)
|
||||
if [[ $OPTARG =~ " " ]]; then
|
||||
echo "Docker tags cannot contain spaces"
|
||||
exit 1
|
||||
fi
|
||||
echo "Using Openfire tag: $OPTARG"
|
||||
export OPENFIRE_TAG="$OPTARG"
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $OTHER_DOMAIN == "true" ]; then
|
||||
if [ $CLUSTER_MODE == "false" ]; then
|
||||
echo "Other domains are only supported alongside clusters"
|
||||
exit 1
|
||||
else
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-otherdomain.yml")
|
||||
fi
|
||||
fi
|
||||
|
||||
case $CLUSTER_MODE in
|
||||
(true) echo "Starting a clustered environment."
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-clustered.yml");;
|
||||
(false) echo "Starting a federated environment (use -c to start a clustered environment instead)."
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-federated.yml");;
|
||||
esac
|
||||
|
||||
if [ $DOZZLE == "true" ]; then
|
||||
COMPOSE_FILE_COMMAND+=("-f" "docker-compose-logging.yml")
|
||||
fi
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" down
|
||||
"${COMPOSE_FILE_COMMAND[@]}" pull
|
||||
|
||||
# Clean up temporary persistence data
|
||||
rm -rf _data
|
||||
mkdir _data
|
||||
cp -r xmpp _data/
|
||||
cp -r plugins_for_clustered _data/
|
||||
cp -r plugins_for_federated _data/
|
||||
cp -r plugins_for_other _data/
|
||||
|
||||
"${COMPOSE_FILE_COMMAND[@]}" up -d
|
||||
Loading…
Reference in New Issue