mirror of
				https://github.com/odoocker/odoocker
				synced 2025-11-04 07:19:15 +01:00 
			
		
		
		
	integrate keydb to odoocker
This commit is contained in:
		
							
								
								
									
										150
									
								
								.env.example
									
									
									
									
									
								
							
							
						
						
									
										150
									
								
								.env.example
									
									
									
									
									
								
							@@ -4,11 +4,11 @@
 | 
			
		||||
# Odoo
 | 
			
		||||
APP_ENV=local
 | 
			
		||||
INIT=
 | 
			
		||||
UPDATE=
 | 
			
		||||
UPDATE=custom_core
 | 
			
		||||
LOAD=base,web,session_redis
 | 
			
		||||
WORKERS=2
 | 
			
		||||
DEV_MODE=reload,qweb
 | 
			
		||||
DOMAIN=erp.odoocker.test
 | 
			
		||||
DEV_MODE=reload,xml
 | 
			
		||||
DOMAIN=erp.j8c.test
 | 
			
		||||
 | 
			
		||||
# Enterprise
 | 
			
		||||
GITHUB_USER=
 | 
			
		||||
@@ -18,7 +18,7 @@ GITHUB_ACCESS_TOKEN=
 | 
			
		||||
ADMIN_PASSWD=odoo
 | 
			
		||||
DB_HOST=postgres
 | 
			
		||||
DB_PORT=5432
 | 
			
		||||
DB_NAME=odoo
 | 
			
		||||
DB_NAME=j8c
 | 
			
		||||
DB_USER=odoo
 | 
			
		||||
DB_PASSWORD=odoo
 | 
			
		||||
LOAD_LANGUAGE=
 | 
			
		||||
@@ -31,12 +31,12 @@ LIST_DB=True
 | 
			
		||||
DBFILTER=.*
 | 
			
		||||
 | 
			
		||||
# Logging
 | 
			
		||||
LOG_LEVEL=debug
 | 
			
		||||
LOG_LEVEL=info
 | 
			
		||||
# Additional logs
 | 
			
		||||
LOG_HANDLER_LEVEL=INFO
 | 
			
		||||
 | 
			
		||||
# Nginx
 | 
			
		||||
CORS_ALLOWED_DOMAIN="'http://external-domain.test'"
 | 
			
		||||
CORS_ALLOWED_DOMAIN="'https://odoo.j8c.com.mx'"
 | 
			
		||||
 | 
			
		||||
# Testing
 | 
			
		||||
TEST_ENABLE=False
 | 
			
		||||
@@ -52,20 +52,46 @@ SMTP_PASSWORD=
 | 
			
		||||
EMAIL_FROM=
 | 
			
		||||
FROM_FILTER=
 | 
			
		||||
 | 
			
		||||
# Redis
 | 
			
		||||
SESSION_REDIS=true
 | 
			
		||||
REDIS_HOST=redis
 | 
			
		||||
REDIS_PORT=6379
 | 
			
		||||
REDIS_PASSWORD=
 | 
			
		||||
# REDIS_URL=
 | 
			
		||||
REDIS_PREFIX=odoo
 | 
			
		||||
REDIS_EXPIRATION=604800
 | 
			
		||||
REDIS_EXPIRATION_ANONYMOUS=10800
 | 
			
		||||
 | 
			
		||||
# Postgres
 | 
			
		||||
POSTGRES_MAIN_HOST=${DB_HOST}
 | 
			
		||||
POSTGRES_MAIN_PORT=${DB_PORT}
 | 
			
		||||
POSTGRES_MAIN_DB=postgres
 | 
			
		||||
POSTGRES_MAIN_USER=postgres
 | 
			
		||||
POSTGRES_MAIN_PASSWORD=${DB_PASSWORD}
 | 
			
		||||
 | 
			
		||||
# PgAdmin
 | 
			
		||||
PGADMIN_DOMAIN=pgadmin.odoocker.test
 | 
			
		||||
PGADMIN_DOMAIN=pgadmin.j8c.test
 | 
			
		||||
PGADMING_DB_NAME=pgadmin
 | 
			
		||||
PGADMING_DB_USER=pgadmin
 | 
			
		||||
PGADMIN_DB_PASSWORD=${DB_PASSWORD}
 | 
			
		||||
PGADMIN_DB_HOST="'postgresql://${PGADMING_DB_USER}:${PGADMIN_DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${PGADMING_DB_NAME}'"
 | 
			
		||||
 | 
			
		||||
PGADMIN_EMAIL=contacto@juarezsoft.com.mx
 | 
			
		||||
PGADMIN_PASSWORD=odoo
 | 
			
		||||
 | 
			
		||||
PGADMIN_SERVERS_JSON=
 | 
			
		||||
PGADMIN_CONFIG_SERVER_MODE=True
 | 
			
		||||
 | 
			
		||||
#------------------------------#
 | 
			
		||||
#    Project Configurations    #
 | 
			
		||||
#------------------------------#
 | 
			
		||||
# Docker
 | 
			
		||||
PROJECT_NAME=odoocker
 | 
			
		||||
SUPPORT_EMAIL=mail@example.com
 | 
			
		||||
PROJECT_NAME=j8c
 | 
			
		||||
SUPPORT_EMAIL=contacto@juarezsoft.com.mx
 | 
			
		||||
 | 
			
		||||
# Containers' Tags
 | 
			
		||||
ODOO_TAG=16.0
 | 
			
		||||
POSTGRES_TAG=15.4
 | 
			
		||||
ODOO_TAG=15.0
 | 
			
		||||
POSTGRES_TAG=16.0
 | 
			
		||||
NGINX_TAG=1.25.2
 | 
			
		||||
NGINX_PROXY_TAG=1.3.1
 | 
			
		||||
ACME_COMPANION_TAG=2.2.8
 | 
			
		||||
@@ -87,6 +113,7 @@ WEBSOCKET_RATE_LIMIT_DELAY=0.2
 | 
			
		||||
# Custom paths
 | 
			
		||||
COMMUNITY_ADDONS=${ROOT_PATH}/addons
 | 
			
		||||
ENTERPRISE_ADDONS=${ROOT_PATH}/enterprise
 | 
			
		||||
THIRD_PARTY_ADDONS=${ROOT_PATH}/third-party-addons
 | 
			
		||||
EXTRA_ADDONS=${ROOT_PATH}/extra-addons
 | 
			
		||||
CUSTOM_ADDONS=${ROOT_PATH}/custom-addons
 | 
			
		||||
LOG_PATH=/var/log/odoo/odoo.log
 | 
			
		||||
@@ -101,7 +128,7 @@ DEMO=False
 | 
			
		||||
WITHOUT_DEMO=all
 | 
			
		||||
IMPORT_PARTIAL=False
 | 
			
		||||
PIDFILE=
 | 
			
		||||
ADDONS_PATH=${COMMUNITY_ADDONS},${ENTERPRISE_ADDONS},${EXTRA_ADDONS},${CUSTOM_ADDONS}
 | 
			
		||||
ADDONS_PATH=${COMMUNITY_ADDONS},${ENTERPRISE_ADDONS},${THIRD_PARTY_ADDONS},${EXTRA_ADDONS},${CUSTOM_ADDONS}
 | 
			
		||||
UPGRADE_PATH=
 | 
			
		||||
SERVER_WIDE_MODULES=${LOAD}
 | 
			
		||||
DATA_DIR=/var/lib/odoo
 | 
			
		||||
@@ -113,7 +140,7 @@ DEBUG_INTERFACE=${HTTP_INTERFACE}
 | 
			
		||||
HTTP_PORT=8069
 | 
			
		||||
DEBUG_PORT=8070
 | 
			
		||||
XMLRPCS_PORT=8071
 | 
			
		||||
GEVENT_PORT=8072
 | 
			
		||||
LONGPOLLING_PORT=8072
 | 
			
		||||
HTTP_ENABLE=True
 | 
			
		||||
XMLRPCS=True
 | 
			
		||||
PROXY_MODE=True
 | 
			
		||||
@@ -172,7 +199,7 @@ SHELL_INTERFACE=ptpython
 | 
			
		||||
STOP_AFTER_INIT=False
 | 
			
		||||
OSV_MEMORY_COUNT_LIMIT=False
 | 
			
		||||
TRANSIENT_AGE_LIMIT=1.0
 | 
			
		||||
MAX_CRON_THREADS=2
 | 
			
		||||
MAX_CRON_THREADS=1
 | 
			
		||||
UNACCENT=${UNACCENT}
 | 
			
		||||
GEOIP_DATABASE=/usr/share/GeoIP/GeoLite2-City.mmdb
 | 
			
		||||
WORKERS=${WORKERS}
 | 
			
		||||
@@ -193,11 +220,11 @@ TEMP_DOCKER_SOCK=/tmp/docker.sock
 | 
			
		||||
#----------------#
 | 
			
		||||
#    Postgres    #
 | 
			
		||||
#----------------#
 | 
			
		||||
POSTGRES_HOST=${DB_HOST}
 | 
			
		||||
POSTGRES_PORT=${DB_PORT}
 | 
			
		||||
POSTGRES_DB=postgres
 | 
			
		||||
POSTGRES_USER=${DB_USER}
 | 
			
		||||
POSTGRES_PASSWORD=${DB_PASSWORD}
 | 
			
		||||
POSTGRES_HOST=${POSTGRES_MAIN_HOST}
 | 
			
		||||
POSTGRES_PORT=${POSTGRES_MAIN_PORT}
 | 
			
		||||
POSTGRES_DB=${POSTGRES_MAIN_DB}
 | 
			
		||||
POSTGRES_USER=${POSTGRES_MAIN_USER}
 | 
			
		||||
POSTGRES_PASSWORD=${POSTGRES_MAIN_PASSWORD}
 | 
			
		||||
PGDATA=/var/lib/postgresql/data/${PROJECT_NAME}
 | 
			
		||||
 | 
			
		||||
#-------------#
 | 
			
		||||
@@ -210,16 +237,6 @@ LETSENCRYPT_HOST=${DOMAIN}
 | 
			
		||||
LETSENCRYPT_EMAIL=${SUPPORT_EMAIL}
 | 
			
		||||
CORS_ALLOWED_DOMAIN=${CORS_ALLOWED_DOMAIN}
 | 
			
		||||
 | 
			
		||||
#-------------#
 | 
			
		||||
#   PgAdmin   #
 | 
			
		||||
#-------------#
 | 
			
		||||
PGADMIN_DATA=/var/lib/pgadmin
 | 
			
		||||
PGADMIN_VIRTUAL_HOST=${PGADMIN_DOMAIN}
 | 
			
		||||
PGADMIN_DEFAULT_EMAIL=${SUPPORT_EMAIL}
 | 
			
		||||
PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD}
 | 
			
		||||
PGADMIN_LETSENCRYPT_HOST=${PGADMIN_DOMAIN}
 | 
			
		||||
LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
 | 
			
		||||
 | 
			
		||||
#-------------------#
 | 
			
		||||
#    Nginx Proxy    #
 | 
			
		||||
#-------------------#
 | 
			
		||||
@@ -236,14 +253,67 @@ CORS_ALLOWED_DOMAIN=${CORS_ALLOWED_DOMAIN}
 | 
			
		||||
#----------------------#
 | 
			
		||||
DEFAULT_EMAIL=${SUPPORT_EMAIL}
 | 
			
		||||
 | 
			
		||||
#----------------------#
 | 
			
		||||
#    REDIS Caching     #
 | 
			
		||||
#----------------------#
 | 
			
		||||
ODOO_SESSION_REDIS = ${ODOO_SESSION_REDIS} 
 | 
			
		||||
ODOO_SESSION_REDIS_HOST = ${ODOO_SESSION_REDIS_HOST} 
 | 
			
		||||
ODOO_SESSION_REDIS_PORT = ${ODOO_SESSION_REDIS_PORT} 
 | 
			
		||||
ODOO_SESSION_REDIS_PASSWORD = ${ODOO_SESSION_REDIS_PASSWORD} 
 | 
			
		||||
ODOO_SESSION_REDIS_URL = ${ODOO_SESSION_REDIS_URL} 
 | 
			
		||||
ODOO_SESSION_REDIS_PREFIX = ${ODOO_SESSION_REDIS_PREFIX} 
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION = ${ODOO_SESSION_REDIS_EXPIRATION} 
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = ${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS} 
 | 
			
		||||
#-------------#
 | 
			
		||||
#    Redis    #
 | 
			
		||||
#-------------#
 | 
			
		||||
ODOO_SESSION_REDIS=${SESSION_REDIS}
 | 
			
		||||
ODOO_SESSION_REDIS_HOST=${REDIS_HOST}
 | 
			
		||||
ODOO_SESSION_REDIS_PORT=${REDIS_PORT}
 | 
			
		||||
ODOO_SESSION_REDIS_PASSWORD=${REDIS_PASSWORD}
 | 
			
		||||
# ODOO_SESSION_REDIS_URL=
 | 
			
		||||
ODOO_SESSION_REDIS_PREFIX=${REDIS_PREFIX}
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION=${REDIS_EXPIRATION}
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS=${REDIS_EXPIRATION_ANONYMOUS}
 | 
			
		||||
 | 
			
		||||
#-------------#
 | 
			
		||||
#   PgAdmin   #
 | 
			
		||||
#-------------#
 | 
			
		||||
# Container
 | 
			
		||||
PGADMIN_DATA=/var/lib/pgadmin
 | 
			
		||||
 | 
			
		||||
PGADMIN_SERVERS_JSON=${PGADMIN_SERVERS_JSON}
 | 
			
		||||
 | 
			
		||||
PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL}
 | 
			
		||||
PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD}
 | 
			
		||||
 | 
			
		||||
PGADMIN_VIRTUAL_HOST=${PGADMIN_DOMAIN}
 | 
			
		||||
PGADMIN_LETSENCRYPT_HOST=${PGADMIN_DOMAIN}
 | 
			
		||||
PGADMIN_LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
 | 
			
		||||
 | 
			
		||||
# PgAdmin Configuration
 | 
			
		||||
PGADMIN_CONFIG_APP_NAME="'pgAdmin 4'"
 | 
			
		||||
PGADMIN_CONFIG_SERVER_MODE=${PGADMIN_CONFIG_SERVER_MODE}
 | 
			
		||||
PGADMIN_CONFIG_CONFIG_DATABASE_CONNECTION_POOL_SIZE=5
 | 
			
		||||
PGADMIN_CONFIG_DEFAULT_SERVER="'127.0.0.1'"
 | 
			
		||||
PGADMIN_CONFIG_DEFAULT_SERVER_PORT=5050
 | 
			
		||||
PGADMIN_CONFIG_MAX_SESSION_IDLE_TIME=120
 | 
			
		||||
PGADMIN_CONFIG_CONFIG_DATABASE_URI=${PGADMIN_DB_HOST}
 | 
			
		||||
 | 
			
		||||
# Password Settings
 | 
			
		||||
PGADMIN_CONFIG_PASSWORD_LENGTH_MIN=6
 | 
			
		||||
PGADMIN_CONFIG_ALLOW_SAVE_PASSWORD=True
 | 
			
		||||
PGADMIN_CONFIG_ALLOW_SAVE_TUNNEL_PASSWORD=True
 | 
			
		||||
PGADMIN_CONFIG_MAX_LOGIN_ATTEMPTS=10
 | 
			
		||||
 | 
			
		||||
# Query History
 | 
			
		||||
PGADMIN_CONFIG_MAX_QUERY_HIST_STORED=20
 | 
			
		||||
 | 
			
		||||
# SMTP Server
 | 
			
		||||
PGADMIN_CONFIG_MAIL_SERVER="'localhost'"
 | 
			
		||||
PGADMIN_CONFIG_MAIL_PORT=25
 | 
			
		||||
PGADMIN_CONFIG_MAIL_USE_SSL=False
 | 
			
		||||
PGADMIN_CONFIG_MAIL_USE_TLS=False
 | 
			
		||||
PGADMIN_CONFIG_MAIL_USERNAME="''"
 | 
			
		||||
PGADMIN_CONFIG_MAIL_PASSWORD="''"
 | 
			
		||||
PGADMIN_CONFIG_MAIL_DEBUG=False
 | 
			
		||||
PGADMIN_CONFIG_SECURITY_EMAIL_SENDER="'$PGADMIN_DEFAULT_EMAIL'"
 | 
			
		||||
 | 
			
		||||
# Dynamic PgAdmin Servers
 | 
			
		||||
PGADMIN_DB1_NAME=Odoocker
 | 
			
		||||
PGADMIN_DB1_HOST=localhost
 | 
			
		||||
PGADMIN_DB1_PORT=5432
 | 
			
		||||
PGADMIN_DB1_MAINTENANCE_DB=odoocker
 | 
			
		||||
PGADMIN_DB1_USERNAME=odoo
 | 
			
		||||
PGADMIN_DB1_TUNNEL_HOST=erp.odoocker.test
 | 
			
		||||
PGADMIN_DB1_TUNNEL_PORT=22
 | 
			
		||||
PGADMIN_DB1_TUNNEL_USERNAME=ubuntu
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,9 @@
 | 
			
		||||
# Ignores the main configuration file.
 | 
			
		||||
/.env
 | 
			
		||||
 | 
			
		||||
# Ignores the pgadmin private key
 | 
			
		||||
pgadmin/private_key
 | 
			
		||||
 | 
			
		||||
# Ignores the docker compose local or production environment.
 | 
			
		||||
docker-compose.override.yml
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ services:
 | 
			
		||||
    restart: 'no'
 | 
			
		||||
    ports:
 | 
			
		||||
      - 5432:5432
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  nginx:
 | 
			
		||||
    restart: 'no'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,13 @@
 | 
			
		||||
services:
 | 
			
		||||
  pgadmin:
 | 
			
		||||
    image: dpage/pgadmin4:${PGADMIN_TAG}
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    build:
 | 
			
		||||
      context: ./
 | 
			
		||||
      dockerfile: ./pgadmin/Dockerfile
 | 
			
		||||
      args:
 | 
			
		||||
        - PGADMIN_TAG
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - postgres
 | 
			
		||||
    restart: 'no'
 | 
			
		||||
    expose:
 | 
			
		||||
      - 80
 | 
			
		||||
    volumes:
 | 
			
		||||
@@ -11,7 +17,27 @@ services:
 | 
			
		||||
      - PGADMIN_DEFAULT_PASSWORD
 | 
			
		||||
      - VIRTUAL_HOST=${PGADMIN_VIRTUAL_HOST}
 | 
			
		||||
      - LETSENCRYPT_HOST=${PGADMIN_LETSENCRYPT_HOST}
 | 
			
		||||
      - LETSENCRYPT_EMAIL
 | 
			
		||||
      - LETSENCRYPT_EMAIL=${PGADMIN_LETSENCRYPT_EMAIL}
 | 
			
		||||
      - PGADMIN_CONFIG_APP_NAME
 | 
			
		||||
      - PGADMIN_CONFIG_CONFIG_DATABASE_CONNECTION_POOL_SIZE
 | 
			
		||||
      - PGADMIN_CONFIG_SERVER_MODE
 | 
			
		||||
      - PGADMIN_CONFIG_DEFAULT_SERVER
 | 
			
		||||
      - PGADMIN_CONFIG_DEFAULT_SERVER_PORT
 | 
			
		||||
      - PGADMIN_CONFIG_PASSWORD_LENGTH_MIN
 | 
			
		||||
      - PGADMIN_CONFIG_MAX_SESSION_IDLE_TIME
 | 
			
		||||
      - PGADMIN_CONFIG_CONFIG_DATABASE_URI
 | 
			
		||||
      - PGADMIN_CONFIG_ALLOW_SAVE_PASSWORD
 | 
			
		||||
      - PGADMIN_CONFIG_MAX_QUERY_HIST_STORED
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_SERVER
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_PORT
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_USE_SSL
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_USE_TLS
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_USERNAME
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_PASSWORD
 | 
			
		||||
      - PGADMIN_CONFIG_MAIL_DEBUG
 | 
			
		||||
      - PGADMIN_CONFIG_SECURITY_EMAIL_SENDER
 | 
			
		||||
      - PGADMIN_CONFIG_ALLOW_SAVE_TUNNEL_PASSWORD
 | 
			
		||||
      - PGADMIN_CONFIG_MAX_LOGIN_ATTEMPTS
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ services:
 | 
			
		||||
        - GITHUB_USER
 | 
			
		||||
        - GITHUB_ACCESS_TOKEN
 | 
			
		||||
        - ENTERPRISE_ADDONS
 | 
			
		||||
        - THIRD_PARTY_ADDONS
 | 
			
		||||
        - LOG_PATH
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - postgres
 | 
			
		||||
@@ -20,6 +21,7 @@ services:
 | 
			
		||||
      - ./odoo/custom-addons:${CUSTOM_ADDONS}
 | 
			
		||||
      - ./odoo/entrypoint.sh:/entrypoint.sh
 | 
			
		||||
      - ./odoo/odoorc.sh:/odoorc.sh
 | 
			
		||||
      - ./odoo/third-party-addons.sh:/third-party-addons.sh
 | 
			
		||||
    env_file:
 | 
			
		||||
      - ./.env
 | 
			
		||||
    networks:
 | 
			
		||||
@@ -27,12 +29,11 @@ services:
 | 
			
		||||
 | 
			
		||||
  postgres:
 | 
			
		||||
    build: 
 | 
			
		||||
      context: ./postgres
 | 
			
		||||
      dockerfile: Dockerfile
 | 
			
		||||
      context: ./
 | 
			
		||||
      dockerfile: ./postgres/Dockerfile
 | 
			
		||||
      args:
 | 
			
		||||
        - POSTGRES_TAG
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    shm_size: 1GB
 | 
			
		||||
    tty: true
 | 
			
		||||
    volumes:
 | 
			
		||||
      - pg-data:${PGDATA}
 | 
			
		||||
@@ -42,6 +43,12 @@ services:
 | 
			
		||||
      - POSTGRES_USER
 | 
			
		||||
      - POSTGRES_PASSWORD
 | 
			
		||||
      - PGDATA
 | 
			
		||||
      - DB_USER
 | 
			
		||||
      - DB_TEMPLATE
 | 
			
		||||
      - UNACCENT_TEMPLATE
 | 
			
		||||
      - PGADMING_DB_NAME
 | 
			
		||||
      - PGADMING_DB_USER
 | 
			
		||||
      - PGADMIN_DB_PASSWORD
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal
 | 
			
		||||
 | 
			
		||||
@@ -83,17 +90,16 @@ services:
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal
 | 
			
		||||
 | 
			
		||||
  keydb:
 | 
			
		||||
  redis:
 | 
			
		||||
    image: eqalpha/keydb:latest
 | 
			
		||||
    platform: linux/amd64    
 | 
			
		||||
    shm_size: 1GB
 | 
			
		||||
    platform: linux/amd64
 | 
			
		||||
    ports:
 | 
			
		||||
      - 6379:6379
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    networks:
 | 
			
		||||
      - internal
 | 
			
		||||
    # command: keydb-server /etc/keydb/keydb.conf
 | 
			
		||||
    volumes:
 | 
			
		||||
      #- ./keydb.conf:/etc/keydb/keydb.conf:ro
 | 
			
		||||
      - cache-db-data:/var/lib/keydb
 | 
			
		||||
      - redis-data:/var/lib/keydb
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  data-dir:
 | 
			
		||||
@@ -101,8 +107,7 @@ volumes:
 | 
			
		||||
  certs:
 | 
			
		||||
  vhost:
 | 
			
		||||
  html:
 | 
			
		||||
  cache-db-data:
 | 
			
		||||
 | 
			
		||||
  redis-data:
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  internal:
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ server {
 | 
			
		||||
 | 
			
		||||
    location / {
 | 
			
		||||
        proxy_set_header X-Real-IP  $remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For $remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
			
		||||
        proxy_set_header X-Forwarded-Proto $scheme;
 | 
			
		||||
        proxy_set_header Host $host;
 | 
			
		||||
        proxy_pass http://odoo:8069;
 | 
			
		||||
@@ -39,19 +39,12 @@ server {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    location ~* /web/static/ {
 | 
			
		||||
        proxy_set_header X-Real-IP  $remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For $remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-Proto $scheme;
 | 
			
		||||
        proxy_set_header Host $host;
 | 
			
		||||
        proxy_pass http://odoo:8069;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    location /websocket {
 | 
			
		||||
        proxy_set_header X-Real-IP  $remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For $remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
			
		||||
        proxy_set_header X-Forwarded-Proto $scheme;
 | 
			
		||||
        proxy_set_header X-Forwarded-Host $host;
 | 
			
		||||
        proxy_set_header Host $host;
 | 
			
		||||
        proxy_pass http://odoo:8072;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ ARG LOG_PATH
 | 
			
		||||
ARG GITHUB_USER
 | 
			
		||||
ARG GITHUB_ACCESS_TOKEN
 | 
			
		||||
ARG ENTERPRISE_ADDONS
 | 
			
		||||
ARG THIRD_PARTY_ADDONS
 | 
			
		||||
ARG ODOO_RC
 | 
			
		||||
 | 
			
		||||
ENV ODOO_TAG=${ODOO_TAG} \
 | 
			
		||||
@@ -21,6 +22,7 @@ ENV ODOO_TAG=${ODOO_TAG} \
 | 
			
		||||
    GITHUB_USER=${GITHUB_USER} \
 | 
			
		||||
    GITHUB_ACCESS_TOKEN=${GITHUB_ACCESS_TOKEN} \
 | 
			
		||||
    ENTERPRISE_ADDONS=${ENTERPRISE_ADDONS} \
 | 
			
		||||
    THIRD_PARTY_ADDONS=${THIRD_PARTY_ADDONS} \
 | 
			
		||||
    ODOO_RC=${ODOO_RC}
 | 
			
		||||
 | 
			
		||||
#------------------------#
 | 
			
		||||
@@ -55,6 +57,16 @@ RUN if [ -n "$GITHUB_USER" ] && [ -n "$GITHUB_ACCESS_TOKEN" ]; then \
 | 
			
		||||
        git clone https://${GITHUB_USER}:${GITHUB_ACCESS_TOKEN}@github.com/odoo/enterprise.git ${ENTERPRISE_ADDONS} --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags; \
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
#-------------------------#
 | 
			
		||||
#    Odoo Extra Addons    #
 | 
			
		||||
#-------------------------#
 | 
			
		||||
 | 
			
		||||
RUN mkdir -p ${THIRD_PARTY_ADDONS} && \
 | 
			
		||||
    chown odoo:odoo -R ${THIRD_PARTY_ADDONS}
 | 
			
		||||
 | 
			
		||||
COPY --chown=odoo:odoo ./odoo/third-party-addons.sh /
 | 
			
		||||
RUN /third-party-addons.sh && chown odoo:odoo ${THIRD_PARTY_ADDONS}
 | 
			
		||||
 | 
			
		||||
#---------------------#
 | 
			
		||||
#   PIP Dependecies   #
 | 
			
		||||
#---------------------#
 | 
			
		||||
@@ -64,7 +76,7 @@ RUN pip3 install --upgrade pip
 | 
			
		||||
# Copy & Install PIP requirements
 | 
			
		||||
COPY --chown=odoo:odoo ./odoo/requirements.txt /tmp/requirements.txt
 | 
			
		||||
 | 
			
		||||
RUN python3 -m pip install --upgrade -r /tmp/requirements.txt && \
 | 
			
		||||
RUN python3 -m pip install -r /tmp/requirements.txt && \
 | 
			
		||||
    rm /tmp/requirements.txt
 | 
			
		||||
 | 
			
		||||
#---------------------#
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
    'name': 'Report URL',
 | 
			
		||||
    'summary': 'Adds Report URL to Odoo Container',
 | 
			
		||||
    'name': 'Odoocker Base',
 | 
			
		||||
    'summary': 'Supercharge Odoo with Odoocker',
 | 
			
		||||
    'description': '''
 | 
			
		||||
        Odoo Containers doesn't come with report.url param out of the box, so we add it for you to work with Odoocker.
 | 
			
		||||
        Some Odoocker dependencies require to some custom values that we cover with this Addon for you.
 | 
			
		||||
    ''',
 | 
			
		||||
    'version': '1.0.0',
 | 
			
		||||
    'category': 'Technical',
 | 
			
		||||
@@ -48,6 +48,11 @@
 | 
			
		||||
        # ... other qweb templates
 | 
			
		||||
    ],
 | 
			
		||||
    'assets': {
 | 
			
		||||
        'web.assets_frontend': [
 | 
			
		||||
            'module_name/static/src/js/file.js',
 | 
			
		||||
            'module_name/static/src/css/style.css'
 | 
			
		||||
            # ... other assets
 | 
			
		||||
        ],
 | 
			
		||||
        'web.assets_backend': [
 | 
			
		||||
            'module_name/static/src/js/file.js',
 | 
			
		||||
            'module_name/static/src/css/style.css'
 | 
			
		||||
@@ -64,9 +64,8 @@ xmlrpcs_interface = {XMLRPCS_INTERFACE}
 | 
			
		||||
; --xmlrpcs-port
 | 
			
		||||
xmlrpcs_port = {XMLRPCS_PORT}
 | 
			
		||||
 | 
			
		||||
; --gevent-port | --longpolling_port (deprecated)
 | 
			
		||||
; --longpolling_port
 | 
			
		||||
gevent_port = {GEVENT_PORT}
 | 
			
		||||
longpolling_port = False
 | 
			
		||||
 | 
			
		||||
; --no-http | --no-xmlrpc
 | 
			
		||||
http_enable = {HTTP_ENABLE}
 | 
			
		||||
@@ -215,7 +214,7 @@ dbfilter = {DBFILTER}
 | 
			
		||||
;------------------;
 | 
			
		||||
; Advanced options ;
 | 
			
		||||
;------------------;
 | 
			
		||||
; --dev (all, reload, qweb, werkzeug, sql, shell, assets, tests)
 | 
			
		||||
; --dev
 | 
			
		||||
dev_mode = {DEV_MODE}
 | 
			
		||||
 | 
			
		||||
; --shell-interface
 | 
			
		||||
@@ -260,22 +259,29 @@ limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
 | 
			
		||||
; --limit-request
 | 
			
		||||
limit_request = {LIMIT_REQUEST}
 | 
			
		||||
 | 
			
		||||
;------------------------------------------;
 | 
			
		||||
; Options not exposed on the command line. ;
 | 
			
		||||
;------------------------------------------;
 | 
			
		||||
; --ODOO_SESSION_REDIS
 | 
			
		||||
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS} ;has to be 1 or true
 | 
			
		||||
; --ODOO_SESSION_REDIS_HOST
 | 
			
		||||
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST} ;is the redis hostname (default is localhost)
 | 
			
		||||
; --ODOO_SESSION_REDIS_PORT
 | 
			
		||||
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT} ;is the redis port (default is 6379)
 | 
			
		||||
; --ODOO_SESSION_REDIS_PASSWORD
 | 
			
		||||
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD} ;is the password for the AUTH command (optional)
 | 
			
		||||
; -- ODOO_SESSION_REDIS_URL
 | 
			
		||||
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL} ;is an alternative way to define the Redis server address. It's the preferred way when you're using the rediss:// protocol.
 | 
			
		||||
; -- ODOO_SESSION_REDIS_PREFIX
 | 
			
		||||
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX} ;is the prefix for the session keys (optional)
 | 
			
		||||
; -- ODOO_SESSION_REDIS_EXPIRATION
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION} ;is the time in seconds before expiration of the sessions (default is 7 days)
 | 
			
		||||
; -- ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS} ;the time in seconds before expiration of the anonymous sessions (default is 3 hours)
 | 
			
		||||
;-------------;
 | 
			
		||||
;    Redis    ;
 | 
			
		||||
;-------------;
 | 
			
		||||
; has to be 1 or true
 | 
			
		||||
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
 | 
			
		||||
 | 
			
		||||
; is the redis hostname (default is localhost)
 | 
			
		||||
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
 | 
			
		||||
 | 
			
		||||
; is the redis port (default is 6379)
 | 
			
		||||
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
 | 
			
		||||
 | 
			
		||||
; is the password for the AUTH command (optional)
 | 
			
		||||
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
 | 
			
		||||
 | 
			
		||||
; is an alternative way to define the Redis server address. It's the preferred way when you're using the rediss:// protocol.
 | 
			
		||||
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
 | 
			
		||||
 | 
			
		||||
; is the prefix for the session keys (optional)
 | 
			
		||||
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
 | 
			
		||||
 | 
			
		||||
; is the time in seconds before expiration of the sessions (default is 7 days)
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
 | 
			
		||||
 | 
			
		||||
; the time in seconds before expiration of the anonymous sessions (default is 3 hours)
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
 | 
			
		||||
 
 | 
			
		||||
@@ -100,6 +100,22 @@ defaults=(
 | 
			
		||||
    [LIMIT_TIME_REAL]=${LIMIT_TIME_REAL}
 | 
			
		||||
    [LIMIT_TIME_REAL_CRON]=${LIMIT_TIME_REAL_CRON}
 | 
			
		||||
    [LIMIT_REQUEST]=${LIMIT_REQUEST}
 | 
			
		||||
 | 
			
		||||
    [ODOO_SESSION_REDIS]=${ODOO_SESSION_REDIS}
 | 
			
		||||
    [ODOO_SESSION_REDIS_HOST]=${ODOO_SESSION_REDIS_HOST}
 | 
			
		||||
    [ODOO_SESSION_REDIS_PORT]=${ODOO_SESSION_REDIS_PORT}
 | 
			
		||||
    [ODOO_SESSION_REDIS_PASSWORD]=${ODOO_SESSION_REDIS_PASSWORD}
 | 
			
		||||
    [ODOO_SESSION_REDIS_URL]=${ODOO_SESSION_REDIS_URL}
 | 
			
		||||
    [ODOO_SESSION_REDIS_PREFIX]=${ODOO_SESSION_REDIS_PREFIX}
 | 
			
		||||
    [ODOO_SESSION_REDIS_EXPIRATION]=${ODOO_SESSION_REDIS_EXPIRATION}
 | 
			
		||||
    [ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS]=${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
 | 
			
		||||
 | 
			
		||||
    [DISABLE_ATTACHMENT_STORAGE]=${DISABLE_ATTACHMENT_STORAGE}
 | 
			
		||||
    [AWS_HOST]=${AWS_HOST}
 | 
			
		||||
    [AWS_REGION]=${AWS_REGION}
 | 
			
		||||
    [AWS_ACCESS_KEY_ID]=${AWS_ACCESS_KEY_ID}
 | 
			
		||||
    [AWS_SECRET_ACCESS_KEY]=${AWS_SECRET_ACCESS_KEY}
 | 
			
		||||
    [AWS_BUCKETNAME]=${AWS_BUCKETNAME}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Define the template
 | 
			
		||||
@@ -172,7 +188,6 @@ xmlrpcs_port = {XMLRPCS_PORT}
 | 
			
		||||
 | 
			
		||||
; --gevent-port | --longpolling_port (deprecated)
 | 
			
		||||
gevent_port = {GEVENT_PORT}
 | 
			
		||||
longpolling_port = False
 | 
			
		||||
 | 
			
		||||
; --no-http | --no-xmlrpc
 | 
			
		||||
http_enable = {HTTP_ENABLE}
 | 
			
		||||
@@ -365,6 +380,34 @@ limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
 | 
			
		||||
 | 
			
		||||
; --limit-request
 | 
			
		||||
limit_request = {LIMIT_REQUEST}
 | 
			
		||||
 | 
			
		||||
;-------------;
 | 
			
		||||
;    Redis    ;
 | 
			
		||||
;-------------;
 | 
			
		||||
; has to be 1 or true
 | 
			
		||||
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
 | 
			
		||||
 | 
			
		||||
; is the redis hostname (default is localhost)
 | 
			
		||||
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
 | 
			
		||||
 | 
			
		||||
; is the redis port (default is 6379)
 | 
			
		||||
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
 | 
			
		||||
 | 
			
		||||
; is the password for the AUTH command (optional)
 | 
			
		||||
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
 | 
			
		||||
 | 
			
		||||
; is an alternative way to define the Redis server address. It's the preferred way when you're using the rediss:// protocol.
 | 
			
		||||
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
 | 
			
		||||
 | 
			
		||||
; is the prefix for the session keys (optional)
 | 
			
		||||
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
 | 
			
		||||
 | 
			
		||||
; is the time in seconds before expiration of the sessions (default is 7 days)
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
 | 
			
		||||
 | 
			
		||||
; the time in seconds before expiration of the anonymous sessions (default is 3 hours)
 | 
			
		||||
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
debugpy
 | 
			
		||||
websocket-client
 | 
			
		||||
redis
 | 
			
		||||
redis
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								odoo/third-party-addons.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								odoo/third-party-addons.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
git clone https://github.com/camptocamp/odoo-cloud-platform.git --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags;
 | 
			
		||||
cp -r odoo-cloud-platform/session_redis ${THIRD_PARTY_ADDONS}/session_redis
 | 
			
		||||
							
								
								
									
										32
									
								
								pgadmin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								pgadmin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
#------------------------#
 | 
			
		||||
#     PGAdmin Server     #
 | 
			
		||||
#------------------------#
 | 
			
		||||
ARG PGADMIN_TAG
 | 
			
		||||
FROM dpage/pgadmin4:${PGADMIN_TAG}
 | 
			
		||||
 | 
			
		||||
# Receive ARGs from docker-compose.yml & convert them into ENVs
 | 
			
		||||
ARG PGADMIN_DEFAULT_EMAIL
 | 
			
		||||
 | 
			
		||||
ENV PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}
 | 
			
		||||
 | 
			
		||||
# Switch to root user
 | 
			
		||||
USER root
 | 
			
		||||
 | 
			
		||||
# Install bash
 | 
			
		||||
RUN apk add --no-cache bash jq sqlite
 | 
			
		||||
 | 
			
		||||
# Conditionally copy the private key if it exists
 | 
			
		||||
COPY --chown=pgadmin:root ./pgadmin/private_key /pgadmin4/private_key
 | 
			
		||||
# Set permissions for the private key
 | 
			
		||||
 | 
			
		||||
# Copy your script file into the Docker image
 | 
			
		||||
COPY --chown=pgadmin:root ./.env /
 | 
			
		||||
COPY ./pgadmin/start_pgadmin.sh /var/lib/pgadmin/start_pgadmin.sh
 | 
			
		||||
 | 
			
		||||
# Make the script executable
 | 
			
		||||
RUN chmod +x /var/lib/pgadmin/start_pgadmin.sh
 | 
			
		||||
# Run your script
 | 
			
		||||
RUN /var/lib/pgadmin/start_pgadmin.sh
 | 
			
		||||
 | 
			
		||||
# Expose the necessary port
 | 
			
		||||
EXPOSE 80
 | 
			
		||||
							
								
								
									
										89
									
								
								pgadmin/start_pgadmin.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										89
									
								
								pgadmin/start_pgadmin.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,89 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# Source environment variables
 | 
			
		||||
set -a
 | 
			
		||||
source /.env
 | 
			
		||||
set +a
 | 
			
		||||
 | 
			
		||||
# Check if PGADMIN_DEFAULT_EMAIL is set
 | 
			
		||||
if [[ -z $PGADMIN_DEFAULT_EMAIL ]]; then
 | 
			
		||||
    echo "PGADMIN_DEFAULT_EMAIL is not set. Exiting..."
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Modify the email to replace @ with _
 | 
			
		||||
DIR_NAME="/var/lib/pgadmin/storage/${PGADMIN_DEFAULT_EMAIL//@/_}"
 | 
			
		||||
 | 
			
		||||
# Create the directory using the modified name
 | 
			
		||||
mkdir -p "$DIR_NAME"
 | 
			
		||||
 | 
			
		||||
cp /pgadmin4/private_key "$DIR_NAME/private_key"
 | 
			
		||||
chown -R pgadmin:root "$DIR_NAME/private_key"
 | 
			
		||||
 | 
			
		||||
# Generate JSON for each matching variable
 | 
			
		||||
DB_PATH="/var/lib/pgadmin/pgadmin4.db"
 | 
			
		||||
json_output="{\"Servers\":{"
 | 
			
		||||
index=1
 | 
			
		||||
while true; do
 | 
			
		||||
    name_var="PGADMIN_DB${index}_NAME"
 | 
			
		||||
    if [[ -z ${!name_var} ]]; then
 | 
			
		||||
        break
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    host_var="PGADMIN_DB${index}_HOST"
 | 
			
		||||
    port_var="PGADMIN_DB${index}_PORT"
 | 
			
		||||
    maintenance_db_var="PGADMIN_DB${index}_MAINTENANCE_DB"
 | 
			
		||||
    username_var="PGADMIN_DB${index}_USERNAME"
 | 
			
		||||
    tunnel_host_var="PGADMIN_DB${index}_TUNNEL_HOST"
 | 
			
		||||
    tunnel_port_var="PGADMIN_DB${index}_TUNNEL_PORT"
 | 
			
		||||
    tunnel_username_var="PGADMIN_DB${index}_TUNNEL_USERNAME"
 | 
			
		||||
 | 
			
		||||
    json_output+="\"$index\":$(jq -n \
 | 
			
		||||
        --arg name "${!name_var}" \
 | 
			
		||||
        --arg host "${!host_var:-localhost}" \
 | 
			
		||||
        --arg port "${!port_var:-5432}" \
 | 
			
		||||
        --arg db "${!maintenance_db_var:-${!name_var}}" \
 | 
			
		||||
        --arg username "${!username_var:-odoo}" \
 | 
			
		||||
        --arg thost "${!tunnel_host_var}" \
 | 
			
		||||
        --arg tport "${!tunnel_port_var:-22}" \
 | 
			
		||||
        --arg tuser "${!tunnel_username_var:-ubuntu}" \
 | 
			
		||||
        '{
 | 
			
		||||
            "Name": $name,
 | 
			
		||||
            "Group": "Servers",
 | 
			
		||||
            "Host": $host,
 | 
			
		||||
            "Port": $port|tonumber,
 | 
			
		||||
            "MaintenanceDB": $db,
 | 
			
		||||
            "Username": $username,
 | 
			
		||||
            "UseSSHTunnel": 1,
 | 
			
		||||
            "TunnelHost": $thost,
 | 
			
		||||
            "TunnelPort": $tport,
 | 
			
		||||
            "TunnelUsername": $tuser,
 | 
			
		||||
            "TunnelAuthentication": 1,
 | 
			
		||||
            "KerberosAuthentication": false,
 | 
			
		||||
            "ConnectionParameters": {
 | 
			
		||||
                "sslmode": "prefer",
 | 
			
		||||
                "connect_timeout": 10,
 | 
			
		||||
                "sslcert": "'"$DIR_NAME"'/.postgresql/postgresql.crt",
 | 
			
		||||
                "sslkey": "'"$DIR_NAME"'/.postgresql/postgresql.key"
 | 
			
		||||
            },
 | 
			
		||||
            "Shared": true
 | 
			
		||||
          }'),"
 | 
			
		||||
 | 
			
		||||
    index=$((index + 1))
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Remove trailing comma and close JSON braces
 | 
			
		||||
json_output=${json_output%,}
 | 
			
		||||
json_output+="}}"
 | 
			
		||||
 | 
			
		||||
# Save the well-formatted JSON to a file using jq
 | 
			
		||||
if [[ $PGADMIN_SERVERS_JSON ]]; then
 | 
			
		||||
    echo $json_output | jq '.' > "$PGADMIN_SERVERS_JSON"
 | 
			
		||||
 | 
			
		||||
    # Make the Servers.json file readable for all users
 | 
			
		||||
    chmod 755 "/pgadmin4/servers.json"
 | 
			
		||||
 | 
			
		||||
    echo "JSON configuration saved to $DIR_NAME/servers.json"
 | 
			
		||||
fi
 | 
			
		||||
@@ -8,8 +8,11 @@ FROM postgres:${POSTGRES_TAG}
 | 
			
		||||
RUN apt-get update && apt-get install -y \
 | 
			
		||||
    # Unaccent extension dependencies
 | 
			
		||||
    postgresql-contrib \
 | 
			
		||||
    apt-utils \
 | 
			
		||||
    # Clean up the apt cache to reduce the image size
 | 
			
		||||
    && rm -rf /var/lib/apt/lists/*
 | 
			
		||||
 | 
			
		||||
COPY --chown=postgres:postgres ./.env /
 | 
			
		||||
 | 
			
		||||
# Copy the script to create the unaccent template
 | 
			
		||||
COPY ./entrypoint.sh /docker-entrypoint-initdb.d/entrypoint.sh
 | 
			
		||||
COPY ./postgres/entrypoint.sh /docker-entrypoint-initdb.d/entrypoint.sh
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,32 @@
 | 
			
		||||
psql -p 5432 -U odoo -d postgres -c "CREATE DATABASE unaccent_template WITH TEMPLATE = template0"
 | 
			
		||||
psql -p 5432 -U odoo -d postgres -c "\\c unaccent_template"
 | 
			
		||||
psql -p 5432 -U odoo -d postgres -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# Source environment variables
 | 
			
		||||
set -a
 | 
			
		||||
source /.env
 | 
			
		||||
set +a
 | 
			
		||||
 | 
			
		||||
# Create the $DB_TEMPLATE database
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE DATABASE $DB_TEMPLATE WITH TEMPLATE = template0;"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "\\c $DB_TEMPLATE;"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
 | 
			
		||||
 | 
			
		||||
# Create Odoo user and give proper privileges
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "ALTER USER $DB_USER CREATEDB;"
 | 
			
		||||
 | 
			
		||||
# Give Odoo user access to copy $DB_TEMPLATE
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "GRANT ALL PRIVILEGES ON DATABASE $DB_TEMPLATE TO $DB_USER;"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $DB_TEMPLATE -c "ALTER DATABASE $DB_TEMPLATE OWNER TO $DB_USER;"
 | 
			
		||||
 | 
			
		||||
# Create PgAdmin user and give proper privileges
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE DATABASE $PGADMING_DB_NAME;"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE USER $PGADMING_DB_USER WITH PASSWORD '$PGADMIN_DB_PASSWORD';"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "GRANT ALL PRIVILEGES ON DATABASE $PGADMING_DB_NAME TO $PGADMING_DB_USER;"
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $PGADMING_DB_NAME -c "GRANT ALL PRIVILEGES ON SCHEMA public TO $PGADMING_DB_USER;"
 | 
			
		||||
 | 
			
		||||
# Revoke Odoo user's access to pgadmin database
 | 
			
		||||
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "REVOKE CONNECT ON DATABASE $PGADMING_DB_NAME FROM $DB_USER;"
 | 
			
		||||
 | 
			
		||||
echo "Setup completed."
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user