diff --git a/.example.env b/.example.env new file mode 100644 index 0000000..18f815d --- /dev/null +++ b/.example.env @@ -0,0 +1 @@ +DOMAIN=localhost diff --git a/docker-compose.yaml b/docker-compose.yaml index f759084..be077fd 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -18,6 +18,8 @@ services: proxy: build: context: ./services/nginx + args: + DOMAIN: ${DOMAIN:?DOMAIN not set} networks: - nextcloud-frontend - gitea-frontend diff --git a/readme.md b/readme.md index 2d2fd77..754abd9 100644 --- a/readme.md +++ b/readme.md @@ -21,11 +21,9 @@ Alternatively to generate a CA signed certificate (if your own a domain): ./tools/generate_cert.bash yourdomain.com admin@email.com . ``` -2. Configure the host name (e.g. for `localhost`): +2. Make a `.env` configuration file -``` -./tools/configure.bash localhost . -``` +See `.example.env`. 3. Start the services. diff --git a/services/nginx/Dockerfile b/services/nginx/Dockerfile index 28bc0d7..6b92c6f 100644 --- a/services/nginx/Dockerfile +++ b/services/nginx/Dockerfile @@ -1,5 +1,7 @@ FROM nginx:1.28-alpine -COPY ./default.conf /etc/nginx/conf.d/default.conf +ARG DOMAIN +COPY ./default.template.conf /tmp/default.template.conf +RUN envsubst '$DOMAIN' < /tmp/default.template.conf > /etc/nginx/conf.d/default.conf COPY ./server.key /etc/ssl/crt/server.key COPY ./server.crt /etc/ssl/crt/server.crt diff --git a/services/nginx/default.conf b/services/nginx/default.template.conf similarity index 97% rename from services/nginx/default.conf rename to services/nginx/default.template.conf index d958b0f..8ca14d7 100644 --- a/services/nginx/default.conf +++ b/services/nginx/default.template.conf @@ -13,14 +13,17 @@ upstream php-handler { server { listen 80; - server_name _; + server_name ${DOMAIN} www.${DOMAIN} + nextcloud.${DOMAIN} + gitea.${DOMAIN} + redmine.${DOMAIN}; return 301 https://$host$request_uri; } server { listen 443 ssl; - server_name gitea.yourdomain.com; + server_name gitea.${DOMAIN}; ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate_key /etc/ssl/crt/server.key; @@ -40,7 +43,7 @@ server { server { listen 443 ssl; - server_name redmine.yourdomain.com; + server_name redmine.${DOMAIN}; ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate_key /etc/ssl/crt/server.key; @@ -53,7 +56,7 @@ server { # https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf server { listen 443 ssl; - server_name nextcloud.yourdomain.com; + server_name nextcloud.${DOMAIN}; ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate_key /etc/ssl/crt/server.key; diff --git a/tools/configure.bash b/tools/configure.bash deleted file mode 100755 index 3f7b700..0000000 --- a/tools/configure.bash +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -set -eu - -usage="Usage: $0 server_name project_root" -server_name="${1:?$usage}" -root="${2:?$usage}" - -# Configure hostname for Nginx -sed -Ei "s/(^[[:blank:]]*server_name [^_][^.]*\.)[^;]*/\1${server_name}/" "$root"/services/nginx/default.conf - -# Configure hostname for Gitea -# Note that this works only if you use a docker volume named `tvcloud_gitea` (this project default). -gitea_conf_file=/var/lib/docker/volumes/tvcloud_gitea/_data/gitea/conf/app.init -if [[ ! -e $gitea_conf_file ]]; then - sudo mkdir -p "$(dirname "$gitea_conf_file")" - sudo touch "$gitea_conf_file" -fi -if sudo grep -Eq "\[server\] ROOT_URL = https://gitea\." $gitea_conf_file; then - sudo sed -Ei "s/(\[server\] ROOT_URL = https:\/\/gitea\.).*/\1$server_name/" "$gitea_conf_file" -else - echo "[server] ROOT_URL = https://gitea.${server_name}/" | sudo tee -a "$gitea_conf_file" >/dev/null -fi