diff --git a/CloudronManifest.json b/CloudronManifest.json index d6b6b36..0e06444 100644 --- a/CloudronManifest.json +++ b/CloudronManifest.json @@ -6,18 +6,19 @@ "title": "Odoo", "author": "Odoo authors", "tagline": "Open Source ERP and CRM", - "version": "15.0", + "version": "15.0.0", "icon": "manifest/logo.png", "description": "file://manifest/DESCRIPTION.md", "changelog": "file://manifest/CHANGELOG.md", "postInstallMessage": "file://manifest/POSTINSTALL.md", "healthCheckPath": "/", - "httpPort": 80, + "httpPort": 8000, "memoryLimit": 2684354560, "addons": { "localstorage": {}, "postgresql": {}, "sendmail": {}, + "recvmail": {}, "ldap": {} }, "tags": [ diff --git a/Dockerfile b/Dockerfile index 3bc64f4..21ea9c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,12 +19,16 @@ RUN curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releas RUN npm install -g rtlcss # Install Odoo -ENV ODOO_VERSION 15.0 +ARG ODOO_VERSION=15.0 +ARG ODOO_COMMIT_HASH=f07c63d3e4135d658bb952f1b4880e97d0b66992 -RUN curl -L https://github.com/odoo/odoo/archive/refs/heads/$ODOO_VERSION.tar.gz | tar zx --strip-components 1 -C /app/code && \ +RUN curl -L https://github.com/odoo/odoo/archive/${ODOO_COMMIT_HASH}.tar.gz | tar zx --strip-components 1 -C /app/code && \ pip3 install wheel && \ pip3 install -r requirements.txt +# Patch Odoo to prevent connecting to the default database named 'postgres' every now and then. +RUN sed -i.bak "748i\ to = tools.config['db_name']" /app/code/odoo/sql_db.py + RUN rm -rf /var/log/nginx && mkdir /run/nginx && ln -s /run/nginx /var/log/nginx # Copy entrypoint script and Odoo configuration file diff --git a/start.sh b/start.sh index c8b4214..92f069b 100755 --- a/start.sh +++ b/start.sh @@ -21,19 +21,19 @@ if [[ ! -f /app/data/odoo.conf ]]; then echo "First run. Initializing DB..." # Initialize the database, and exit. - /usr/local/bin/gosu cloudron:cloudron /app/code/odoo-bin -i base,auth_ldap,fetchmail --without-demo all --data-dir /app/data/odoo --logfile /run/odoo/runtime.log -d $CLOUDRON_POSTGRESQL_DATABASE --db_host $CLOUDRON_POSTGRESQL_HOST --db_user $CLOUDRON_POSTGRESQL_USERNAME --db_pass $CLOUDRON_POSTGRESQL_PASSWORD --stop-after-init + /usr/local/bin/gosu cloudron:cloudron /app/code/odoo-bin -i base,auth_ldap,fetchmail --without-demo all --data-dir /app/data/odoo --logfile /run/odoo/runtime.log -d $CLOUDRON_POSTGRESQL_DATABASE --db_host $CLOUDRON_POSTGRESQL_HOST --db_port $CLOUDRON_POSTGRESQL_PORT --db_user $CLOUDRON_POSTGRESQL_USERNAME --db_pass $CLOUDRON_POSTGRESQL_PASSWORD --stop-after-init echo "Initialized successfully." - echo "Copying default configuration file to /app/data/odoo.conf..." - cp /app/pkg/odoo.conf.sample /app/data/odoo.conf - echo "Adding required tables/relations for mail settings." pg_cli "INSERT INTO public.res_config_settings (create_uid, create_date, write_uid, write_date, company_id, user_default_rights, external_email_server_default, module_base_import, module_google_calendar, module_microsoft_calendar, module_mail_plugin, module_google_drive, module_google_spreadsheet, module_auth_oauth, module_auth_ldap, module_base_gengo, module_account_inter_company_rules, module_pad, module_voip, module_web_unsplash, module_partner_autocomplete, module_base_geolocalize, module_google_recaptcha, group_multi_currency, show_effect, profiling_enabled_until, module_product_images, unsplash_access_key, fail_counter, alias_domain, restrict_template_rendering, use_twilio_rtc_servers, twilio_account_sid, twilio_account_token, auth_signup_reset_password, auth_signup_uninvited, auth_signup_template_user_id) VALUES (2, 'NOW()', 2, 'NOW()', 1, false, true, true, false, false, false, false, false, false, true, false, false, false, false, true, true, false, false, false, true, NULL, false, NULL, 0, '$CLOUDRON_APP_DOMAIN', false, false, NULL, NULL, false, 'b2c', 5) ON CONFLICT (id) DO NOTHING;" pg_cli "INSERT INTO public.ir_config_parameter (key, value, create_uid, create_date, write_uid, write_date) VALUES ('base_setup.default_external_email_server', 'True', 2, 'NOW()', 2, 'NOW()');" pg_cli "INSERT INTO public.ir_config_parameter (key, value, create_uid, create_date, write_uid, write_date) VALUES ('mail.catchall.domain', '$CLOUDRON_APP_DOMAIN', 2, 'NOW()', 2, 'NOW()');" + echo "Copying default configuration file to /app/data/odoo.conf..." + cp /app/pkg/odoo.conf.sample /app/data/odoo.conf + echo "First run complete." fi @@ -45,7 +45,7 @@ crudini --set /app/data/odoo.conf 'options' addons_path "/app/code/addons,/app/d crudini --set /app/data/odoo.conf 'options' data_dir "/app/data/odoo" # Logging -crudini --set /app/data/odoo.conf 'options' logfile "/run/odoo.log" +crudini --set /app/data/odoo.conf 'options' logfile "/run/logs/odoo.log" crudini --set /app/data/odoo.conf 'options' logrotate 'False' crudini --set /app/data/odoo.conf 'options' log_db 'False' crudini --set /app/data/odoo.conf 'options' syslog 'False' @@ -76,9 +76,9 @@ crudini --set /app/data/odoo.conf 'options' db_filter "^$CLOUDRON_POSTGRESQL_DAT crudini --set /app/data/odoo.conf 'options' db_sslmode 'False' # IMAP Configuration -if [[ -z "${CLOUDRON_MAIL_SMTP_SERVER+x}" ]]; then +if [[ -z "${CLOUDRON_MAIL_IMAP_SERVER+x}" ]]; then echo "IMAP is disabled. Removing values from config." - pg_cli "DELETE FROM public.fetchmail_server WHERE id = 1 AND company = 1" + pg_cli "UPDATE public.fetchmail_server SET active='f' WHERE name LIKE 'Cloudron%';" else echo "IMAP is enabled. Adding values to config." pg_cli "INSERT INTO public.fetchmail_server (id, name, active, state, server, port, server_type, is_ssl, attach, original, date, \"user\", password, object_id, priority, configuration, script, create_uid, create_date, write_uid, write_date) VALUES (1, 'Cloudron IMAP Service', true, 'done', '$CLOUDRON_MAIL_IMAP_SERVER', $CLOUDRON_MAIL_IMAP_PORT, 'imap', false, true, false, NULL, '$CLOUDRON_MAIL_IMAP_USERNAME', '$CLOUDRON_MAIL_IMAP_PASSWORD', 151, 5, NULL, '/mail/static/scripts/odoo-mailgate.py', 2, 'NOW()', 2, 'NOW()') ON CONFLICT (id) DO NOTHING;" @@ -87,11 +87,10 @@ fi # SMTP Configuration if [[ -z "${CLOUDRON_MAIL_SMTP_SERVER+x}" ]]; then echo "SMTP is disabled. Removing values from config." - pg_cli "DELETE FROM public.ir_mail_server WHERE id = 1 AND company = 1" + pg_cli "UPDATE public.ir_mail_server SET active='f' WHERE name LIKE 'Cloudron%';" else echo "SMTP is enabled. Adding values to config." pg_cli "INSERT INTO public.ir_mail_server (id, name, from_filter, smtp_host, smtp_port, smtp_authentication, smtp_user, smtp_pass, smtp_encryption, smtp_ssl_certificate, smtp_ssl_private_key, smtp_debug, sequence, active, create_uid, create_date, write_uid, write_date) VALUES (1, 'Cloudron SMTP Service', NULL, '$CLOUDRON_MAIL_SMTP_SERVER', $CLOUDRON_MAIL_SMTP_PORT, 'login', '$CLOUDRON_MAIL_SMTP_USERNAME', '$CLOUDRON_MAIL_SMTP_PASSWORD', 'none', NULL, NULL, false, 10, true, 2, 'NOW()', 2, 'NOW()') ON CONFLICT (id) DO NOTHING;" - fi # LDAP Configuration @@ -109,6 +108,8 @@ sed -e "s,__REPLACE_WITH_CLOUDRON_APP_DOMAIN__,${CLOUDRON_APP_DOMAIN}," /app/pkg chown -R cloudron:cloudron /app/data echo "=> Start nginx" +rm -f /run/nginx/nginx.pid + nginx -c /run/nginx/nginx.conf & # Done nginx