Skip to content

Commit 0b94155

Browse files
committed
example dhi
example dhi: bugfix and some changes
1 parent 30b8ff1 commit 0b94155

File tree

2 files changed

+46
-14
lines changed

2 files changed

+46
-14
lines changed

examples/fpm-nginx-dhi/README.md

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,37 +26,56 @@ If you don't want to use it, make adjustments in the NGINX configuration file in
2626
2. Copy this folder to your server and move into it.
2727
3. Rename `.env.example` to `.env` and configure your domain and database settings.
2828
(Password generator: [randompasswordgenerator.com](https://randompasswordgenerator.com))
29-
* `mv .env.example .env`
30-
* `nano .env`
29+
* `mv .env.example .env`
30+
* `nano .env`
3131
4. create some subfolder:
32-
* `mkdir ./html && chown 65532:65532 ./html`
33-
* `mkdir ./data-db && chown 65532:65532 ./data-db`
34-
5. Configure Traefik, set your domains in `./config/traefik/dynamic/traefik-dashboard.yml` and `./config/traefik/dynamic/wsc.yml` or remove `Host(*) &&`. Also in `traefik-dashboard.yml`change basicAuth user and password. Additionally, create SSL certificates contains domain name(s) and set the path within the container in `./config/traefik/dynamic/ssl.yml` or use [Let's Encrypt](https://doc.traefik.io/traefik/reference/install-configuration/tls/certificate-resolvers/acme/).
35-
* example command for replace domain in dynamic configs:
32+
* `mkdir ./html && chown 65532:65532 ./html`
33+
* `mkdir ./data-db && chown 65532:65532 ./data-db`
34+
5. Configure **Traefik**, set your domains in `./config/traefik/dynamic/traefik-dashboard.yml` and `./config/traefik/dynamic/wsc.yml` or remove `Host(*) &&`. Also in `traefik-dashboard.yml`change basicAuth user and password. Additionally, create SSL certificates contains domain name(s) and set the path within the container in `./config/traefik/dynamic/ssl.yml` or use [Let's Encrypt](https://doc.traefik.io/traefik/reference/install-configuration/tls/certificate-resolvers/acme/).
35+
* (1) set domain as variable from `.env`:
3636
```sh
37-
find ./config/traefik/dynamic -type f -exec sed -i 's/example.com/mydomain.com/g' {} +
37+
DOMAIN=$(grep '^DOMAIN=' .env | cut -d= -f2-)
3838
```
39-
* example for self sign cert:
39+
* (2) replace domain in dynamic configs:
40+
```sh
41+
find ./config/traefik/dynamic -type f -exec sed -i "s/example.com/${DOMAIN}/g" {} +
42+
```
43+
* (3) example SSL Cert (self sign):
4044
create folder:
4145
```sh
4246
mkdir ./ssl-certs
4347
```
4448
create cert (change domain name):
4549
```sh
46-
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes -subj "/C=DE/ST=none/L=Town/O=Linux Community/CN=example.com" -keyout ./ssl-certs/ssl.key -out ./ssl-certs/ssl.crt -addext "subjectAltName=DNS:example.com,DNS:*.example.com" -addext "basicConstraints=CA:FALSE" -addext "keyUsage=digitalSignature,keyEncipherment" -addext "extendedKeyUsage=serverAuth"
50+
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes -subj "/C=DE/ST=none/L=Town/O=Linux Community/CN=${DOMAIN}" -keyout ./ssl-certs/ssl.key -out ./ssl-certs/ssl.crt -addext "subjectAltName=DNS:${DOMAIN},DNS:*.${DOMAIN}" -addext "basicConstraints=CA:FALSE" -addext "keyUsage=digitalSignature,keyEncipherment" -addext "extendedKeyUsage=serverAuth"
4751
```
4852
Check:
4953
```sh
5054
openssl x509 -text -noout -in ./ssl-certs/ssl.crt
55+
```
56+
Change permissions:
57+
```sh
58+
chown 65532:65532 ./ssl-certs/*
59+
```
60+
6. optional:
61+
* update timezone in php conf:
62+
```sh
63+
sed -i "s|^date\.timezone=.*|date.timezone=$(grep '^TIMEZONE=' .env | cut -d= -f2-)|" ./config/php_wsc.ini
64+
```
65+
* check docker-compose.yml:
66+
```sh
67+
docker-compose config
5168
```
5269
6. Start the container setup with:
53-
`docker compose up -d`
70+
```sh
71+
docker compose up -d
72+
```
5473
7. Create MySQL Databse and User:
5574
```sh
5675
# create database
57-
docker exec -it wsc-mysql bash -c 'mysql -uroot -e "CREATE DATABASE ${MYSQL_DATABASE};"'
76+
docker exec -it wsc-db bash -c 'mysql -uroot -e "CREATE DATABASE ${MYSQL_DATABASE};"'
5877
# create user and set permissions
59-
docker exec -it wsc-mysql bash -c 'mysql -uroot -e "CREATE USER \"${MYSQL_USER}\"@\"%\" IDENTIFIED BY \"${MYSQL_PASSWORD}\"; GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO \"${MYSQL_USER}\"@\"%\";"'
78+
docker exec -it wsc-db bash -c 'mysql -uroot -e "CREATE USER \"${MYSQL_USER}\"@\"%\" IDENTIFIED BY \"${MYSQL_PASSWORD}\"; GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO \"${MYSQL_USER}\"@\"%\";"'
6079
```
6180
8. [Download WSC](https://www.woltlab.com/en/woltlab-suite-download/) and unzip archive and copy all files from "upload" folder in "html" folder on your server.
6281
9. Call your domain and file test.php, example: `http://example.com/test.php`

examples/fpm-nginx-dhi/docker-compose.yml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ services:
205205
#- ./config/traefik/traefik.yml:/etc/traefik/traefik.yml:ro # static config file or use "command" in docker-compose
206206
- ./config/traefik/dynamic/:/config/dynamic/:ro # dynamic config files
207207
- ./ssl-certs/:/config/certs/:ro # ssl certs files
208-
# TODO for plugins: mkdir -p ./data-traefik/plugins && chown 65532:65532 ./data-traefik/plugins
208+
# TODO for plugins: "mkdir -p ./data-traefik/plugins && chown 65532:65532 ./data-traefik/plugins"
209209
#- ./data-traefik/plugins/:/plugins-storage:rw # plugin folder (will be downloaded by traefik)
210210
networks:
211211
- traefik-net
@@ -215,6 +215,7 @@ services:
215215
timeout: 5s
216216
retries: 3
217217
# check with: "docker inspect --format='{{json .State.Health}}' traefik | jq"
218+
# URL for Webbrowser: https://example.com/traefik
218219

219220
networks:
220221
wsc-net:
@@ -224,4 +225,16 @@ networks:
224225
# external: true
225226
traefik-net:
226227
name: traefik-net
227-
#external: true
228+
# external, script? https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/docker_network_create.sh
229+
#external: true
230+
# not external, but with IPv4 and IPv6:
231+
#driver: bridge
232+
#attachable: true
233+
#enable_ipv6: true
234+
#labels:
235+
# created.by: "docker-compose_WSC"
236+
#ipam:
237+
# driver: default
238+
# config:
239+
# - subnet: 172.20.0.0/24 # IPv4 Subnet
240+
# - subnet: fd00:dead:beef::/48 # IPv6 Subnet

0 commit comments

Comments
 (0)