33If You want to build a reverse proxy website with Joomla at short time;
44
55#### Full stack Proxy Nginx Joomla:
6- <p align =" left " > <a href =" https://www.joomla.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/69416061?s=200&v=4 " alt =" Joomla " height =" 40 " width =" 40 " /> </a >  ;  ;  ; <a href =" https://www.docker.com/ " target =" _blank " rel =" noreferrer " > <img src =" https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/docker/docker.png " alt =" docker " width =" 40 " height =" 40 " width =" 40 " /> </a >  ;  ;  ; <a href =" https://mariadb.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/5877084?s=200&v=4 " alt =" mariadb " height =" 50 " width =" 50 " /> </a >  ;  ;  ;
7- <a href =" https://www.nginx.com " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/1412239?s=200&v=4 " alt =" nginx " height =" 40 " width =" 40 " /> </a >  ;  ;  ; <a href =" https://www.php.net " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/25158?s=200&v=4 " alt =" php " height =" 40 " width =" 40 " /> </a >  ;  ;  ; <a href =" https://redis.io " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/1529926?s=200&v=4 " alt =" redis " height =" 40 " width =" 40 " /> </a >  ;  ;  ; <a href =" https://www.varnish-software.com/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/577014?s=200&v=4 " alt =" varnish " height =" 40 " width =" 40 " /> </a >  ;  ;  ; <a href =" # " target =" _blank " rel =" noreferrer " > <img src =" https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/bash/bash.png " alt =" Bash " height =" 50 " width =" 50 " /> </a >  ;  ;  ;
8- <a href="https://www.phpmyadmin.net/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/1351977?s=200&v=4" alt="phpmyadmin" height="40" width="40"/> </a> <a href="https://www.apache.org/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/47359?s=200&v=4" alt="apache" height="40" width="40"/> </a> <a href="https://letsencrypt.org/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/17889013?s=200&v=4" alt="letsencrypt" height="40" width="40"/> </a> <a href="https://www.portainer.io/?hsLang=en" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/22225832?s=200&v=4" alt="portainer" height="40" width="40"/> </a> <a href="https://github.com/mailhog" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/10258541?s=200&v=4" alt="mailhog" height="40" width="40"/> </a> <a href="https://www.offen.dev/" target="_blank" rel="noreferrer"> <img src="https://avatars.githubusercontent.com/u/47735043?s=200&v=4" alt="backup" height="35" width="35"/> </a> </p>
6+ <p align =" left " > <a href =" https://www.joomla.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/69416061?s=200&v=4 " alt =" Joomla " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
7+ <a href =" https://www.docker.com/ " target =" _blank " rel =" noreferrer " > <img src =" https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/docker/docker.png " alt =" docker " width =" 40 " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
8+ <a href =" https://mariadb.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/5877084?s=200&v=4 " alt =" mariadb " height =" 50 " width =" 50 " /> </a >  ;  ;  ;
9+ <a href =" https://dev.mysql.com/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/2452804?s=200&v=4 " alt =" mysql " height =" 50 " width =" 50 " /> </a >  ;  ;  ;
10+ <a href =" https://www.nginx.com " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/1412239?s=200&v=4 " alt =" nginx " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
11+ <a href =" https://www.php.net " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/25158?s=200&v=4 " alt =" php " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
12+ <a href =" https://redis.io " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/1529926?s=200&v=4 " alt =" redis " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
13+ <a href =" https://www.varnish-software.com/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/577014?s=200&v=4 " alt =" varnish " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
14+ <a href =" # " target =" _blank " rel =" noreferrer " > <img src =" https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/bash/bash.png " alt =" Bash " height =" 50 " width =" 50 " /> </a >  ;  ;  ;
15+ <a href =" https://www.phpmyadmin.net/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/1351977?s=200&v=4 " alt =" phpmyadmin " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
16+ <a href =" https://www.apache.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/47359?s=200&v=4 " alt =" apache " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
17+ <a href =" https://certbot.eff.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/17889013?s=200&v=4 " alt =" certbot " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
18+ <a href =" https://letsencrypt.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/9289019?s=200&v=4 " alt =" letsencrypt " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
19+ <a href =" https://www.portainer.io/?hsLang=en " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/22225832?s=200&v=4 " alt =" portainer " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
20+ <a href =" https://github.com/mailhog " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/10258541?s=200&v=4 " alt =" mailhog " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
21+ <a href =" https://www.offen.dev/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/47735043?s=200&v=4 " alt =" backup " height =" 35 " width =" 35 " /> </a > </p >
922
1023Plus, manage docker containers with Portainer.
1124
25+ #### Supported CPU architectures:
26+ <p align =" left " > arm64/aarch64, x86-64 </p >
27+
28+ #### Supported Linux Package Manage Systems:
29+ <p align =" left " > apk, dnf, yum, apt/apt-get, zypper </p >
30+
31+ #### Supported Linux Operation Systems:
32+ <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 >  ;  ;  ;
33+ <a href =" https://fedoraproject.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://raw.githubusercontent.com/github/explore/e6b1e7f0fb8d0bf920bd719c7289243138bdc1b4/topics/fedora/fedora.png " alt =" fedora " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
34+ <a href =" https://www.centos.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/79192?s=200&v=4 " alt =" centos " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
35+ <a href =" https://www.debian.org/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/1854028?s=200&v=4 " alt =" debian " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
36+ <a href =" https://ubuntu.com/ " target =" _blank " rel =" noreferrer " > <img src =" https://avatars.githubusercontent.com/u/4604537?s=200&v=4 " alt =" ubuntu " height =" 40 " width =" 40 " /> </a >  ;  ;  ;
37+ <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 >  ;  ;  ;
38+ <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 >  ;  ;  ;
39+ <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 >
40+
41+ ##### Note: Fedora 37, 39 and alpine linux x86-64 compatible, could not try sles IBM Z s390x, rhel IBM Z s390x and raspberrypi.
42+
1243#### With this project you can quickly run the following:
1344
1445- [ Joomla (php-fpm)] ( https://hub.docker.com/_/joomla )
1546- [ webserver (apache2/httpd)] ( https://hub.docker.com/_/httpd )
1647- [ proxy (nginx)] ( https://hub.docker.com/_/nginx )
1748- [ certbot (letsencrypt)] ( https://hub.docker.com/r/certbot/certbot )
1849- [ phpMyAdmin] ( https://hub.docker.com/r/phpmyadmin/phpmyadmin/ )
19- - [ database ] ( https://hub.docker.com/_/mariadb )
50+ - [ databaseMariadb ] ( https://hub.docker.com/_/mariadb ) [ databaseMysql ] ( https://hub.docker.com/_/mysql )
2051- [ redis] ( https://hub.docker.com/_/redis )
2152- [ varnish] ( https://hub.docker.com/_/varnish )
2253- [ mailhog] ( https://github.com/mailhog )
@@ -55,9 +86,11 @@ Create rules to open ports to the internet, or to a specific IPv4 address or ran
5586### Exec install shell script for auto installation and configuration
5687
5788download with
89+
5890```
5991git clone https://github.com/damalis/full-stack-proxy-nginx-joomla-for-everyone-with-docker-compose.git
6092```
93+
6194Open a terminal and ` cd ` to the folder in which ` docker-compose.yml ` is saved and run:
6295
6396```
@@ -73,7 +106,7 @@ Make sure you have the latest versions of **Docker** and **Docker Compose** inst
73106- [ How install docker] ( https://docs.docker.com/engine/install/ )
74107- [ How install docker compose] ( https://docs.docker.com/compose/install/ )
75108
76- Clone this repository or copy the files from this repository into a new folder. In the ** docker-compose.yml ** file you may change the database from MariaDB to MySQL.
109+ Clone this repository or copy the files from this repository into a new folder.
77110
78111Make sure to [ add your user to the ` docker ` group] ( https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user ) .
79112
@@ -82,6 +115,7 @@ Make sure to [add your user to the `docker` group](https://docs.docker.com/insta
82115### Configuration
83116
84117download with
118+
85119```
86120git clone https://github.com/damalis/full-stack-proxy-nginx-joomla-for-everyone-with-docker-compose.git
87121```
@@ -98,25 +132,36 @@ Copy the example environment into `.env`
98132cp env.example .env
99133```
100134
101- Edit the ` .env ` file to change values of ``` LOCAL_TIMEZONE ``` , ``` DOMAIN_NAME ``` , ``` DIRECTORY_PATH ``` , ``` LETSENCRYPT_EMAIL ``` , ``` JOOMLA_DB_USER ``` , ``` JOOMLA_DB_PASSWORD ``` , ``` JOOMLA_DB_NAME ``` , ``` MYSQL_ROOT_PASSWORD ``` , ``` PMA_CONTROLUSER ``` , ``` PMA_CONTROLPASS ``` , ``` PMA_HTPASSWD_USERNAME ``` and ``` PMA_HTPASSWD_PASSWORD ``` .
135+ Edit the ` .env ` file to change values of ``` LOCAL_TIMEZONE ``` , ``` DOMAIN_NAME ``` , ``` DIRECTORY_PATH ``` , ``` LETSENCRYPT_EMAIL ``` , ``` JOOMLA_DB_USER ``` , ``` JOOMLA_DB_PASSWORD ``` , ``` JOOMLA_DB_NAME ``` , ``` MYSQL_ROOT_PASSWORD ``` , ``` DATABASE_IMAGE_NAME ``` , ``` DATABASE_CONT_NAME ``` , ``` DATABASE_PACKAGE_MANAGER ``` , ``` DATABASE_AUTHENTICATION_PLUGIN ``` , ``` DATABASE_ADMIN_COMMANDLINE ``` , ``` PMA_CONTROLUSER ``` , ``` PMA_CONTROLPASS ``` , ``` PMA_HTPASSWD_USERNAME ``` , ``` PMA_HTPASSWD_PASSWORD ``` and ``` VARNISH_VERSION ``` .
102136
103137LOCAL_TIMEZONE=[ to see local timezones] ( https://docs.diladele.com/docker/timezones.html )
104138
105- DIRECTORY_PATH=``` pwd ``` at command line
139+ DIRECTORY_PATH=``` pwd ``` at command line\
140+ DATABASE_IMAGE_NAME=``` mariadb ``` or ``` mysql ``` \
141+ DATABASE_CONT_NAME=``` mariadb ``` , ``` mysql ``` or ``` custom name ``` \
142+ DATABASE_PACKAGE_MANAGER=``` apt-get update && apt-get install -y gettext-base ``` for mariadb, ``` microdnf install -y gettext ``` for mysql\
143+ DATABASE_AUTHENTICATION_PLUGIN=``` mysql_native_password ``` for mariadb, ``` caching_sha2_password ``` for mysql\
144+ DATABASE_ADMIN_COMMANDLINE=``` mariadb-admin ``` for mariadb, ``` mysqladmin ``` for mysql\
145+ VARNISH_VERSION=``` latest ``` for centos version 9+ and fedora, ``` stable ``` for the others
106146
107147and
108148
109149```
110150cp ./phpmyadmin/apache2/sites-available/default-ssl.sample.conf ./phpmyadmin/apache2/sites-available/default-ssl.conf
111151```
112-
113152change example.com to your domain name in ``` ./phpmyadmin/apache2/sites-available/default-ssl.conf ``` file.
114153
154+ ```
155+ cp ./database/phpmyadmin/sql/create_tables.sql.template.example ./database/phpmyadmin/sql/create_tables.sql.template
156+ ```
157+ change pma_controluser, db_authentication_plugin and db_authentication_password in ``` ./database/phpmyadmin/sql/create_tables.sql.template ``` file.
158+
115159### Installation
116160
117161Firstly: will create external volume
162+
118163```
119- docker volume create --driver local --opt type=none --opt device=${DIRECTORY_PATH }/certbot --opt o=bind certbot-etc
164+ docker volume create --driver local --opt type=none --opt device=${PWD }/certbot --opt o=bind certbot-etc
120165```
121166
122167```
@@ -138,6 +183,7 @@ For convenience you may add a new entry into your hosts file.
138183```
139184docker compose -f portainer-docker-compose.yml -p portainer up -d
140185```
186+
141187manage docker with [ Portainer] ( https://www.portainer.io/ ) is the definitive container management tool for Docker, Docker Swarm with it's highly intuitive GUI and API.
142188
143189You can also visit ` https://example.com:9001 ` to access portainer after starting the containers.
@@ -176,7 +222,8 @@ To stop and remove all the containers use the `down` command:
176222docker compose down
177223```
178224
179- to remove portainer and the other containers
225+ to remove portainer and the other containers:
226+
180227```
181228docker rm -f $(docker ps -a -q)
182229```
@@ -187,13 +234,26 @@ Use `-v` if you need to remove the database volume which is used to persist the
187234docker compose down -v
188235```
189236
190- to remove external certbot-etc and portainer and the other volumes
237+ to remove external certbot-etc and portainer and the other volumes:
191238
192239```
193240docker volume rm $(docker volume ls -q)
194241```
195242
196- to remove portainer and the other images
243+ Delete all images, containers, volumes, and networks that are not associated with a container (dangling):
244+
245+ ```
246+ docker system prune
247+ ```
248+
249+ To additionally remove any stopped containers and all unused images (not just dangling ones), add the -a flag to the command:
250+
251+ ```
252+ docker system prune -a
253+ ```
254+
255+ to remove portainer and the other images:
256+
197257```
198258docker rmi $(docker image ls -q)
199259```
@@ -220,6 +280,12 @@ You should see the "Joomla installation" page in your browser. If not, please ch
220280https://example.com
221281```
222282
283+ after every change in the joomla and the varnish configuration or if You get error "502 Bad Gateway":
284+
285+ ```
286+ docker container restart varnish
287+ ```
288+
223289#### How to remove index.php from URLs or How to Solve Joomla Installation stuck on white blank page.
224290
225291You must enable Use URL Rewriting at Joomla admin page then ``` docker container restart varnish ``` .
0 commit comments