Skip to content

Commit 731adf4

Browse files
committed
added localhost and remotehost options and support arch linux(pacman)
1 parent d36fec4 commit 731adf4

File tree

5 files changed

+101
-14
lines changed

5 files changed

+101
-14
lines changed

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Plus, manage docker containers with Portainer.
2424
<p align="left"> arm64/aarch64, x86-64 </p>
2525

2626
#### Supported Linux Package Manage Systems:
27-
<p align="left"> apk, dnf, yum, apt/apt-get, zypper </p>
27+
<p align="left"> apk, dnf, yum, apt/apt-get, zypper, pacman </p>
2828

2929
#### Supported Linux Operation Systems:
3030
<p align="left"> <a href="https://alpinelinux.org/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/7600810?s=200&v=4" alt="alpine linux" height="40" width="40"/> </a>&nbsp;&nbsp;&nbsp;
@@ -35,6 +35,7 @@ Plus, manage docker containers with Portainer.
3535
<a href="https://www.raspberrypi.com/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/1294177?s=200&v=4" alt="ubuntu" height="40" width="40"/> </a>&nbsp;&nbsp;&nbsp;
3636
<a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/33972111?s=200&v=4" alt="redhat on s390x (IBM Z)" height="40" width="40"/> </a>&nbsp;&nbsp;&nbsp;
3737
<a href="https://www.suse.com/products/server/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/623819?s=200&v=4" alt="opensuse on s390x (IBM Z)" height="40" width="40"/> </a> </p>
38+
<a href="https://archlinux.org/" target="_blank" rel="noreferrer"> <img src="https://gitlab.archlinux.org/uploads/-/system/group/avatar/23/iconfinder_archlinux_386451.png?width=48" alt="arch linux" height="40" width="40"/> </a> </p>
3839

3940
##### Note: Fedora 37, 39 and alpine linux x86-64 compatible, could not try sles IBM Z s390x, rhel IBM Z s390x and raspberrypi.
4041

@@ -143,7 +144,9 @@ DATABASE_IMAGE_NAME=```mariadb``` or ```mysql```\
143144
DATABASE_CONT_NAME=```mariadb```, ```mysql``` or ```custom name```\
144145
DATABASE_PACKAGE_MANAGER=```apt-get update && apt-get install -y gettext-base``` for mariadb, ```microdnf install -y gettext``` for mysql\
145146
DATABASE_ADMIN_COMMANDLINE=```mariadb-admin``` for mariadb, ```mysqladmin``` for mysql\
146-
VARNISH_VERSION=```latest``` for centos version 9+ and fedora, ```stable``` for the others
147+
VARNISH_VERSION=```latest``` for centos version 9+ and fedora, ```stable``` for the others\
148+
SSL_SNIPPET=```echo 'Generated Self-signed SSL Certificate for localhost'``` for localhost\
149+
SSL_SNIPPET=```certbot certonly --webroot --webroot-path /tmp/acme-challenge --rsa-key-size 4096 --non-interactive --agree-tos --no-eff-email --force-renewal --email ${LETSENCRYPT_EMAIL} -d ${DOMAIN_NAME} -d www.${DOMAIN_NAME}``` for remotehost
147150

148151
and
149152

@@ -165,6 +168,8 @@ Firstly: will create external volume
165168
docker volume create --driver local --opt type=none --opt device=${PWD}/certbot --opt o=bind certbot-etc
166169
```
167170

171+
location ssl: Generate Self-signed SSL Certificate with guide [mkcert repository](https://github.com/FiloSottile/mkcert).
172+
168173
```
169174
docker compose up -d
170175
```

docker-compose.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,7 @@ services:
9797
retries: 20
9898
environment:
9999
TZ: '${LOCAL_TIMEZONE}'
100-
entrypoint: /bin/sh -c "certbot certonly --webroot --webroot-path /tmp/acme-challenge --rsa-key-size 4096 --non-interactive --agree-tos --no-eff-email --force-renewal --email ${LETSENCRYPT_EMAIL} -d ${DOMAIN_NAME} -d www.${DOMAIN_NAME};
101-
trap exit TERM; while :; do certbot renew --dry-run; sleep 12h & wait $${!}; done;"
100+
entrypoint: /bin/sh -c "${SSL_SNIPPET}; trap exit TERM; while :; do certbot renew --dry-run; sleep 12h & wait $${!}; done;"
102101

103102
phpmyadmin:
104103
depends_on:

env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ DIRECTORY_PATH=directory_path
66

77
88
LETSENCRYPT_CONF_PREFIX=/etc/letsencrypt
9+
SSL_SNIPPET=ssl_snippet
910

1011
PHP_IMAGE_NAME=php8.3-fpm
1112
PHP_INI_DIR_PREFIX=/usr/local/etc

install.sh

Lines changed: 91 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ sleep 2
1212

1313
# the "lpms" is an abbreviation of Linux Package Management System
1414
lpms=""
15-
for i in apk dnf yum apt zypper
15+
for i in apk dnf yum apt zypper pacman
1616
do
1717
if [ -x "$(command -v $i)" ]; then
1818
if [ "$i" == "apk" ]
@@ -33,6 +33,10 @@ do
3333
lpms=$i
3434
break
3535
elif [[ $(grep -Pow 'ID_LIKE=\K[^;]*' /etc/os-release) == *"suse"* ]]
36+
then
37+
lpms=$i
38+
break
39+
elif [ "$i" == "pacman" ]
3640
then
3741
lpms=$i
3842
break
@@ -87,6 +91,9 @@ then
8791
then
8892
sudo zypper remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine runc
8993
fi
94+
elif [ "$lpms" == "pacman" ]
95+
then
96+
sudo pacman -Rssn podman-docker podman-compose
9097
else
9198
echo ""
9299
echo "could not be detected package management system"
@@ -175,6 +182,10 @@ then
175182

176183
#Installed=`sudo apt-cache policy docker-ce | sed -n '2p' | cut -c 14-`
177184
#Candidate=`sudo apt-cache policy docker-ce | sed -n '3p' | cut -c 14-`
185+
elif [ "$lpms" == "pacman" ]
186+
then
187+
sudo pacman -Syu --noconfirm
188+
sudo pacman -Ss docker docker-buildx
178189
else
179190
echo ""
180191
echo "could not be detected package management system"
@@ -266,27 +277,97 @@ clear
266277
# Setup project variables
267278
##########
268279
echo ""
269-
echo ""
270280
echo "======================================================================="
271281
echo "| Please enter project related variables..."
272282
echo "======================================================================="
273283
echo ""
274284
sleep 2
275285

286+
# set the host
287+
which_h=""
288+
items=("localhost" "remotehost")
289+
PS3="which computer command line are you on? Select the host: "
290+
select h in "${items[@]}"
291+
do
292+
case $REPLY in
293+
1)
294+
which_h=$h
295+
break;;
296+
2)
297+
which_h=$h
298+
break;;
299+
*)
300+
echo "Invalid choice $REPLY";;
301+
esac
302+
done
303+
echo "Ok."
304+
276305
# set your domain name
277-
domain_name=""
278-
read -p 'Enter Domain Name(e.g. : example.com): ' domain_name
306+
if [ "$which_h" == "localhost" ]
307+
then
308+
read -p 'Enter Domain Name(default : localhost or e.g. : example.com): ' domain_name
309+
: ${domain_name:=localhost}
310+
[ "$domain_name" != "localhost" ] && sudo -- sh -c -e "grep -Eq '$domain_name' /etc/hosts || echo '127.0.0.1 $domain_name' >> /etc/hosts"
311+
else
312+
domain_name=""
313+
read -p 'Enter Domain Name(e.g. : example.com): ' domain_name
314+
#[ "$domain_name" != "localhost" ] && sudo -- sh -c -e "sed -i '/$domain_name/d' /etc/hosts"
315+
fi
279316
[ -z $domain_name ] && domain_name="NULL"
280317
host -N 0 $domain_name 2>&1 > /dev/null
281318
while [ $? -ne 0 ]
282319
do
283320
echo "Try again"
284-
read -p 'Enter Domain Name(e.g. : example.com): ' domain_name
321+
sudo -- sh -c -e "sed -i '/$domain_name/d' /etc/hosts"
322+
if [ "$which_h" == "localhost" ]
323+
then
324+
read -p 'Enter Domain Name(default : localhost or e.g. : example.com): ' domain_name
325+
: ${domain_name:=localhost}
326+
[ "$domain_name" != "localhost" ] && sudo -- sh -c -e "grep -Eq '$domain_name' /etc/hosts || echo '127.0.0.1 $domain_name' >> /etc/hosts"
327+
else
328+
read -p 'Enter Domain Name(e.g. : example.com): ' domain_name
329+
#[ "$domain_name" != "localhost" ] && sudo -- sh -c -e "sed -i '/$domain_name/d' /etc/hosts"
330+
fi
285331
[ -z $domain_name ] && domain_name="NULL"
286332
host -N 0 $domain_name 2>&1 > /dev/null
287333
done
288334
echo "Ok."
289335

336+
ssl_snippet=""
337+
if [ "$which_h" == "localhost" ]
338+
then
339+
ssl_snippet="echo 'Generated Self-signed SSL Certificate for localhost'"
340+
if [ "$lpms" == "apk" ]
341+
then
342+
sudo apk add --no-cache nss-tools go git
343+
elif [ "$lpms" == "dnf" ]
344+
then
345+
sudo dnf install nss-tools go git
346+
elif [ "$lpms" == "yum" ]
347+
then
348+
sudo yum install nss-tools go git
349+
elif [ "$lpms" == "zypper" ]
350+
then
351+
sudo zypper install mozilla-nss-tools go git
352+
elif [ "$lpms" == "apt" ]
353+
then
354+
sudo apt install libnss3-tools go git
355+
elif [ "$lpms" == "pacman" ]
356+
then
357+
sudo pacman -S nss go git
358+
else
359+
echo ""
360+
echo "could not be detected package management system"
361+
echo ""
362+
exit 0
363+
fi
364+
sudo rm -Rf mkcert && git clone https://github.com/FiloSottile/mkcert && cd mkcert && go build -ldflags "-X main.Version=$(git describe --tags)"
365+
sudo mkcert -uninstall && mkcert -install && mkcert -key-file privkey.pem -cert-file chain.pem $domain_name *.$domain_name && sudo cat privkey.pem chain.pem > fullchain.pem && sudo mkdir -p ../certbot/live/$domain_name && sudo mv *.pem ../certbot/live/$domain_name && cd ..
366+
echo "Ok."
367+
else
368+
ssl_snippet="certbot certonly --webroot --webroot-path \/tmp\/acme-challenge --rsa-key-size 4096 --non-interactive --agree-tos --no-eff-email --force-renewal --email \$\{LETSENCRYPT_EMAIL\} -d \$\{DOMAIN_NAME\} -d www.\$\{DOMAIN_NAME\}"
369+
fi
370+
290371
# set parameters in env.example file
291372
email=""
292373
regex="^[a-zA-Z0-9\._-]+\@[a-zA-Z0-9._-]+\.[a-zA-Z]+\$"
@@ -410,22 +491,23 @@ echo "Ok."
410491

411492
read -p "Apply changes (y/n)? " choice
412493
case "$choice" in
413-
y|Y ) clear; echo "Yes! Proceeding now...";;
494+
y|Y ) clear; echo ""; echo "Yes! Proceeding now...";;
414495
n|N ) echo "No! Aborting now..."; exit 0;;
415496
* ) echo "Invalid input! Aborting now..."; exit 0;;
416497
esac
417498

418-
cp ./phpmyadmin/apache2/sites-available/default-ssl.sample.conf ./phpmyadmin/apache2/sites-available/default-ssl.conf
419-
cp ./database/phpmyadmin/sql/create_tables.sql.template.example ./database/phpmyadmin/sql/create_tables.sql.template
499+
\cp ./phpmyadmin/apache2/sites-available/default-ssl.sample.conf ./phpmyadmin/apache2/sites-available/default-ssl.conf
500+
\cp ./database/phpmyadmin/sql/create_tables.sql.template.example ./database/phpmyadmin/sql/create_tables.sql.template
420501

421-
cp env.example .env
502+
\cp env.example .env
422503

423504
sed -i "s/db_authentication_password/${db_authentication_password}/" ./database/phpmyadmin/sql/create_tables.sql.template
424505
sed -i "s|db_package_manager|${db_package_manager}|" .env
425506
sed -i 's/db_admin_commandline/'$db_admin_commandline'/' .env
426507
sed -i 's/example.com/'$domain_name'/' .env
427508
sed -i 's/example.com/'$domain_name'/g' ./phpmyadmin/apache2/sites-available/default-ssl.conf
428509
sed -i 's/[email protected]/'$email'/' .env
510+
sed -i "s/ssl_snippet/$ssl_snippet/" .env
429511
sed -i 's/which_db/'$which_db'/g' .env
430512
sed -i 's/db_username/'$db_username'/g' .env
431513
sed -i 's/db_password/'$db_password'/g' .env

phpmyadmin/apache2/sites-available/default-ssl.sample.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
# /usr/share/doc/apache2/README.Debian.gz for more info.
3434
# If both key and certificate are stored in the same file, only the
3535
# SSLCertificateFile directive is needed.
36-
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
36+
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
3737
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
3838

3939
# Server Certificate Chain:

0 commit comments

Comments
 (0)