From 30ddd419a3ad0834bd92b7db898f6725d65042ad Mon Sep 17 00:00:00 2001 From: mrjk Date: Mon, 22 Aug 2022 22:09:45 -0400 Subject: [PATCH] Fix: many small bugs, update gitea to use volumes --- .paasify/plugins/_paasify.jsonnet | 30 +++++--- README.md | 35 +++++++++ authelia/docker-compose.yml | 2 +- gitea/docker-compose.mysql.yml | 13 +++- gitea/docker-compose.yml | 117 ++++++++++++++++++++++++++++-- 5 files changed, 179 insertions(+), 18 deletions(-) diff --git a/.paasify/plugins/_paasify.jsonnet b/.paasify/plugins/_paasify.jsonnet index 89e7fe5..f77794d 100644 --- a/.paasify/plugins/_paasify.jsonnet +++ b/.paasify/plugins/_paasify.jsonnet @@ -79,6 +79,8 @@ local global_vars_default(runtime) = assert std.isString(runtime.paasify_stack); local app_ident = runtime.paasify_ns + runtime.paasify_sep + runtime.paasify_stack; + #local dir_prefix = './'; + local dir_prefix = runtime.paasify_stack_dir + '/'; { app_ident: app_ident, @@ -119,15 +121,22 @@ local global_vars_default(runtime) = app_debug: 'false', - app_dir_root: './', - app_dir_db_data: './db_data', # Backup data - app_dir_db_conf: './db_conf', # Commitables files into git - app_dir_conf: './conf', # Commitables files into git - app_dir_data: './data', # Backup data - app_dir_logs: './logs', # Backup ? - app_dir_share: './share', # No backup - app_dir_tmp: './tmp', # Just a tmp pool dir - app_dir_secrets: './secrets', # Autogenerated secrets + app_dir_root: dir_prefix, + app_dir_db_data: dir_prefix + 'db_data', # Backup data + app_dir_db_conf: dir_prefix + 'db_conf', # Commitables files into git + app_dir_cache: dir_prefix + 'cache', # Cache files + app_dir_build: dir_prefix + 'build', # Build dir + app_dir_script: dir_prefix + 'build', # Dir for storing container scripts and helpers + app_dir_conf: dir_prefix + 'conf', # Commitables files into git + app_dir_backup: dir_prefix + 'backup', # Backup directory + app_dir_data: dir_prefix + 'data', # Backup data + app_dir_logs: dir_prefix + 'logs', # Backup ? + app_dir_share: dir_prefix + 'share', # No backup, data for apps + app_dir_tmp: dir_prefix + 'tmp', # Just a tmp pool dir + app_dir_secrets: dir_prefix + 'secrets', # Autogenerated secrets + + app_docker_socket: '/var/run/docker.sock', + app_docker_conn: 'unix://var/run/docker.sock', # TOFIX: Merging data, SHOULD BEIN OVERRIDE !!! app_admin_login: 'admin', @@ -139,6 +148,9 @@ local global_vars_default(runtime) = app_user_passwd: 'user', # Generic networks + net_backup: runtime.paasify_ns + runtime.paasify_sep + 'backup', # For backup network + net_docker: runtime.paasify_ns + runtime.paasify_sep + 'docker', # For docker socket access + net_mail: runtime.paasify_ns + runtime.paasify_sep + 'mail', net_vpn: runtime.paasify_ns + runtime.paasify_sep + 'vpn', net_proxy: runtime.paasify_ns + runtime.paasify_sep + 'proxy', net_ldap: runtime.paasify_ns + runtime.paasify_sep + 'ldap', diff --git a/README.md b/README.md index 0a89a5a..d8a51aa 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,47 @@ Paasify: - v1: https://git.jeznet.org/mrjk-lab/paasify - v2: WIP +## To implement + +### Infra +https://netboot.xyz/docs +https://www.domoticz.com/ OR HomeAssistant ! +ddclient +duckdns +smokeping +syslog-ng +https://raneto.com/ + +https://github.com/linuxserver/docker-healthchecks/ + +### Other +Muximux + +deluge/transmission +snapdrop +emulatorjs + + + +#### Side cars +side-mysql +side-prometheus +side-pgsql +side-wireshark +side-docker-sock (connectiva) +side-code-server # vscode online +https://github.com/linuxserver/docker-sqlitebrowser/ +https://github.com/linuxserver/docker-doublecommander/ + + + ## Resources: Some other external resources gathered from the web #### Large Collections +- https://docs.linuxserver.io/general/awesome-lsio - https://github.com/shawly/docker-templates Homelab tools - https://github.com/Stacrypt/cryptodaemon Crypto deamons - https://github.com/dabealu/docker Devops tools diff --git a/authelia/docker-compose.yml b/authelia/docker-compose.yml index fc290f4..38cb998 100644 --- a/authelia/docker-compose.yml +++ b/authelia/docker-compose.yml @@ -12,7 +12,7 @@ services: - "--config=/config/configuration.${APP_AUTHELIA_BACKEND:-ldap}.yml" volumes: - - ./config:/config + - ./conf:/config #networks: # - default labels: diff --git a/gitea/docker-compose.mysql.yml b/gitea/docker-compose.mysql.yml index e4d7b40..2846058 100644 --- a/gitea/docker-compose.mysql.yml +++ b/gitea/docker-compose.mysql.yml @@ -17,13 +17,24 @@ services: image: mariadb:10 restart: unless-stopped volumes: - - $app_dir_db_data:/var/lib/mysql + - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: "${mysql_root_passwd:-gitea}" MYSQL_DATABASE: "${mysql_user_db:-gitea}" MYSQL_USER: "${mysql_user_login:-gitea}" MYSQL_PASSWORD: "${mysql_user_passwd:-gitea}" + labels: + restic-compose-backup.mysql: 'true' + networks: db: +volumes: + db_data: + driver: local + driver_opts: + type: none + o: bind + device: $app_dir_db_data + diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml index 99b1362..079406f 100644 --- a/gitea/docker-compose.yml +++ b/gitea/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.6' +version: '3.9' networks: default: @@ -16,16 +16,119 @@ services: - GITEA__server__DOMAIN=$app_fqdn - GITEA__server__SSH_DOMAIN=$app_fqdn - GITEA__server__ROOT_URL=https://$app_fqdn + labels: + restic-compose-backup.volumes: true + restic-compose-backup.volumes.include: "data_repos,data_ssh,data_var" networks: default: volumes: - - $app_dir_data:/data:rw - #- $app_dir_data/repos:/data/git:rw - #- $app_dir_data/var:/data/gitea:rw - #- $app_dir_data/ssh:/data/ssh:rw + # V2 Multi + - data_var:/data/gitea:rw + - data_repos:/data/git:rw + - data_ssh:/data/ssh:rw - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro +volumes: + data_repos: + driver: local + driver_opts: + type: none + o: bind + device: $app_dir_data/git + data_ssh: + driver: local + driver_opts: + type: none + o: bind + device: $app_dir_data/ssh + data_var: + driver: local + driver_opts: + type: none + o: bind + device: $app_dir_data/gitea + + + # V1 mono + #- data_gitea:/data/gitea + #- type: volume + # source: data_gitea + # target: /data/gitea + # #bind: + # # create_host_path: true + + #- type: volume + # source: data_var + # target: /data/gitea + #- type: volume + # source: data_repos + # target: /data/git + #- type: volume + # source: data_ssh + # target: /data/ssh + + #- /etc/timezone:/etc/timezone:ro + #- /etc/localtime:/etc/localtime:ro + + + +# Example: https://stackoverflow.com/questions/49950326/how-to-create-docker-volume-device-host-path +# https://docs.docker.com/compose/compose-file/#volumes +# +#volumes: +# data_repos: +# data_ssh: +# data_var: + + #data_gitea: + # driver: local + # driver_opts: + # type: none + # o: bind + # device: $app_dir_data/data_gitea + + + + + + + + + +# Pre build cmd: All direcotries must exists for local volumes +# yq -r '.volumes | keys[] as $key| "mkdir -p " + .[$key].driver_opts.device ' docker-compose.run.yml +# + + + + + + +# mkdir -p /home/jez/volumes/data/prj/mrjk/POC/paasify3/examples/ex2/gitea/data/data_gitea +# yq -r '.volumes | keys[] as $key| "docker volume create -d " + .[$key].driver + " -o type=" + .[$key].driver_opts.o + " -o device=" + .[$key].driver_opts.device + " devbox_gitea_" + $key ' docker-compose.run.yml +# => docker volume create -d local -o type=bind -o device=./data/var devbox_gitea_data_gitea + + + # Broken +# yq -r '.volumes | keys[] as $key| "docker volume create -d " + .[$key].driver + " -o type=" + .[$key].driver_opts.o + " -o device=" + .[$key].driver_opts.device + " " + $key ' docker-compose.run.yml + + + + + + + + + +# Volume prior init: +# for x in $(yq -r '.volumes[] | if .driver == "local" then .driver_opts.device else "titi" end' docker-compose.run.yml ); do mkdir -p "$x" ; done +# PREFIX=devbox_gitea for x in $(yq -r '.volumes[] | if .driver == "local" then .driver_opts.device else "titi" end' docker-compose.run.yml ); do mkdir -p "$x" ; done +# +# +# +# --mount 'type=volume,src=,dst=,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:,"volume-opt=o=addr=,vers=4,soft,timeo=180,bg,tcp,rw"' +# +# docker volume create -d local -o type=bind -o "device=$x" my-vol +# docker volume create -d local -o type=bind -o "device=$x" my-vol