Compare commits

2 Commits

Author SHA1 Message Date
4ce0b53699 WIP 2025-12-18 22:53:17 +01:00
888510202e Minor edits 2025-12-18 12:52:04 +01:00
9 changed files with 80 additions and 9 deletions

5
.gitignore vendored
View File

@@ -1,4 +1,3 @@
server.crt services/nginx/server.crt
server.key services/nginx/server.key
.env .env
services/nextcloud/db.env

View File

@@ -4,14 +4,18 @@ set -eu
usage="Usage: $0 server_name project_root" usage="Usage: $0 server_name project_root"
server_name="${1:?$usage}" server_name="${1:?$usage}"
root="${2:?$usage}" root="${2:?$usage}"
# Configure hostname for Nginx
sed -Ei "s/(^[[:blank:]]*server_name [^_][^.]*\.)[^;]*/\1${server_name}/" "$root"/services/nginx/default.conf sed -Ei "s/(^[[:blank:]]*server_name [^_][^.]*\.)[^;]*/\1${server_name}/" "$root"/services/nginx/default.conf
# Configure hostname for OpenProject
sed -Ei "s/(^OPENPROJECT_HOST__NAME=[^.]*\.).*/\1${server_name}/" "$root"/.env sed -Ei "s/(^OPENPROJECT_HOST__NAME=[^.]*\.).*/\1${server_name}/" "$root"/.env
# Configure hostname for Gitea # Configure hostname for Gitea
# Note that this works only if you use a docker volume named `tvcloud_gitea` (this project default). # 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 gitea_conf_file=/var/lib/docker/volumes/tvcloud_gitea/_data/gitea/conf/app.init
if [[ ! -e $gitea_conf_file ]]; then if [[ ! -e $gitea_conf_file ]]; then
mkdir -p $(dirname "$gitea_conf_file") mkdir -p "$(dirname "$gitea_conf_file")"
touch "$gitea_conf_file" touch "$gitea_conf_file"
fi fi
if grep -Eq "\[server\] ROOT_URL = https://gitea\." $gitea_conf_file; then if grep -Eq "\[server\] ROOT_URL = https://gitea\." $gitea_conf_file; then

View File

@@ -60,6 +60,8 @@ services:
nextcloud: nextcloud:
image: nextcloud:31-fpm image: nextcloud:31-fpm
build:
context: ./services/nextcloud
environment: environment:
- MYSQL_HOST=nextcloud-db - MYSQL_HOST=nextcloud-db
- MYSQL_PASSWORD=pswd - MYSQL_PASSWORD=pswd

View File

@@ -10,7 +10,7 @@ This project is a personal cloud of services:
1. Generate a self-signed certificate for the proxy. 1. Generate a self-signed certificate for the proxy.
``` ```
host=tvcloud.fr host=yourdomain.com
mkcert \ mkcert \
-cert-file services/nginx/server.crt \ -cert-file services/nginx/server.crt \
-key-file services/nginx/server.key \ -key-file services/nginx/server.key \
@@ -24,7 +24,7 @@ See `.example.env`.
3. Configure the host name. 3. Configure the host name.
``` ```
host=tvcloud.fr host=yourdomain.com
sudo ./configure.bash $host . sudo ./configure.bash $host .
``` ```

View File

@@ -0,0 +1,7 @@
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'localhost';
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';

40
services/mariadb/my.cnf Normal file
View File

@@ -0,0 +1,40 @@
[mariadb]
host-cache-size = 128
skip-name-resolve = true
[mysqld]
transaction_isolation = READ-COMMITTED
binlog_format = ROW
[server]
skip_name_resolve = 1
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
query_cache_type = 1
query_cache_limit = 2M
query_cache_min_res_unit = 2k
query_cache_size = 64M
tmp_table_size= 64M
max_heap_table_size= 64M
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
[client-server]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
[client]
default-character-set = utf8mb4
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1

View File

@@ -0,0 +1,3 @@
FROM nextcloud:31-fpm
COPY ./mysql.ini /usr/local/etc/php/conf.d/mysql.ini

View File

@@ -0,0 +1,16 @@
# configuration for PHP MySQL module
extension=pdo_mysql.so
[mysql]
mysql.allow_local_infile=On
mysql.allow_persistent=On
mysql.cache_size=2000
mysql.max_persistent=-1
mysql.max_links=-1
mysql.default_port=
mysql.default_socket=/var/lib/mysql/mysql.sock # Debian squeeze: /var/run/mysqld/mysqld.sock
mysql.default_host=
mysql.default_user=
mysql.default_password=
mysql.connect_timeout=60
mysql.trace_mode=Off

View File

@@ -20,7 +20,7 @@ server {
server { server {
listen 443 ssl; listen 443 ssl;
server_name openproject.tvcloud.fr; server_name openproject.yourdomain.com;
ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate /etc/ssl/crt/server.crt;
ssl_certificate_key /etc/ssl/crt/server.key; ssl_certificate_key /etc/ssl/crt/server.key;
@@ -40,7 +40,7 @@ server {
server { server {
listen 443 ssl; listen 443 ssl;
server_name gitea.tvcloud.fr; server_name gitea.yourdomain.com;
ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate /etc/ssl/crt/server.crt;
ssl_certificate_key /etc/ssl/crt/server.key; ssl_certificate_key /etc/ssl/crt/server.key;
@@ -61,7 +61,7 @@ server {
# https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf # https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf
server { server {
listen 443 ssl; listen 443 ssl;
server_name nextcloud.localhost; server_name nextcloud.yourdomain.com;
ssl_certificate /etc/ssl/crt/server.crt; ssl_certificate /etc/ssl/crt/server.crt;
ssl_certificate_key /etc/ssl/crt/server.key; ssl_certificate_key /etc/ssl/crt/server.key;