Skip to content

Commit 20ddf04

Browse files
authored
Merge pull request #19 from Cloud-RF/develop
Big RTFM warning, increase in PG connection limits, auto CA gen, auto…
2 parents db115ff + 5284eb4 commit 20ddf04

File tree

5 files changed

+71
-34
lines changed

5 files changed

+71
-34
lines changed

docker-compose.arm.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ services:
1313
aliases:
1414
- tak-database
1515
ports:
16-
- 5432:5432
16+
- 5432:5432
17+
restart: always
1718
tak:
1819
build:
1920
context: .
@@ -33,6 +34,7 @@ services:
3334
tak:
3435
depends_on:
3536
- db
37+
restart: always
3638
volumes:
3739
db_data:
3840
networks:

docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ services:
1414
- tak-database
1515
ports:
1616
- 5432:5432
17+
restart: always
1718
tak:
1819
build:
1920
context: .
@@ -33,6 +34,7 @@ services:
3334
tak:
3435
depends_on:
3536
- db
37+
restart: always
3638
volumes:
3739
db_data:
3840
networks:

docker/amd64/Dockerfile.takserver-db

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ FROM postgres:14.4
55
RUN apt-get update && apt install -y postgresql-14-postgis-3
66

77

8-
ENTRYPOINT ["/opt/tak/db-utils/configureInDocker.sh"]
8+
ENTRYPOINT ["/bin/bash", "-c", "/opt/tak/db-utils/configureInDocker.sh"]

postgresql1.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ listen_addresses = '*' # what IP address(es) to listen on;
6161
# defaults to 'localhost'; use '*' for all
6262
# (change requires restart)
6363
#port = 5432 # (change requires restart)
64-
max_connections = 100 # (change requires restart)
64+
max_connections = 500 # (change requires restart)
6565
#superuser_reserved_connections = 3 # (change requires restart)
6666
#unix_socket_directories = '/var/run/postgresql, /tmp' # comma-separated list of directories
6767
# (change requires restart)
@@ -110,7 +110,7 @@ tcpip_socket = true
110110

111111
# - Memory -
112112

113-
shared_buffers = 128MB # min 128kB
113+
shared_buffers = 256MB # min 128kB
114114
# (change requires restart)
115115
#huge_pages = try # on, off, or try
116116
# (change requires restart)

scripts/setup.sh

Lines changed: 63 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ then
1818
echo "Docker compose command set to new style $DOCKER_COMPOSE"
1919
fi
2020

21-
printf $success "\nTAK server setup script"
21+
22+
printf $success "\nTAK server setup script sponsored by CloudRF.com - \"The API for RF\"\n"
2223
printf $info "\nStep 1. Download the official docker image as a zip file from https://tak.gov/products/tak-server \nStep 2. Place the zip file in this tak-server folder.\n"
23-
printf $warning "\nElevated privileges are required to enumerate process names which may be holding open TCP ports.\nPlease enter your password when prompted.\n"
24+
printf $warning "\nYou should install this as a user. Elevated privileges (sudo) are only required to clean up a previous install eg. sudo ./scripts/cleanup.sh\n"
2425

2526
arch=$(dpkg --print-architecture)
2627

@@ -40,25 +41,11 @@ netstat_check () {
4041

4142
for i in ${ports[@]};
4243
do
43-
sudo netstat -plant | grep $i
44+
netstat -lant | grep $i
4445
if [ $? -eq 0 ];
4546
then
46-
proc=$(netstat -plant | grep $i | awk '{print $7}' | cut -d/ -f1,2)
47-
prockill=$(netstat -plant | grep $i | awk '{print $7}' | cut -d/ -f1)
48-
printf $info "\nThis process $proc is using port $i which is required for TAK server to operate. Do you want me to kill the process (y/n): "
49-
read choice
50-
if [ $choice == "y" ];
51-
then
52-
sudo kill -15 $prockill
53-
54-
elif [ $choice == "yes" ];
55-
then
56-
sudo kill -15 $prockill
57-
else
58-
printf $danger "Please repeat the process once the port $i is not in use. Exiting now..\n"
59-
sleep 1
60-
exit 0
61-
fi
47+
printf $warning "\nAnother process is still using port $i. Either wait or use 'sudo netstat -plant' to find it, then 'ps aux' to get the PID and 'kill PID' to stop it and try again\n"
48+
exit 0
6249
else
6350
printf $success "\nPort $i is available.."
6451
fi
@@ -149,7 +136,7 @@ netstat_check
149136
tak_folder
150137
if [ -d "tak" ]
151138
then
152-
printf $danger "Failed to remove the tak folder. You will need to do this as sudo: sudo rm -rf tak\n"
139+
printf $danger "Failed to remove the tak folder. You will need to do this as sudo: sudo ./scripts/cleanup.sh\n"
153140
exit 0
154141
fi
155142
checksum
@@ -170,7 +157,50 @@ then
170157
rm -rf /tmp/takserver
171158
fi
172159

173-
unzip $release.zip -d /tmp/takserver
160+
# unzip or 7z?
161+
if ! command -v unzip
162+
then
163+
if ! command -v 7z
164+
then
165+
printf $danger "\n .----------------. .----------------. .----------------. .----------------.\n"
166+
printf $danger "| .--------------. || .--------------. || .--------------. || .--------------. |\n"
167+
printf $danger "| | _______ | || | _________ | || | _________ | || | ____ ____ | |\n"
168+
printf $danger "| | |_ __ \ | || | | _ _ | | || | |_ ___ | | || ||_ \ / _|| |\n"
169+
printf $danger "| | | |__) | | || | |_/ | | \_| | || | | |_ \_| | || | | \/ | | |\n"
170+
printf $danger "| | | __ / | || | | | | || | | _| | || | | |\ /| | | |\n"
171+
printf $danger "| | _| | \ \_ | || | _| |_ | || | _| |_ | || | _| |_\/_| |_ | |\n"
172+
printf $danger "| | |____| |___| | || | |_____| | || | |_____| | || ||_____||_____|| |\n"
173+
printf $danger "| | | || | | || | | || | | |\n"
174+
printf $danger "| '--------------' || '--------------' || '--------------' || '--------------' |\n"
175+
printf $danger " '----------------' '----------------' '----------------' '----------------' \n"
176+
printf $danger "You require either unzip OR 7z to decompress the TAK release\n"
177+
printf $danger "https://github.com/Cloud-RF/tak-server/blob/main/README.md\n"
178+
exit 1
179+
else
180+
7z x $release.zip -o/tmp/takserver
181+
fi
182+
else
183+
unzip $release.zip -d /tmp/takserver
184+
fi
185+
186+
if [ ! -d "/tmp/takserver/$release/tak" ]
187+
then
188+
printf $danger "\n .----------------. .----------------. .----------------. .----------------.\n"
189+
printf $danger "| .--------------. || .--------------. || .--------------. || .--------------. |\n"
190+
printf $danger "| | _______ | || | _________ | || | _________ | || | ____ ____ | |\n"
191+
printf $danger "| | |_ __ \ | || | | _ _ | | || | |_ ___ | | || ||_ \ / _|| |\n"
192+
printf $danger "| | | |__) | | || | |_/ | | \_| | || | | |_ \_| | || | | \/ | | |\n"
193+
printf $danger "| | | __ / | || | | | | || | | _| | || | | |\ /| | | |\n"
194+
printf $danger "| | _| | \ \_ | || | _| |_ | || | _| |_ | || | _| |_\/_| |_ | |\n"
195+
printf $danger "| | |____| |___| | || | |_____| | || | |_____| | || ||_____||_____|| |\n"
196+
printf $danger "| | | || | | || | | || | | |\n"
197+
printf $danger "| '--------------' || '--------------' || '--------------' || '--------------' |\n"
198+
printf $danger " '----------------' '----------------' '----------------' '----------------' \n"
199+
printf $danger "A decompressed folder was NOT found at /tmp/takserver/$release\n"
200+
printf $danger "https://github.com/Cloud-RF/tak-server/blob/main/README.md\n"
201+
exit 1
202+
fi
203+
174204
mv -f /tmp/takserver/$release/tak ./
175205
chown -R $USER:$USER tak
176206
clear
@@ -180,12 +210,12 @@ cp ./postgresql1.conf ./tak/postgresql.conf
180210
cp ./scripts/takserver-setup-db-1.sh ./tak/db-utils/takserver-setup-db.sh
181211
cp ./CoreConfig.xml ./tak/CoreConfig.xml
182212

183-
## Set admin username and password
213+
## Set admin username and password and ensure it meets validation criteria
184214
user="admin"
185215
pwd=$(cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | fold -w ${1:-11} | head -n 1)
186216
password=$pwd"Meh1!"
187217

188-
## Set postgres password
218+
## Set postgres password and ensure it meets validation criteria
189219
pgpwd="$(cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | fold -w ${1:-11} | head -n 1)"
190220
pgpassword=$pgpwd"Meh1!"
191221

@@ -197,7 +227,7 @@ sed -i "s/password=\".*\"/password=\"${pgpassword}\"/" tak/CoreConfig.xml
197227
sed -i "s/HOSTIP/$IP/g" tak/CoreConfig.xml
198228

199229
## Set variables for generating CA and client certs
200-
printf $warning "SSL setup. Hit enter (x4) to accept the defaults:\n"
230+
printf $warning "SSL setup. Hit enter (x3) to accept the defaults:\n"
201231
read -p "State (for cert generation). Default [state] :" state
202232
read -p "City (for cert generation). Default [city]:" city
203233
read -p "Organizational Unit (for cert generation). Default [org]:" orgunit
@@ -239,7 +269,7 @@ while :
239269
do
240270
sleep 10 # let the PG stderr messages conclude...
241271
printf $warning "------------CERTIFICATE GENERATION--------------\n"
242-
$DOCKER_COMPOSE exec tak bash -c "cd /opt/tak/certs && ./makeRootCa.sh"
272+
$DOCKER_COMPOSE exec tak bash -c "cd /opt/tak/certs && ./makeRootCa.sh --ca-name LOL"
243273
if [ $? -eq 0 ];
244274
then
245275
$DOCKER_COMPOSE exec tak bash -c "cd /opt/tak/certs && ./makeCert.sh server takserver"
@@ -274,7 +304,7 @@ cd ../../
274304
./scripts/certDP.sh $IP user2
275305

276306

277-
printf $info "Waiting for TAK server to go live. This should take < 30s with an AMD64, ~1min on a ARM64 (Pi)\n"
307+
printf $info "Waiting for TAK server to go live. This should take <1m with an AMD64, ~2min on a ARM64 (Pi)\n"
278308
docker-compose start tak
279309

280310
### Checks if java is fully initialised
@@ -302,16 +332,17 @@ do
302332
sleep 5
303333
fi
304334
else
305-
printf $info "No joy with DB, will retry in 10...\n"
335+
printf $info "No joy with DB, will retry in 10s. If this loops more than 6 times go and get some fresh air...\n"
306336
fi
307337
done
308338

309339
cp ./tak/certs/files/$user.p12 .
310340

311341
### Post-installation message to user including randomly generated passwrods to use for account and PostgreSQL
342+
clear
343+
docker container ls
312344

313-
printf $success "\n\nIf the database was updated OK (eg. Successfully applied 64 update(s)), \n"
314-
printf $warning "Import the $user.p12 certificate from this folder to your browser as per the README.md file\n"
345+
printf $warning "\n\nImport the $user.p12 certificate from this folder to your browser as per the README.md file\n"
315346
printf $success "Login at https://$IP:8443 with your admin account. No need to run the /setup step as this has been done.\n"
316347
printf $info "Certificates and *CERT DATA PACKAGES* are in tak/certs/files \n\n"
317348
printf $success "Setup script sponsored by CloudRF.com - \"The API for RF\"\n\n"
@@ -321,4 +352,6 @@ printf $danger "Admin password: $password\n" # Web interface default random pass
321352
printf $danger "Postgresql password: $pgpassword\n\n" # PostgreSQL password randomly generated during set up
322353
printf $danger "---------PASSWORDS----------------\n\n"
323354
printf $warning "MAKE A NOTE OF YOUR PASSWORDS. THEY WON'T BE SHOWN AGAIN.\n"
324-
printf $info "To start the containers next time you login, execute from this folder: $DOCKER_COMPOSE up\n"
355+
printf $info "Docker containers should automatically start with the docker service from now on.\n"
356+
357+

0 commit comments

Comments
 (0)