Initial commit
This commit is contained in:
parent
b82245b263
commit
e90d68e933
10 changed files with 238 additions and 0 deletions
40
README.md
Normal file
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
Odoo for YunoHost
|
||||||
|
----------------------------
|
||||||
|
Warning: This YunoHost app is still in development. Use it at your own risk! I am **not** responsible for any data loss that jeopardizes your organization
|
||||||
|
|
||||||
|
|
||||||
|
**WARNING**: Odoo is a complex app. **DO NOT USE IT** to run your business unless you know what you are doing!!! If you don't, use <a href="https://www.odoo.com/fr_FR/pricing-online#num_users=1&custom_apps=0">the hosted Odoo</a> that will give you peace and customer support!
|
||||||
|
|
||||||
|
|
||||||
|
**Important:** This app MUST be installed on a domain's root!
|
||||||
|
https://odoo.example.com/ will work
|
||||||
|
https://example.com/odoo/ will NOT work
|
||||||
|
|
||||||
|
What does not work
|
||||||
|
------------------
|
||||||
|
Backup and restore
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
Create a database name "subdomain-domain-ltd" (for example "erp-test-com" if you access via erp.test.com)
|
||||||
|
|
||||||
|
Setup LDAP
|
||||||
|
- Create a user named "template" with email "template". This user will give its permissions by default to YunoHost users so you can also give it appropriate rights.
|
||||||
|
- In "Edit Company Data" (on the logo), go to "Configuration" and add a LDAP setting
|
||||||
|
- LDAP Address: localhost
|
||||||
|
- LDAP Port: 389
|
||||||
|
- LDAP Base: ou=users, dc=yunohost,dc=org
|
||||||
|
- LDAP filter: uid=%s
|
||||||
|
- Template user: template
|
||||||
|
- Save
|
||||||
|
|
||||||
|
|
||||||
|
Odoo
|
||||||
|
----
|
||||||
|
|
||||||
|
Odoo is a suite of web based open source business apps.
|
||||||
|
|
||||||
|
The main Odoo Apps include an <a href="https://www.odoo.com/page/crm">Open Source CRM</a>, <a href="https://www.odoo.com/page/website-builder">Website Builder</a>, <a href="https://www.odoo.com/page/e-commerce">eCommerce</a>, <a href="https://www.odoo.com/page/project-management">Project Management</a>, <a href="https://www.odoo.com/page/accounting">Billing & Accounting</a>, <a href="https://www.odoo.com/page/point-of-sale">Point of Sale</a>, <a href="https://www.odoo.com/page/employees">Human Resources</a>, Marketing, Manufacturing, Purchase Management, ...
|
||||||
|
|
||||||
|
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get
|
||||||
|
a full-featured <a href="https://www.odoo.com">Open Source ERP</a> when you install several Apps.
|
13
conf/nginx.conf
Normal file
13
conf/nginx.conf
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:8069/;
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
|
||||||
|
proxy_buffers 16 64k;
|
||||||
|
proxy_buffer_size 128k;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Host $server_name;
|
||||||
|
proxy_read_timeout 999999999;
|
||||||
|
}
|
14
conf/odoo-server.conf
Normal file
14
conf/odoo-server.conf
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[options]
|
||||||
|
; This is the password that allows database operations:
|
||||||
|
admin_passwd = ADMIN_PASSWORD
|
||||||
|
db_host = False
|
||||||
|
db_port = False
|
||||||
|
db_user = odoo
|
||||||
|
db_password = False
|
||||||
|
addons_path = /opt/odoo/addons
|
||||||
|
;Log settings
|
||||||
|
logfile = /var/log/odoo/odoo-server.log
|
||||||
|
log_level = error
|
||||||
|
proxy_mode = true
|
||||||
|
dbfilter = %h
|
||||||
|
init = auth_ldap
|
19
conf/systemd.service
Normal file
19
conf/systemd.service
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Advanced OpenSource ERP and CRM server
|
||||||
|
Requires=postgresql.service
|
||||||
|
After=postgresql.service
|
||||||
|
[Install]
|
||||||
|
Alias=odoo.service
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
PermissionsStartOnly=true
|
||||||
|
EnvironmentFile=-/etc/odoo-server.conf
|
||||||
|
User=odoo
|
||||||
|
Group=odoo
|
||||||
|
SyslogIdentifier=odoo-server
|
||||||
|
PIDFile=/run/odoo/odoo-server.pid
|
||||||
|
ExecStartPre=/usr/bin/install -d -m755 -o odoo -g odoo /run/odoo
|
||||||
|
ExecStart=/usr/local/bin/odoo-server -c /etc/odoo-server.conf --pid=/run/odoo/odoo-server.pid --syslog $OPENERP_ARGS
|
||||||
|
ExecStop=/bin/kill $MAINPID
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
50
manifest.json
Normal file
50
manifest.json
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"name": "Odoo",
|
||||||
|
"id": "odoo",
|
||||||
|
"description": {
|
||||||
|
"en": "Odoo is a suite of business apps (ERP: CRM, Accounting, Point of Sale, HR, Purchases...).",
|
||||||
|
"fr": "Odoo est une collection d'apps de gestion d'entreprise (ERP : CRM, Comptabilité, Point de Vente, RH, Achats, ...)."
|
||||||
|
},
|
||||||
|
"developer": {
|
||||||
|
"name": "scith"
|
||||||
|
},
|
||||||
|
"multi_instance": "false",
|
||||||
|
"arguments": {
|
||||||
|
"install" : [
|
||||||
|
{
|
||||||
|
"name": "domain",
|
||||||
|
"type": "domain",
|
||||||
|
"ask": {
|
||||||
|
"en": "Choose a domain for Odoo (Odoo will be installed on its root!)",
|
||||||
|
"fr": "Choisissez un domaine pour Odoo (Odoo sera installé dans sa racine !)"
|
||||||
|
},
|
||||||
|
"example": "odoo.domain.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "is_public",
|
||||||
|
"ask": {
|
||||||
|
"en": "Is it a public instance of Odoo? (Note: you can NOT run a public e-commerce website with Odoo in a private instance)",
|
||||||
|
"fr": "Est-ce une instance publique d'Odoo ? (Note : vous ne pouvez PAS utiliser Odoo comme site e-commerce dans une instance privée)"
|
||||||
|
},
|
||||||
|
"choices": ["Yes", "No"],
|
||||||
|
"default": "Yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "odoo_version",
|
||||||
|
"ask": {
|
||||||
|
"en": "Which version of Odoo do you want to install?",
|
||||||
|
"fr": "Quelle version d'Odoo souhaitez-vous installer ?"
|
||||||
|
},
|
||||||
|
"choices": ["8.0", "9.0"],
|
||||||
|
"default": "8.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "admin_password",
|
||||||
|
"ask": {
|
||||||
|
"en": "Choose a strong master admin password",
|
||||||
|
"fr": "Choisissez un mot de passe maître fort pour l'administration"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
5
scripts/backup
Normal file
5
scripts/backup
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#! /bin/bash
|
||||||
|
app=docker
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# TO BE DONE
|
76
scripts/install
Normal file
76
scripts/install
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
#!/bin/bash
|
||||||
|
app=docker
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Retrieve arguments
|
||||||
|
domain=$1
|
||||||
|
is_public=$2
|
||||||
|
odoo_version=$3
|
||||||
|
admin_password=$4
|
||||||
|
|
||||||
|
sudo yunohost app checkport 8069
|
||||||
|
if [[ ! $? -eq 0 ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check domain/path availability
|
||||||
|
domain=${domain}"/"
|
||||||
|
sudo yunohost app checkurl $domain -a $app \
|
||||||
|
|| (echo "Path not available: $domain" && exit 1)
|
||||||
|
|
||||||
|
# Remove trailing "/" for next commands
|
||||||
|
domain=${domain%/}
|
||||||
|
sudo yunohost app setting $app domain -v $domain
|
||||||
|
|
||||||
|
# Install Odoo
|
||||||
|
# Install postgresql and create user
|
||||||
|
sudo apt-get install postgresql -y
|
||||||
|
sudo sed -i s/"#listen_addresses = 'localhost'"/"listen_addresses = '*'"/g /etc/postgresql/9.3/main/postgresql.conf
|
||||||
|
sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true
|
||||||
|
|
||||||
|
# Install Odoo dependencies
|
||||||
|
sudo apt-get install python-dateutil python-feedparser python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-docutils python-psutil python-mock python-unittest2 python-jinja2 python-pypdf python-decorator python-requests git-core python-passlib -y
|
||||||
|
sudo pip install gdata
|
||||||
|
|
||||||
|
# Install wkhtopdf to print PDF reports
|
||||||
|
wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-jessie-amd64.deb
|
||||||
|
sudo dpkg -i http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-jessie-amd64.deb
|
||||||
|
sudo apt-get install -y xfonts-75dpi
|
||||||
|
sudo cp /usr/local/bin/wkhtmltopdf /usr/bin
|
||||||
|
sudo cp /usr/local/bin/wkhtmltoimage /usr/bin
|
||||||
|
|
||||||
|
# Create odoo user
|
||||||
|
sudo adduser --system --quiet --shell=/bin/bash --home=/home/odoo --gecos 'ODOO' --group odoo
|
||||||
|
|
||||||
|
# Install Odoo
|
||||||
|
sudo git clone --branch $odoo_version https://www.github.com/odoo/odoo /opt/odoo/
|
||||||
|
sudo chown -R odoo:odoo /opt/odoo
|
||||||
|
|
||||||
|
# Create log file
|
||||||
|
sudo mkdir /var/log/odoo
|
||||||
|
sudo chown -R odoo:odoo /var/log/odoo
|
||||||
|
|
||||||
|
# Create conf file
|
||||||
|
sudo sed -i "s@ADMIN_PASSWORD@$admin_password@g" ../conf/odoo-server.conf
|
||||||
|
sudo cp ../conf/odoo-server.conf /etc/odoo-server.conf
|
||||||
|
sudo chown odoo:odoo /etc/odoo-server.conf
|
||||||
|
|
||||||
|
# Systemd and services
|
||||||
|
# if [ -d /run/systemd/system ]; then
|
||||||
|
# sudo systemctl enable postgresql.service
|
||||||
|
# sudo cp ../conf/systemd.service /etc/systemd/system/odoo.service
|
||||||
|
# sudo systemctl enable odoo.service
|
||||||
|
# fi
|
||||||
|
# sudo yunohost service add postgresql
|
||||||
|
# sudo yunohost service add odoo
|
||||||
|
|
||||||
|
# Configure Nginx and reload
|
||||||
|
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
|
||||||
|
|
||||||
|
if [ "$is_public" = "Yes" ];
|
||||||
|
then
|
||||||
|
sudo yunohost app setting $app skipped_uris -v "/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo service nginx reload
|
||||||
|
echo $?
|
13
scripts/remove
Normal file
13
scripts/remove
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
app=docker
|
||||||
|
|
||||||
|
# TO BE DONE
|
||||||
|
|
||||||
|
# Remove NGINX conf
|
||||||
|
domain=$(sudo yunohost app setting $app domain)
|
||||||
|
sudo rm /etc/nginx/conf.d/$domain.d/$app.conf
|
||||||
|
|
||||||
|
# Reload
|
||||||
|
sudo service nginx reload
|
||||||
|
sudo yunohost app ssowatconf
|
5
scripts/restore
Normal file
5
scripts/restore
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
app=docker
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# TO BE DONE
|
3
scripts/upgrade
Normal file
3
scripts/upgrade
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# TBD
|
Loading…
Reference in a new issue