Files
site/entrypoint-nginx.sh
viljarb 28212b9d5d modified: .gitignore
new file:   Dockerfile.certbot
	new file:   Dockerfile.nginx
	new file:   Makefile
	new file:   compose.certbot.yml
	new file:   docker-compose.yml
	new file:   entrypoint-certbot.sh
	new file:   entrypoint-nginx.sh
	new file:   nginx-gitea.conf.template
	new file:   nginx.conf.template
2026-03-31 13:25:18 +02:00

42 lines
1.5 KiB
Bash

#!/usr/bin/env sh
set -e
if [ -n "$DOMAIN" ] && [ -n "$EMAIL" ]; then
# production: get Let's Encrypt cert
if [ ! -f "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" ]; then
certbot certonly --standalone \
-d "$DOMAIN" \
--email "$EMAIL" \
--agree-tos \
--non-interactive
fi
export SSL_CERTIFICATE="/etc/letsencrypt/live/$DOMAIN/fullchain.pem"
export SSL_CERTIFICATE_KEY="/etc/letsencrypt/live/$DOMAIN/privkey.pem"
else
# development: self-signed cert
echo "Development mode: using self-signed certificate"
mkdir -p /etc/nginx/certs
if [ ! -f /etc/nginx/certs/cert.pem ]; then
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/certs/key.pem \
-out /etc/nginx/certs/cert.pem \
-subj "/CN=localhost"
fi
export DOMAIN="localhost"
export SSL_CERTIFICATE="/etc/nginx/certs/cert.pem"
export SSL_CERTIFICATE_KEY="/etc/nginx/certs/key.pem"
fi
# generate nginx config from template
envsubst '${DOMAIN} ${SSL_CERTIFICATE} ${SSL_CERTIFICATE_KEY}' < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
# generate gitea config when GITEA_DOMAIN is set
mkdir -p /etc/nginx/conf.d
if [ -n "$GITEA_DOMAIN" ]; then
envsubst '${GITEA_DOMAIN} ${SSL_CERTIFICATE} ${SSL_CERTIFICATE_KEY}' < /etc/nginx/nginx-gitea.conf.template > /etc/nginx/conf.d/gitea.conf
else
echo "# Gitea not configured" > /etc/nginx/conf.d/gitea.conf
fi
exec nginx -g "daemon off;"