Hoppa till huvudinnehåll

Dedikerad Server: Installera Odoo (Open Source ERP och CRM) på Linux

Denna guide skapades med följande produkter:

(Detaljer kan variera med produkter från olika leverantörer men huvudkoncepten förblir desamma)

Introduktion

Odoo är en modulär open source-plattform som kombinerar Enterprise Resource Planning (ERP) och Customer Relationship Management (CRM). Den låter företag hantera och automatisera processer som bokföring, lager, projektledning och försäljning från ett och samma system.

Med sina flexibla tillägg kan Odoo anpassas efter specifika behov och erbjuder en integrerad lösning för att hantera alla delar av ett företag.

img

Fundera på att hosta tjänsten själv? Vi guidar dig steg för steg genom installation och konfiguration, samt allt du behöver ha koll på.

Förutsättningar

Innan du installerar Odoo, se till att din hostingmiljö uppfyller följande krav för en smidig installation och optimal prestanda.

HårdvaraMinimikravRekommenderat
CPU1 vCPU-kärna4 vCPU-kärnor
RAM1 GB4 GB
Diskutrymme15 GB25 GB

Mjukvaran kräver att alla nödvändiga beroenden är installerade och att den körs på ett stöds operativsystem. Säkerställ att din server uppfyller följande innan du fortsätter med installationen:

Beroenden: Docker

Operativsystem: Senaste versionen av Ubuntu/Debian som stödjer Docker 26+

Se till att alla beroenden är installerade och att rätt OS-version används för att undvika kompatibilitetsproblem vid installation av Odoo.

Förberedelser

Innan du sätter upp Odoo behöver du förbereda systemet. Det innebär att uppdatera operativsystemet till senaste versionen och installera alla nödvändiga beroenden. Dessa förberedelser säkerställer en stabil miljö och minskar risken för problem under eller efter installationen.

Uppdatera systemet

För att säkerställa att ditt system kör den senaste mjukvaran och säkerhetsuppdateringarna bör du alltid börja med att uppdatera systemet. Kör följande kommando:

sudo apt update && sudo apt upgrade -y

Detta ser till att systemet har de senaste säkerhetspatcharna och mjukvaruversionerna innan du går vidare.

Installera beroenden

När uppdateringen är klar kan du installera beroenden. Odoo kommer att köras i Docker-containrar, så Docker måste installeras först. Kör följande kommandon:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

En komplett guide för installation och användning av Docker finns i vår Docker-guide.

Konfigurera din domän

Som standard kör Odoo på servern via portarna 80 (HTTP) och 443 (HTTPS). Sätt upp en domän med DNS-poster som pekar till servern. Om domänen hanteras av oss kan du enkelt göra detta via EasyDNS.

Installation

När alla krav är uppfyllda och förberedelserna klara kan du fortsätta med installationen av Odoo.

När du jobbar med flera Docker-projekt är det smart att ha en tydlig mappstruktur för att hålla projekten isolerade. En vanlig metod är att skapa en docker-mapp i användarens hemkatalog, med en egen undermapp för varje domän. På så sätt kan flera projekt hostas på samma server utan konfigurationskonflikter.

Exempel för att förbereda strukturen för domänen example.com:

mkdir -p /docker/example.com
cd /docker/example.com

Inom projektmappen rekommenderas att skapa undermappar som mountas som volymer i containrarna. Dessa volymer gör att data kan delas mellan tjänster eller sparas permanent. Ett viktigt exempel är den delade webrooten som både nginx och certbot behöver för att skapa och förnya SSL-certifikat. En lämplig struktur kan skapas så här:

mkdir -p nginx/{conf,ssl,inc} config addons

Det ger dedikerade mappar för nginx-konfiguration, SSL-certifikat, inkluderingsfiler och Odoo-specifikt innehåll som configs och addons.

Skapa Docker Compose

I din docker-projektmapp skapar du filen compose.yml med nano compose.yml. Klistra in följande kod:

services:
db:
image: postgres:16
ports:
- "5432:5432"
environment:
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data

odoo:
image: odoo:18.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
command: odoo -d odoo_db -i base --db_user=odoo --db_password=odoo --db_host=db

nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/inc:/etc/nginx/inc
- ./nginx/ssl:/etc/nginx/ssl
- ./nginx/certbot/www:/var/www/certbot
- ./nginx/certbot/conf:/etc/letsencrypt
depends_on:
- odoo

certbot:
image: certbot/certbot
volumes:
- ./nginx/certbot/www:/var/www/certbot
- ./nginx/certbot/conf:/etc/letsencrypt

volumes:
odoo-db-data:
odoo-web-data:

Brandvägg

För att nginx och certbot ska fungera måste TCP-portarna 80 (HTTP) och 443 (HTTPS) tillåtas genom brandväggen. Dessa portar är viktiga eftersom certbot använder port 80 för HTTP-validering och port 443 krävs för krypterad HTTPS-trafik. Om UFW (Uncomplicated Firewall) är aktiverat kan du lägga till reglerna med:

sudo ufw allow http
sudo ufw allow https

Kontrollera sedan med sudo ufw status att portarna är öppna. Se till att inga andra brandväggsregler blockerar dessa portar, annars kan certifikatgenerering eller säker HTTPS-trafik misslyckas.

Nginx-konfiguration

Börja med att skapa en konfigurationsfil för din domän i nginx/conf. Skapa en fil med domännamnet, t.ex. nano nginx/conf/example.com.conf, och lägg in följande grundläggande direktiv, byt ut example.com mot din domän:

server {
listen 80;
server_name example.com;

location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

location / {
return 301 https://$host$request_uri;
}
}

Denna konfiguration låter certbot slutföra ACME-utmaningen och utfärda giltiga SSL-certifikat. Den ser också till att all HTTP-trafik omdirigeras till HTTPS.

När filen sparats startar du de nödvändiga containrarna: databasen, Odoo och nginx:

sudo docker compose up -d db odoo nginx

Containrarna körs i bakgrunden och nginx använder redan den nya konfigurationen, vilket gör att certbot kan skapa certifikat i nästa steg.

Skapa SSL-certifikat

Kör kommandot nedan för att skapa SSL-certifikat med certbot. Byt ut example.com mot din domän och user@mail.com mot din giltiga e-postadress.

sudo docker compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot -d example.com --email user@mail.com --agree-tos --no-eff-email

Skapa sedan en dedikerad DH-parameterfil för att stärka säkerheten vid nyckelutbytet:

openssl dhparam -out nginx/ssl/dhparam.pem 2048

Skapa nu filen ssl.conf med nano nginx/ssl/ssl.conf och lägg in följande innehåll. Byt ut example.com mot din domän:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:prime256v1:secp384r1;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_dhparam "/etc/nginx/ssl/dhparam.pem";
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 1.0.0.1 valid=300s;

Konfiguration

Nginx-konfiguration

Redigera nginx-konfigurationsfilen du skapade tidigare och ersätt innehållet med följande för att säkerställa att din sida endast serveras över HTTPS.

Kom ihåg att byta ut example.com mot din riktiga domän i server_name och ange korrekta sökvägar till certifikatfilerna i ssl_certificate och ssl_certificate_key.

server {
listen 443 ssl;
http2 on;
server_name example.com;

# Inkludera Mozillas SSL-inställningar
include /etc/nginx/ssl/ssl.conf;

# Certifikatvägar (se till att de matchar dina mountade volymer)
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

# Säkerhetsheaders
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;

#Gzip
include /etc/nginx/inc/gzip.conf;

# Proxyinställningar för Odoo
location / {
proxy_pass http://odoo:8069;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_redirect off;
proxy_request_buffering off;
# Rekommenderade timeouts för standardförfrågningar
proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
send_timeout 60s;
}

# Cache för statiska filer
location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo:8069;
}

# Öka timeouts för long polling
location /longpolling {
proxy_pass http://odoo:8069;
proxy_connect_timeout 60s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
}

location /websocket {
proxy_pass http://odoo:8069;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

server {
listen 80;
server_name example.com;

# Tillåter Certbot att nå challenge-URL:en
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

location / {
return 301 https://$host$request_uri;
}
}

När du sparat ändringarna i nginx-konfigurationen måste du ladda om inställningarna genom att starta om nginx-containern:

sudo docker compose restart nginx

Omstarten ser till att nginx laddar den uppdaterade konfigurationen och börjar direkt servera med nya inställningar. Håll koll på eventuella felmeddelanden under omstarten. Om problem uppstår kan du kolla loggarna med sudo docker compose logs nginx för felsökning. När containern kör utan fel, testa din webbplats för att bekräfta att HTTPS fungerar och sidan serveras som den ska.

Odoo-konfigurationsalternativ

För att lägga till egna inställningar kan du skapa en dedikerad konfigurationsfil för Odoo. Skapa en ny fil på config/odoo.conf och lägg in önskade alternativ.

I filen kan du definiera flera användbara parametrar: list_db = False döljer databasvalet på inloggningssidan, proxy_mode = True talar om för Odoo att den körs bakom en reverse proxy, och om du vill använda egna addons kan du avkommentera raden addons_path och peka den till addons-mappen du skapade tidigare. Exempel:

[options]
list_db = False
proxy_mode = True
#addons_path = /mnt/extra-addons

Ta bort -i base-flaggan

Flaggan -i base måste tas bort från compose.yml-filen, annars skapas databasen om varje gång du startar om Odoo-containern. För att ta bort den, öppna compose-filen med nano compose.yml och ändra kommandot till:

command: odoo -d odoo_db --db_user=odoo --db_password=odoo --db_host=db

Åtkomst till webbplatsen

När installation och konfiguration är klar och alla tjänster körs kan du säkert nå din webbplats genom att skriva in din domän i webbläsarens adressfält.

img

Detta laddar startsidan för din nya installation. För första inloggningen finns ett standardkonto med användarnamn admin och lösenord admin. Vi rekommenderar starkt att du byter dessa direkt.

Avslutning och fler resurser

Grattis! Du har nu installerat och konfigurerat Odoo på din dedikerade server. Vi rekommenderar också att du kollar in följande resurser som kan ge dig extra hjälp och tips under serverkonfigurationen:

Har du frågor som inte täcks här? Tveka inte att kontakta vår support, som finns tillgänglig varje dag för att hjälpa dig! 🙂