diff --git a/configure.bash b/configure.bash index 2ee8b0f..3dac8b6 100755 --- a/configure.bash +++ b/configure.bash @@ -1,7 +1,21 @@ #!/usr/bin/env bash +set -eu usage="Usage: $0 server_name project_root" server_name="${1:?$usage}" root="${2:?$usage}" sed -Ei "s/(^[[:blank:]]*server_name [^_][^.]*\.)[^;]*/\1${server_name}/" "$root"/services/nginx/default.conf sed -Ei "s/(^OPENPROJECT_HOST__NAME=[^.]*\.).*/\1${server_name}/" "$root"/.env + +# 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 + mkdir -p $(dirname "$gitea_conf_file") + touch "$gitea_conf_file" +fi +if grep -Eq "\[server\] ROOT_URL = https://gitea\." $gitea_conf_file; then + sed -Ei "s/(\[server\] ROOT_URL = https:\/\/gitea\.).*/\1$server_name/" "$gitea_conf_file" +else + echo "[server] ROOT_URL = https://gitea.${server_name}/" >>"$gitea_conf_file" +fi diff --git a/docker-compose.yaml b/docker-compose.yaml index 63e153d..f878d41 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,12 +5,16 @@ networks: nextcloud-backend: openproject-frontend: openproject-backend: + gitea-frontend: + gitea-backend: volumes: nextcloud-db: nextcloud: openproject-db: openproject: + gitea-db: + gitea: x-op-restart-policy: &restart_policy restart: unless-stopped @@ -41,6 +45,7 @@ services: networks: - nextcloud-frontend - openproject-frontend + - gitea-frontend ports: - "80:80" - "443:443" @@ -48,6 +53,8 @@ services: - nextcloud:/var/www/html:ro depends_on: - nextcloud + - openproject + - gitea # NextCloud @@ -78,6 +85,43 @@ services: volumes: - nextcloud-db:/var/lib/mysql + # Gitea + + gitea: + image: docker.gitea.com/gitea:1.25.2 + environment: + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=gitea-db:5432 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=gitea + restart: always + networks: + - gitea-frontend + - gitea-backend + volumes: + - gitea:/data + - /etc/timezone:/etc/timezones:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "222:22" + depends_on: + - gitea-db + + gitea-db: + image: docker.io/library/postgres:14 + restart: always + environment: + - POSTGRES_USER=gitea + - POSTGRES_PASSWORD=gitea + - POSTGRES_DB=gitea + networks: + - gitea-backend + volumes: + - gitea-db:/var/lib/postgresql/data + # OpenProject openproject: diff --git a/readme.md b/readme.md index 5153e72..22d91ed 100644 --- a/readme.md +++ b/readme.md @@ -1,24 +1,31 @@ # tvcloud This project is a personal cloud of services: -- NextCloud -- OpenProject +- [NextCloud](https://nextcloud.com/) +- [OpenProject](https://www.openproject.org/) +- [Gitea](https://about.gitea.com/products/gitea/) # Setup 1. Generate a self-signed certificate for the proxy. ``` -openssl genpkey -algorithm RSA -out server.key -openssl req -new -x509 -key server.key -out server.crt -days 365 +host=tvcloud.fr +mkcert \ +-cert-file services/nginx/server.crt \ +-key-file services/nginx/server.key \ +gitea.$host nextcloud.$host openproject.$host $host 127.0.0.1 ::1 ``` -2. Make a `.env` file for `docker-compose.yaml`. See `.example.env`. +2. Make a `.env` file (for `docker compose`). + +See `.example.env`. 3. Configure the host name. ``` -./configure.bash HOSTNAME . +host=tvcloud.fr +sudo ./configure.bash $host . ``` 4. Start the services. @@ -26,18 +33,3 @@ openssl req -new -x509 -key server.key -out server.crt -days 365 ``` sudo docker compose up --detach ``` - -# OpenProject - -- [Upgrade](https://www.openproject.org/docs/installation-and-operations/installation/docker-compose/#upgrade) -- [Backup](https://www.openproject.org/docs/installation-and-operations/installation/docker-compose/#backup) - -# Joplin - -- Update/Install: - -``` -wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash -``` - -You can then [synchronize it with NextCloud](https://joplinapp.org/help/apps/sync/nextcloud/). diff --git a/services/nginx/default.conf b/services/nginx/default.conf index 747a901..982d7d3 100644 --- a/services/nginx/default.conf +++ b/services/nginx/default.conf @@ -38,10 +38,30 @@ server { } } +server { + listen 443 ssl; + server_name gitea.tvcloud.fr; + + ssl_certificate /etc/ssl/crt/server.crt; + ssl_certificate_key /etc/ssl/crt/server.key; + + location / { + client_max_body_size 512M; + proxy_set_header Connection $http_connection; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_pass http://gitea:3000; + } +} + # 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.tvcloud.fr; + server_name nextcloud.localhost; ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate_key /etc/ssl/crt/server.key;