This commit is contained in:
Didier Slof 2024-01-26 19:16:39 +01:00
commit ec5120ed78
9 changed files with 192 additions and 0 deletions

3
README.md Normal file
View file

@ -0,0 +1,3 @@
# Stack
This is the stack used by CDDN to host the wordpress backed website.

3
README.nl.md Normal file
View file

@ -0,0 +1,3 @@
# Stack
Dit is de stack die wordt gebruikt om CDDN te draaien.

13
custom/nginx/Dockerfile Normal file
View file

@ -0,0 +1,13 @@
FROM nginx:alpine
RUN apk add \
certbot \
certbot-nginx
COPY content /usr/share/nginx/html
COPY conf.d/ /etc/nginx/conf.d/
COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /entrypoint
ENTRYPOINT [ "sh", "/entrypoint" ]
CMD [ "nginx", "-g", "daemon off;" ]

View file

@ -0,0 +1,23 @@
server {
listen 80;
server_name cddn.ixvd.net;
# SSL is managed by certbot, no need for a ssl listen; it will be generated automagically!
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Is-Reverse-Proxy "true";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 0;
location / {
proxy_redirect off;
proxy_pass http://cddn-site;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html {
color-scheme: light dark;
}
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<hr/>
<span>If you're seeing this, it means the admin was too lazy to remove this page.</span><br/>
<span>Expected something here? contact the admin: webmaster@ixvd.net</span>
</body>
</html>

28
custom/nginx/entrypoint.sh Executable file
View file

@ -0,0 +1,28 @@
#!/bin/sh
trap exit TERM
if [ -n "${CERTBOT_DOMAINS}" ]; then
echo "registering..."
if ! certbot show_account; then
certbot register -n \
--agree-tos \
-m "${CERTBOT_EMAIL}"
fi
for d in $(echo "${CERTBOT_DOMAINS}" | sed 's/,/ /g'); do
echo "requesting for $d..."
certbot --nginx -n --keep -d "$d"
done
while :; do
echo "renewing domains..."
certbot --nginx --keep -n renew
sleep 12h &
wait $!
done &
else
echo "skipping certbot due to no domains!"
fi &
exec "$@"

36
custom/nginx/nginx.conf Normal file
View file

@ -0,0 +1,36 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# docker resolver and quad9;
resolver 127.0.0.11 9.9.9.9 ipv6=off;
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
http2 on;
include /etc/nginx/conf.d/*.conf;
}

View file

@ -0,0 +1,29 @@
version: "2.2"
services:
cddn-db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: "wordpress"
volumes:
- /srv/cddn/mysql/data:/var/lib/mysql
networks:
- internal
cddn-site:
image: wordpress:latest
depends_on:
- cddn-db
volumes:
- /srv/cddn/wordpress/data:/var/www/html
- /srv/cddn/wordpress/other/plugins:/var/www/html/wp-content/plugins
restart: always
environment:
WORDPRESS_DB_HOST: "cddn-db:3306"
WORDPRESS_DB_USER: "root"
WORDPRESS_DB_PASSWORD: "root"
WORDPRESS_DB_NAME: "wordpress"
networks:
- proxy
- internal

31
docker-compose.yml Normal file
View file

@ -0,0 +1,31 @@
# I'm very comfortable in this version, therefore it's the standard
version: '2.2'
services:
# default nginx setup
nginx:
build: custom/nginx
environment:
CERTBOT_EMAIL: "webmaster@cddnwebwinkel.nl"
CERTBOT_DOMAINS: "cddn-webwinkel.nl,cddn.ixvd.net"
volumes:
- /srv/certbot/data:/etc/letsencrypt
- /srv/certbot/other/www:/var/www/certbot
ports:
- 80:80
- 443:443
networks:
- proxy
faulty-web:
build: custom/web
networks:
- proxy
# Here the default networks are defined
networks:
proxy:
external: true
internal:
external: true