Compare commits
1164 Commits
18.0
...
16.0-tax-r
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b9af87eaf9 | ||
![]() |
beeeff9068 | ||
![]() |
daebf2e579 | ||
![]() |
9f18e77815 | ||
![]() |
1ac6e5e975 | ||
![]() |
dd94839b20 | ||
![]() |
a04b9e1f2f | ||
![]() |
6cc9c9a75e | ||
![]() |
f552c117a8 | ||
![]() |
108f731916 | ||
![]() |
d1779bf4e5 | ||
![]() |
2e3e7ad35c | ||
![]() |
08c43b3deb | ||
![]() |
a6f1cd2cf9 | ||
![]() |
50daadf7d1 | ||
![]() |
2b04033868 | ||
![]() |
f8cb28ce14 | ||
![]() |
208c1b8e81 | ||
![]() |
7dfc3fe2c9 | ||
![]() |
06a3323dcb | ||
![]() |
c22f90137b | ||
![]() |
92a90f60e8 | ||
![]() |
5769e8f617 | ||
![]() |
b923389182 | ||
![]() |
e953d8f838 | ||
![]() |
4d079db7f8 | ||
![]() |
cbcf64e750 | ||
![]() |
738703df14 | ||
![]() |
8c93ff790e | ||
![]() |
724f7000d7 | ||
![]() |
470af9bf21 | ||
![]() |
e0b025fce0 | ||
![]() |
4e92457ed8 | ||
![]() |
20bd9b1780 | ||
![]() |
bfd78d2f9b | ||
![]() |
db38d06045 | ||
![]() |
ac8f3d2aa4 | ||
![]() |
e0b26c78b6 | ||
![]() |
f83f35955e | ||
![]() |
33ef1f8918 | ||
![]() |
15bc972085 | ||
![]() |
74437b0e74 | ||
![]() |
e662ebe70c | ||
![]() |
77e4f66a5a | ||
![]() |
04a8e4657f | ||
![]() |
392fb6ae15 | ||
![]() |
cc259daa66 | ||
![]() |
e2fdcb019e | ||
![]() |
0afd7c1f78 | ||
![]() |
154b223e6b | ||
![]() |
544e2c18d0 | ||
![]() |
412d7aed02 | ||
![]() |
1957ca8424 | ||
![]() |
bd4e39d52f | ||
![]() |
b870ae43bc | ||
![]() |
4feccc3996 | ||
![]() |
85cef1bc5b | ||
![]() |
f516c71c37 | ||
![]() |
58e4468997 | ||
![]() |
1377ac0903 | ||
![]() |
4a29ac6fee | ||
![]() |
e95f4d715c | ||
![]() |
36b8f5187c | ||
![]() |
92dce1d630 | ||
![]() |
d8b827cda4 | ||
![]() |
e13f9de4df | ||
![]() |
582c44f05e | ||
![]() |
c7b36d6a68 | ||
![]() |
fc8449c974 | ||
![]() |
60ce9c91a6 | ||
![]() |
efe4e4a4bc | ||
![]() |
a2dd83efd9 | ||
![]() |
5ea7cefa23 | ||
![]() |
70905915c4 | ||
![]() |
cdd4a16bda | ||
![]() |
e82d329a53 | ||
![]() |
ebbb05f300 | ||
![]() |
1d40ce68e1 | ||
![]() |
317197adb0 | ||
![]() |
690ffd82dd | ||
![]() |
d7fb94d5bb | ||
![]() |
1894e98869 | ||
![]() |
f6833d70d5 | ||
![]() |
abf2e868b8 | ||
![]() |
e41e618116 | ||
![]() |
b2f20be2fe | ||
![]() |
b9b8c79dd6 | ||
![]() |
a878b4d6c4 | ||
![]() |
79828e3ea5 | ||
![]() |
c353ef2640 | ||
![]() |
0fa009769f | ||
![]() |
b4e29f35d6 | ||
![]() |
b2c205e67c | ||
![]() |
947f4ff52a | ||
![]() |
c96a65f04a | ||
![]() |
3249b5af36 | ||
![]() |
a8884982ba | ||
![]() |
0665e787a9 | ||
![]() |
28c7ce5e80 | ||
![]() |
310d58657b | ||
![]() |
f14a2ac9e0 | ||
![]() |
2119d866d9 | ||
![]() |
3fead9fe4d | ||
![]() |
e0cffd20ac | ||
![]() |
fb5088a451 | ||
![]() |
4cec4fe764 | ||
![]() |
ab2fe5c506 | ||
![]() |
8b7c9867f9 | ||
![]() |
4a2c54ffda | ||
![]() |
b2054e39d7 | ||
![]() |
ae0e20208a | ||
![]() |
534b25b9b4 | ||
![]() |
9b829ce685 | ||
![]() |
debe0e65bc | ||
![]() |
c912d56027 | ||
![]() |
c05ccb8d2a | ||
![]() |
944ca268bc | ||
![]() |
015ce987e2 | ||
![]() |
da4bccca8d | ||
![]() |
a12154e0ed | ||
![]() |
01191af74e | ||
![]() |
4920915760 | ||
![]() |
a00aef06c3 | ||
![]() |
b41308d60f | ||
![]() |
70c736d57a | ||
![]() |
c70a77153e | ||
![]() |
120fa7e2b6 | ||
![]() |
44c2b65fa0 | ||
![]() |
2fd4af7619 | ||
![]() |
df145bf622 | ||
![]() |
0451d1f2a8 | ||
![]() |
bea85886d4 | ||
![]() |
b37934a7d9 | ||
![]() |
1c927fa911 | ||
![]() |
e0ab879c54 | ||
![]() |
c84d525452 | ||
![]() |
fda2534a74 | ||
![]() |
21779a5eb6 | ||
![]() |
28634eca60 | ||
![]() |
13ddb59da9 | ||
![]() |
7566002f49 | ||
![]() |
10c7321ca4 | ||
![]() |
03f5c0660e | ||
![]() |
58990cb4c6 | ||
![]() |
8ebc2d20b1 | ||
![]() |
50b8a2100d | ||
![]() |
fa64368f21 | ||
![]() |
363483c4aa | ||
![]() |
afe32dfbeb | ||
![]() |
31485036f3 | ||
![]() |
95e348eb51 | ||
![]() |
a727f25be8 | ||
![]() |
8e143196f1 | ||
![]() |
0e6358b6cb | ||
![]() |
eb1eb38cce | ||
![]() |
df99292384 | ||
![]() |
95dd9329de | ||
![]() |
1394d4813a | ||
![]() |
6f48100e70 | ||
![]() |
f39139aea9 | ||
![]() |
dc0dec9d65 | ||
![]() |
c770eb5618 | ||
![]() |
6078b9107c | ||
![]() |
48d4fb5269 | ||
![]() |
e81e85a734 | ||
![]() |
9d183db1ab | ||
![]() |
3d5841894d | ||
![]() |
506ccf71dd | ||
![]() |
109c82776a | ||
![]() |
b4704c4424 | ||
![]() |
d8b44a0e4b | ||
![]() |
e9a0606f32 | ||
![]() |
6305211a1e | ||
![]() |
777eae22c5 | ||
![]() |
c2691c5ef3 | ||
![]() |
ba996c0266 | ||
![]() |
abf62125ea | ||
![]() |
d71c19b7be | ||
![]() |
079ca0cc0c | ||
![]() |
214fed5fdf | ||
![]() |
4f3c0b0e16 | ||
![]() |
b0927964c6 | ||
![]() |
1cedbcce58 | ||
![]() |
b5a80eed7b | ||
![]() |
62386aae3e | ||
![]() |
a39903ca12 | ||
![]() |
e16a66706a | ||
![]() |
ee2b0e4a66 | ||
![]() |
3c530a6473 | ||
![]() |
f5fa1cdc89 | ||
![]() |
b798b37111 | ||
![]() |
c6754134c5 | ||
![]() |
44c8ee26d1 | ||
![]() |
a261ffd256 | ||
![]() |
5a78b0fd73 | ||
![]() |
fcd9b40293 | ||
![]() |
77d824bd67 | ||
![]() |
868bf74d3d | ||
![]() |
8bec283166 | ||
![]() |
9865c8ee4e | ||
![]() |
53747b1818 | ||
![]() |
bc0119ffdf | ||
![]() |
8984c27df9 | ||
![]() |
8aff258cfe | ||
![]() |
b7c065c2ba | ||
![]() |
93c42b6e17 | ||
![]() |
5bed8eb25b | ||
![]() |
446a134a0d | ||
![]() |
77cee2f00c | ||
![]() |
b360ff1042 | ||
![]() |
ecc993ee35 | ||
![]() |
791e784f2f | ||
![]() |
9e312a0bdc | ||
![]() |
eeda8eb4df | ||
![]() |
9d22bf9e14 | ||
![]() |
04a4e53272 | ||
![]() |
453c9eda65 | ||
![]() |
65cf53b52c | ||
![]() |
faf723225e | ||
![]() |
4d7926f159 | ||
![]() |
388253665e | ||
![]() |
ca1d8adf7e | ||
![]() |
133d363669 | ||
![]() |
91a48bfe88 | ||
![]() |
3352d33997 | ||
![]() |
6acf37c0a4 | ||
![]() |
3f218b3b07 | ||
![]() |
09f5c15e90 | ||
![]() |
f7bc929e00 | ||
![]() |
d7ecfaa1c5 | ||
![]() |
59108aedda | ||
![]() |
15a12a7b10 | ||
![]() |
3464bb553f | ||
![]() |
490f337fb4 | ||
![]() |
c8ad3af954 | ||
![]() |
2036073955 | ||
![]() |
50a8171f02 | ||
![]() |
d6e9edf7b8 | ||
![]() |
4cf0551c04 | ||
![]() |
a1dc78b1ac | ||
![]() |
34f2fb7561 | ||
![]() |
a7695142bb | ||
![]() |
e2341f4511 | ||
![]() |
88e9b69855 | ||
![]() |
2f7e5a6815 | ||
![]() |
7f22528e73 | ||
![]() |
307e264241 | ||
![]() |
a451ad2dab | ||
![]() |
a67c1c7f19 | ||
![]() |
d56d85da69 | ||
![]() |
9e56f571b4 | ||
![]() |
74c0af7429 | ||
![]() |
3a98d49f83 | ||
![]() |
e30c87800d | ||
![]() |
c779852011 | ||
![]() |
2733aac1fc | ||
![]() |
d34c588849 | ||
![]() |
6ebc4d7b19 | ||
![]() |
8a0d3598a6 | ||
![]() |
48a4e94d56 | ||
![]() |
ff54eee8de | ||
![]() |
962a1cce66 | ||
![]() |
0ec8579b92 | ||
![]() |
91f0f5d194 | ||
![]() |
2fad56f841 | ||
![]() |
1c5714ed66 | ||
![]() |
39910d1e7b | ||
![]() |
556ee18406 | ||
![]() |
0ddecbc6fc | ||
![]() |
88fa5d6e0a | ||
![]() |
08c671fe4e | ||
![]() |
4a98887b9b | ||
![]() |
f806b9dcfa | ||
![]() |
7b3f3f09db | ||
![]() |
8deb666761 | ||
![]() |
b4c90a16e5 | ||
![]() |
a33955ec82 | ||
![]() |
6689684b0c | ||
![]() |
76bf27e87c | ||
![]() |
fa1461021e | ||
![]() |
bf8491feda | ||
![]() |
3b3896bb15 | ||
![]() |
32aafb08cb | ||
![]() |
7b5dba47a7 | ||
![]() |
f7be6a3a78 | ||
![]() |
256c96b56f | ||
![]() |
ec300e06de | ||
![]() |
43f2ecd375 | ||
![]() |
e60affa6fe | ||
![]() |
a8659727e3 | ||
![]() |
c00571d724 | ||
![]() |
4f15ba1eea | ||
![]() |
03a871a88b | ||
![]() |
c6f5eaaf9a | ||
![]() |
4efd4c2788 | ||
![]() |
680573ff40 | ||
![]() |
43b5825a4c | ||
![]() |
eb41f30593 | ||
![]() |
65960a2726 | ||
![]() |
786a9086e9 | ||
![]() |
6f8118fba6 | ||
![]() |
fff87ea667 | ||
![]() |
5407222f9c | ||
![]() |
4a3284230e | ||
![]() |
d3b848786b | ||
![]() |
b26bb4d797 | ||
![]() |
81de2a5bbe | ||
![]() |
fb82f91847 | ||
![]() |
4dc8875b42 | ||
![]() |
34e9ab6754 | ||
![]() |
a12f7925ca | ||
![]() |
df615b8b9c | ||
![]() |
98994fbbaa | ||
![]() |
7fe59a5ec9 | ||
![]() |
d5df27bc9b | ||
![]() |
c3e77cb48b | ||
![]() |
8fc153c7ad | ||
![]() |
1799e47028 | ||
![]() |
b8909aa7be | ||
![]() |
dbfcdc22d5 | ||
![]() |
c966184d3c | ||
![]() |
5f6dfc7880 | ||
![]() |
cf63a97952 | ||
![]() |
1bf87a0db9 | ||
![]() |
49b057b80d | ||
![]() |
c1ba4c61ae | ||
![]() |
64afeaebb0 | ||
![]() |
03e9a8fd2b | ||
![]() |
4cbbd98dee | ||
![]() |
16a209c750 | ||
![]() |
a838df1660 | ||
![]() |
5ec37fbb7f | ||
![]() |
95cbc584f4 | ||
![]() |
c9dc6dc195 | ||
![]() |
9f09422920 | ||
![]() |
f3b40b5399 | ||
![]() |
c608df663b | ||
![]() |
f097e22df0 | ||
![]() |
786df1f373 | ||
![]() |
a7af9a59ff | ||
![]() |
38bd71fa13 | ||
![]() |
9c16edbf7b | ||
![]() |
73c08327d4 | ||
![]() |
4b98180756 | ||
![]() |
2e1d337ed0 | ||
![]() |
b01133bfef | ||
![]() |
a61189725a | ||
![]() |
cce392c303 | ||
![]() |
955ec07a4d | ||
![]() |
505547264e | ||
![]() |
2ef7150ebf | ||
![]() |
44f4683519 | ||
![]() |
53656d7065 | ||
![]() |
1596413d4b | ||
![]() |
ca160e4e1a | ||
![]() |
3c3c559d3b | ||
![]() |
ff0f90f3b3 | ||
![]() |
e2029ce5f7 | ||
![]() |
69a9a03e1a | ||
![]() |
4bc2742413 | ||
![]() |
4073e9dfb1 | ||
![]() |
2a32362e28 | ||
![]() |
0311faee2f | ||
![]() |
7a5d891206 | ||
![]() |
81d201efc4 | ||
![]() |
d311926f37 | ||
![]() |
faa88b6a3f | ||
![]() |
3defec8a1d | ||
![]() |
04401626e5 | ||
![]() |
4f03fc59d4 | ||
![]() |
30fd7112af | ||
![]() |
df58ae965c | ||
![]() |
110146cb2d | ||
![]() |
6d5f38fa88 | ||
![]() |
2f2d3d2267 | ||
![]() |
911cb2c26e | ||
![]() |
5cfe3dbf3f | ||
![]() |
55600e428d | ||
![]() |
ec18f20bf5 | ||
![]() |
5413bd1c5d | ||
![]() |
8167182ae9 | ||
![]() |
ca1554271b | ||
![]() |
5e7b7e6098 | ||
![]() |
648f20a832 | ||
![]() |
70050340fe | ||
![]() |
76fc90dde7 | ||
![]() |
6968e362da | ||
![]() |
c2c835c2d6 | ||
![]() |
bddbe0fd45 | ||
![]() |
a728ac22dd | ||
![]() |
1c00f06816 | ||
![]() |
fabe484b75 | ||
![]() |
229e65a5aa | ||
![]() |
b9a9da8808 | ||
![]() |
2edce38648 | ||
![]() |
d615bc0f6d | ||
![]() |
18aad6d5f2 | ||
![]() |
f3f44fe5f2 | ||
![]() |
09c42c5896 | ||
![]() |
6cf4d56153 | ||
![]() |
a7c3f818da | ||
![]() |
cb87e208bf | ||
![]() |
053fb768e6 | ||
![]() |
a28339b44b | ||
![]() |
ba95cb33d5 | ||
![]() |
59791c252b | ||
![]() |
4e85ef01e8 | ||
![]() |
bbbb00e752 | ||
![]() |
9fc9c2f52d | ||
![]() |
e6a6b9b453 | ||
![]() |
e1bed7ee7c | ||
![]() |
22d41dc2f3 | ||
![]() |
1e2a29338e | ||
![]() |
039dba0780 | ||
![]() |
a4a9335dd1 | ||
![]() |
ff2cabf621 | ||
![]() |
af7c7afa34 | ||
![]() |
e5d77ee285 | ||
![]() |
27a307cb0c | ||
![]() |
f9013a6309 | ||
![]() |
ade6af5b30 | ||
![]() |
df8114e591 | ||
![]() |
88f546f2a9 | ||
![]() |
a2f895f644 | ||
![]() |
80f195831e | ||
![]() |
a4b3008101 | ||
![]() |
c1fe28dd50 | ||
![]() |
33a9e1f017 | ||
![]() |
4b7668d6a8 | ||
![]() |
4118cb9bf9 | ||
![]() |
2377fa1bb8 | ||
![]() |
71446b0668 | ||
![]() |
3ead6e0f99 | ||
![]() |
a149164866 | ||
![]() |
620508fb29 | ||
![]() |
8707609b38 | ||
![]() |
e413418e1e | ||
![]() |
12670b1299 | ||
![]() |
4e2b634a50 | ||
![]() |
56cda37610 | ||
![]() |
32900efbb9 | ||
![]() |
5612ce8dd8 | ||
![]() |
75c24e7e88 | ||
![]() |
78713f1637 | ||
![]() |
b96de8b50e | ||
![]() |
1a11e3c35c | ||
![]() |
f38bae5e8d | ||
![]() |
cd11937f43 | ||
![]() |
d287d0807a | ||
![]() |
a11fa7e5b2 | ||
![]() |
815f4c89b7 | ||
![]() |
9081e45aab | ||
![]() |
1a32165180 | ||
![]() |
17f958aa80 | ||
![]() |
9761eb44dc | ||
![]() |
f1960a250c | ||
![]() |
a20952ccfa | ||
![]() |
f0b895fdb2 | ||
![]() |
e0b8f766a1 | ||
![]() |
bc98b8c491 | ||
![]() |
3e3198af2c | ||
![]() |
b2dbd4b466 | ||
![]() |
a113d83fea | ||
![]() |
efde0488a6 | ||
![]() |
b617ebcdd4 | ||
![]() |
0241c9dd05 | ||
![]() |
2aa71a3cfc | ||
![]() |
b79264fdcf | ||
![]() |
95c805131c | ||
![]() |
392e99f907 | ||
![]() |
c07aa72163 | ||
![]() |
d9bdaee6b7 | ||
![]() |
83873dbd71 | ||
![]() |
cd881656b8 | ||
![]() |
df474342ba | ||
![]() |
282f041ed1 | ||
![]() |
f5603c736c | ||
![]() |
41aebc3b05 | ||
![]() |
907e1ba854 | ||
![]() |
b67e860d47 | ||
![]() |
6a5c340a26 | ||
![]() |
9df648b4c7 | ||
![]() |
fc9bbb7d22 | ||
![]() |
7a307320c3 | ||
![]() |
eff8e9d915 | ||
![]() |
378252afdf | ||
![]() |
216eb6edfb | ||
![]() |
885e52530b | ||
![]() |
dcee09e597 | ||
![]() |
7a936c9f70 | ||
![]() |
4abe6da354 | ||
![]() |
30375fd770 | ||
![]() |
83ed4973f4 | ||
![]() |
02fe31a422 | ||
![]() |
d22473b4fd | ||
![]() |
e24e708a14 | ||
![]() |
5086943de0 | ||
![]() |
7148aee276 | ||
![]() |
c2ad28da23 | ||
![]() |
d2124b9e68 | ||
![]() |
12c633edda | ||
![]() |
6f3ed657fc | ||
![]() |
2925c3e212 | ||
![]() |
a5272c2845 | ||
![]() |
ab05778363 | ||
![]() |
221464545f | ||
![]() |
6a2725e604 | ||
![]() |
ae058cba51 | ||
![]() |
94af36625c | ||
![]() |
9a195fb7b3 | ||
![]() |
c254c6fa05 | ||
![]() |
3b56832297 | ||
![]() |
b9e312f944 | ||
![]() |
86d2210150 | ||
![]() |
f7c04b1e35 | ||
![]() |
38e00b7c45 | ||
![]() |
590fc79726 | ||
![]() |
caf2e69d1f | ||
![]() |
cade61dd56 | ||
![]() |
24c7b2506e | ||
![]() |
7a6c0a9247 | ||
![]() |
9b0f902c4e | ||
![]() |
1d14941e41 | ||
![]() |
00c16a5ba1 | ||
![]() |
34f79539f2 | ||
![]() |
ca2feb8dd4 | ||
![]() |
7b67d69abd | ||
![]() |
e0d6f97dfc | ||
![]() |
3f6126e90b | ||
![]() |
8e9ae99423 | ||
![]() |
923839f2cf | ||
![]() |
06d4767d5b | ||
![]() |
407534595a | ||
![]() |
353e3b6eaa | ||
![]() |
25330276d2 | ||
![]() |
f27b11d6c7 | ||
![]() |
4ca449e910 | ||
![]() |
3b007e85c6 | ||
![]() |
6d0ae236b5 | ||
![]() |
f2dd5ce5ea | ||
![]() |
28cca3d5bd | ||
![]() |
09c9c445a4 | ||
![]() |
21c4917a70 | ||
![]() |
88e8a80040 | ||
![]() |
12f3b1beb7 | ||
![]() |
c406882390 | ||
![]() |
e689c98a05 | ||
![]() |
fe7f72bf63 | ||
![]() |
c1c04f90a8 | ||
![]() |
d538ed070e | ||
![]() |
88c2aacbf5 | ||
![]() |
866da5815e | ||
![]() |
ae4d98f1fb | ||
![]() |
0433155eab | ||
![]() |
38b1fdb227 | ||
![]() |
934a4d2df4 | ||
![]() |
d8e71d6063 | ||
![]() |
ff0eee15c3 | ||
![]() |
44ef78b391 | ||
![]() |
cae0edcc83 | ||
![]() |
c60ec48c9d | ||
![]() |
4f677d9d3f | ||
![]() |
5c4d88a1f0 | ||
![]() |
5b51f9077a | ||
![]() |
4a42a9c327 | ||
![]() |
ac6d78f4d4 | ||
![]() |
ea03bcd579 | ||
![]() |
46e435dfd3 | ||
![]() |
b9cb5ffa1c | ||
![]() |
f74e9568c0 | ||
![]() |
7287989ea4 | ||
![]() |
7ea55ea650 | ||
![]() |
ac53c6f12e | ||
![]() |
b559f00948 | ||
![]() |
c926e34635 | ||
![]() |
7eb22a3737 | ||
![]() |
7c050622ed | ||
![]() |
32b92f5959 | ||
![]() |
c0131223e9 | ||
![]() |
da2a48b9fd | ||
![]() |
e4ebe9f277 | ||
![]() |
bb04b18e7f | ||
![]() |
2b6c17eebf | ||
![]() |
cf4a7a94a1 | ||
![]() |
98d0d59188 | ||
![]() |
8b8c11efa9 | ||
![]() |
e52d8f172f | ||
![]() |
56eed9771e | ||
![]() |
4081ec3f17 | ||
![]() |
7babf06b44 | ||
![]() |
8b1875d5e2 | ||
![]() |
4b726b044d | ||
![]() |
ffa15c6b76 | ||
![]() |
efb7162ca0 | ||
![]() |
943f6b1e7a | ||
![]() |
e54d5065c8 | ||
![]() |
5cd8f80b53 | ||
![]() |
90797b5740 | ||
![]() |
fdb16b8132 | ||
![]() |
29d884c548 | ||
![]() |
b1cad7ec29 | ||
![]() |
ec33990d21 | ||
![]() |
df9adf6d59 | ||
![]() |
acc2c7994a | ||
![]() |
d80403e23f | ||
![]() |
22c811b698 | ||
![]() |
465e7e70c4 | ||
![]() |
e314289fc4 | ||
![]() |
e807298fbb | ||
![]() |
51406e3d42 | ||
![]() |
5211a71e44 | ||
![]() |
f93c0a6490 | ||
![]() |
5a2e7b0512 | ||
![]() |
91895e7f86 | ||
![]() |
7c1bcbfc1b | ||
![]() |
e3c5cc2784 | ||
![]() |
8d25366adb | ||
![]() |
4cb7b3af3d | ||
![]() |
8c03442791 | ||
![]() |
223bfaee7c | ||
![]() |
6ed928ac55 | ||
![]() |
a7743d513b | ||
![]() |
471d68e186 | ||
![]() |
c2ff2671ff | ||
![]() |
26c4c01889 | ||
![]() |
5ee932e14b | ||
![]() |
2e9c99c941 | ||
![]() |
bd434b0528 | ||
![]() |
1227c9cf79 | ||
![]() |
10e6f02841 | ||
![]() |
0a65b0872d | ||
![]() |
7ce5a5afe4 | ||
![]() |
c85031b3fc | ||
![]() |
a187b7cde4 | ||
![]() |
29db8bf1e6 | ||
![]() |
222fd67d7f | ||
![]() |
7d8072ea29 | ||
![]() |
481a867a05 | ||
![]() |
22d45407c4 | ||
![]() |
b82d36c174 | ||
![]() |
bbe9d4ba93 | ||
![]() |
9db7381ea4 | ||
![]() |
ca38752795 | ||
![]() |
dd268b543c | ||
![]() |
bc0da5c27d | ||
![]() |
35989e4bec | ||
![]() |
dc9e98d48d | ||
![]() |
5af98b20de | ||
![]() |
1844ad5e47 | ||
![]() |
11d8c153e2 | ||
![]() |
f3e3490ba4 | ||
![]() |
9c9e78246e | ||
![]() |
22f71172d5 | ||
![]() |
18e5f34ed6 | ||
![]() |
da31abfba5 | ||
![]() |
729881c7b1 | ||
![]() |
710c373354 | ||
![]() |
6c15190f38 | ||
![]() |
ba3a60adf7 | ||
![]() |
88da0a9256 | ||
![]() |
2e90b83b0e | ||
![]() |
e6372144cf | ||
![]() |
e8aaefd283 | ||
![]() |
1c98265c95 | ||
![]() |
77fe26c390 | ||
![]() |
023e03549a | ||
![]() |
7a53850477 | ||
![]() |
1e201095b3 | ||
![]() |
c24f4b237e | ||
![]() |
b19ba95d0e | ||
![]() |
0e128b803d | ||
![]() |
bafe824f38 | ||
![]() |
1853f226e7 | ||
![]() |
0433e84a0c | ||
![]() |
4c750d1bb7 | ||
![]() |
1a5952ee95 | ||
![]() |
19b1a49436 | ||
![]() |
242c13bfc0 | ||
![]() |
3ba81b3394 | ||
![]() |
e074580ffb | ||
![]() |
eb6c567ee2 | ||
![]() |
9f8bf0a307 | ||
![]() |
b745bd9fef | ||
![]() |
35deec4c3d | ||
![]() |
d084c105d9 | ||
![]() |
cf5a3276c9 | ||
![]() |
5c3e8d5919 | ||
![]() |
e57ca4dbf7 | ||
![]() |
a26d370017 | ||
![]() |
1bc87e1486 | ||
![]() |
394246d043 | ||
![]() |
eb68fc18d5 | ||
![]() |
7ddbeb9223 | ||
![]() |
1f2f11c42b | ||
![]() |
a7bd0be69c | ||
![]() |
0494082a55 | ||
![]() |
9e453285d0 | ||
![]() |
ee4b279e7c | ||
![]() |
22fe8f41b3 | ||
![]() |
256ddb30ab | ||
![]() |
d7bb5af3cd | ||
![]() |
83806263df | ||
![]() |
2520f589d5 | ||
![]() |
8274035b88 | ||
![]() |
35d355f624 | ||
![]() |
e3665393c3 | ||
![]() |
0cfa38785d | ||
![]() |
65929330ba | ||
![]() |
5d7ccb0616 | ||
![]() |
daf5ef7a43 | ||
![]() |
c7747268e6 | ||
![]() |
adee414578 | ||
![]() |
971543266a | ||
![]() |
e7bcfc6c3d | ||
![]() |
a85275dbc9 | ||
![]() |
f449011c39 | ||
![]() |
b7efbb61b1 | ||
![]() |
c4bc3b5874 | ||
![]() |
fb1e764a8d | ||
![]() |
a0dba8320e | ||
![]() |
2bea4790d6 | ||
![]() |
27560e7e89 | ||
![]() |
de095cc4ad | ||
![]() |
32a22581bd | ||
![]() |
1e7142ba6f | ||
![]() |
6121576d52 | ||
![]() |
163d653468 | ||
![]() |
dbc94f2f50 | ||
![]() |
2adf494028 | ||
![]() |
440c18ca01 | ||
![]() |
0bea5d85b5 | ||
![]() |
80349d6399 | ||
![]() |
9267ce21a5 | ||
![]() |
71024deb7b | ||
![]() |
342d35892c | ||
![]() |
a4428eabb7 | ||
![]() |
8f59150c8c | ||
![]() |
ebeebbcd45 | ||
![]() |
04f67c0b3f | ||
![]() |
e67cc8f8e1 | ||
![]() |
363c935f28 | ||
![]() |
cbffc99b0f | ||
![]() |
f23173625d | ||
![]() |
29cb2702b9 | ||
![]() |
f511bae2bd | ||
![]() |
892fd3e2ac | ||
![]() |
e650e86173 | ||
![]() |
26e12696c1 | ||
![]() |
84390f4461 | ||
![]() |
dcc819469a | ||
![]() |
42ef3b170a | ||
![]() |
2d630dffb6 | ||
![]() |
3be3897033 | ||
![]() |
da73f09da5 | ||
![]() |
17f54037b3 | ||
![]() |
04501597b5 | ||
![]() |
15d8985d33 | ||
![]() |
4eeee7bba0 | ||
![]() |
1a8447c9bc | ||
![]() |
d42dedf6e6 | ||
![]() |
b9049f4374 | ||
![]() |
d5d3dd9a85 | ||
![]() |
7bdc313e07 | ||
![]() |
591532ecca | ||
![]() |
6b5d0ab29e | ||
![]() |
6721788806 | ||
![]() |
29b3313d85 | ||
![]() |
07249080ca | ||
![]() |
00fe5a5852 | ||
![]() |
a217787ad3 | ||
![]() |
c1b38dc1f3 | ||
![]() |
b58dbb1fbb | ||
![]() |
6e746c851f | ||
![]() |
ce14b2cfb5 | ||
![]() |
f6ae80ef16 | ||
![]() |
5bbbc673d4 | ||
![]() |
8ad5572abf | ||
![]() |
6c6f2398dd | ||
![]() |
b6b9de70d2 | ||
![]() |
1da701d69f | ||
![]() |
f851ea0e0a | ||
![]() |
bd1ea29aba | ||
![]() |
07eef81a95 | ||
![]() |
b40fd5b284 | ||
![]() |
623cd04fa0 | ||
![]() |
552519f8ba | ||
![]() |
9e6f4a8c56 | ||
![]() |
e885488286 | ||
![]() |
e12e482f62 | ||
![]() |
b00b9b3f2e | ||
![]() |
5280cb147e | ||
![]() |
32c6bed34b | ||
![]() |
875d5ea61f | ||
![]() |
136187f0fb | ||
![]() |
c65b9863a7 | ||
![]() |
b4ee060aaa | ||
![]() |
bc62fcde72 | ||
![]() |
6c4845eae4 | ||
![]() |
5c86b82cfb | ||
![]() |
c60dd02bb5 | ||
![]() |
eda97334ac | ||
![]() |
3d2c5d7c16 | ||
![]() |
62917665e3 | ||
![]() |
e28ca153cb | ||
![]() |
8b13e1b0dc | ||
![]() |
45a74c25af | ||
![]() |
a1b86849b7 | ||
![]() |
c59db7d9f8 | ||
![]() |
fc74d42157 | ||
![]() |
ffef2cd11c | ||
![]() |
3dbc7d3bea | ||
![]() |
0bc19fc87c | ||
![]() |
878fc0e21f | ||
![]() |
401a19fcdc | ||
![]() |
67f10d3eca | ||
![]() |
6ae695e477 | ||
![]() |
09de4c79a3 | ||
![]() |
13320f490f | ||
![]() |
2d7a48a65e | ||
![]() |
7c4d8c92d6 | ||
![]() |
7124542ed9 | ||
![]() |
e2c880aafe | ||
![]() |
0a384a2a35 | ||
![]() |
a350dd76f0 | ||
![]() |
7e4435deb8 | ||
![]() |
4c623b69b1 | ||
![]() |
78c9a7f26d | ||
![]() |
cc194eb979 | ||
![]() |
d694c6c9f5 | ||
![]() |
ee8341402a | ||
![]() |
c4bbd54c5a | ||
![]() |
ca72e32e98 | ||
![]() |
67bada80e6 | ||
![]() |
cde27305ee | ||
![]() |
cd1f3e4510 | ||
![]() |
9b0a54b7f2 | ||
![]() |
a1fce64ce5 | ||
![]() |
fa90d23a90 | ||
![]() |
098ecbcb99 | ||
![]() |
4a7acf8c02 | ||
![]() |
de8db5a6a0 | ||
![]() |
1ab8e5fb11 | ||
![]() |
9cab0fdb75 | ||
![]() |
af67aac71f | ||
![]() |
e89211e451 | ||
![]() |
faf5949870 | ||
![]() |
1904ba574a | ||
![]() |
a98372a964 | ||
![]() |
ab0d9c239d | ||
![]() |
e6fd7db226 | ||
![]() |
b9453515a0 | ||
![]() |
da2e4a1a60 | ||
![]() |
e6aa5dd01b | ||
![]() |
fe08c166bb | ||
![]() |
c24f6eca7a | ||
![]() |
6866cfa361 | ||
![]() |
f574b0e1c8 | ||
![]() |
3d592c4dd8 | ||
![]() |
a85211745b | ||
![]() |
fe7aa39bc1 | ||
![]() |
b542c3bc97 | ||
![]() |
0a716aa644 | ||
![]() |
a3fa77af02 | ||
![]() |
5d801fbdeb | ||
![]() |
1d94ebbbf2 | ||
![]() |
6079d0e1d7 | ||
![]() |
4573300bb4 | ||
![]() |
bd9648a519 | ||
![]() |
3d82ab27f0 | ||
![]() |
1bd8f10ba3 | ||
![]() |
49b45c9aa6 | ||
![]() |
56a2ba7f98 | ||
![]() |
6b35cacb2a | ||
![]() |
d7c7cb9fb2 | ||
![]() |
6129288439 | ||
![]() |
f6fa482087 | ||
![]() |
436e4ae603 | ||
![]() |
46175b6071 | ||
![]() |
70267f4535 | ||
![]() |
fc5dfabf77 | ||
![]() |
01d9f7cdf1 | ||
![]() |
9a2622956f | ||
![]() |
ab903e0481 | ||
![]() |
a06b2f86a9 | ||
![]() |
65cee65b20 | ||
![]() |
b7db89e77b | ||
![]() |
6722c315cc | ||
![]() |
1bd7d2d3b3 | ||
![]() |
10f67804c9 | ||
![]() |
5fd3092ad3 | ||
![]() |
34bc63d2bc | ||
![]() |
178bce67bf | ||
![]() |
dc0eb3ccb8 | ||
![]() |
4bd9a4ef8e | ||
![]() |
3744d13e31 | ||
![]() |
a1d2c7a6c8 | ||
![]() |
3dc6bb83c1 | ||
![]() |
73f976e679 | ||
![]() |
95ed856446 | ||
![]() |
b817e16a4c | ||
![]() |
2701d91db0 | ||
![]() |
9561c9abf8 | ||
![]() |
2d469bccbc | ||
![]() |
58f2174c49 | ||
![]() |
642c4839f7 | ||
![]() |
9c5ea316ff | ||
![]() |
a8c78a80ba | ||
![]() |
4f4e346953 | ||
![]() |
73ce4d6cd8 | ||
![]() |
cf67ac8504 | ||
![]() |
3a4af92667 | ||
![]() |
470e74492f | ||
![]() |
1db61fca8f | ||
![]() |
8b92b734b2 | ||
![]() |
a721fe6c4d | ||
![]() |
f28ecbdcff | ||
![]() |
8d6e656701 | ||
![]() |
d04a61fc40 | ||
![]() |
bab84c61a0 | ||
![]() |
d43a9b2598 | ||
![]() |
f25fc40dde | ||
![]() |
6618683216 | ||
![]() |
817ad955af | ||
![]() |
403f54d1df | ||
![]() |
7a9d807bcc | ||
![]() |
17319f92b2 | ||
![]() |
18b000602b | ||
![]() |
d623956da5 | ||
![]() |
4db98bd840 | ||
![]() |
bfa4ee56fd | ||
![]() |
7913fd7bdd | ||
![]() |
a3068e1a2f | ||
![]() |
c517053aaf | ||
![]() |
ecbb755471 | ||
![]() |
26ddeef42c | ||
![]() |
6f50fabf83 | ||
![]() |
543158ff12 | ||
![]() |
566449f3d4 | ||
![]() |
778b739a57 | ||
![]() |
6b45da21c1 | ||
![]() |
17ee191156 | ||
![]() |
1689b80470 | ||
![]() |
fc79df42fd | ||
![]() |
734c0ee6ef | ||
![]() |
9049013dde | ||
![]() |
d09e6a83aa | ||
![]() |
afc9a024f8 | ||
![]() |
bd13d34bd6 | ||
![]() |
550c26010a | ||
![]() |
e2b4e8ad84 | ||
![]() |
5329cff046 | ||
![]() |
e6269ae56e | ||
![]() |
230796dd96 | ||
![]() |
fdf47bf106 | ||
![]() |
029b5a183b | ||
![]() |
dc490cf482 | ||
![]() |
d06371c30b | ||
![]() |
0e74a3daf7 | ||
![]() |
df5d0a3cfb | ||
![]() |
d81513ed1c | ||
![]() |
6f5a97705d | ||
![]() |
454153bfa7 | ||
![]() |
14154737d2 | ||
![]() |
dd241b171d | ||
![]() |
28237e3835 | ||
![]() |
620387b9e8 | ||
![]() |
4f5bc3026e | ||
![]() |
b34e8b6344 | ||
![]() |
8245b99acb | ||
![]() |
55a96bbe51 | ||
![]() |
8796ff1310 | ||
![]() |
d8140d6cba | ||
![]() |
38c3897f85 | ||
![]() |
420c066e01 | ||
![]() |
4c1a09a908 | ||
![]() |
cb9ca25a63 | ||
![]() |
759bd325c8 | ||
![]() |
4df31a2c77 | ||
![]() |
a70665ef34 | ||
![]() |
5b9d1cba2a | ||
![]() |
481dbf8988 | ||
![]() |
527c9469cd | ||
![]() |
f51633fdd5 | ||
![]() |
6adb717521 | ||
![]() |
3ddc0eaada | ||
![]() |
a523721181 | ||
![]() |
e277b542aa | ||
![]() |
2ca32b40bc | ||
![]() |
42f6840586 | ||
![]() |
54628b4f5b | ||
![]() |
8b7df4edc8 | ||
![]() |
5b9d73bd9d | ||
![]() |
b5a464a8d9 | ||
![]() |
d4de89f2e6 | ||
![]() |
43614ec5ef | ||
![]() |
a9ff6c7c39 | ||
![]() |
087291adc8 | ||
![]() |
800857d67e | ||
![]() |
ad3228abc0 | ||
![]() |
33a6cca3bf | ||
![]() |
9392d28758 | ||
![]() |
b0decaa8c4 | ||
![]() |
3c344bcb77 | ||
![]() |
87ab86bac4 | ||
![]() |
0831592eba | ||
![]() |
b503fdc6f4 | ||
![]() |
f3573dbfae | ||
![]() |
1f95fc014b | ||
![]() |
41f0464dce | ||
![]() |
0f5110785f | ||
![]() |
b108feec5d | ||
![]() |
9b7ec0fa11 | ||
![]() |
d01888d0be | ||
![]() |
1638484a82 | ||
![]() |
3d73e4c5b4 | ||
![]() |
4f0713af54 | ||
![]() |
637ea4b337 | ||
![]() |
8ab91d242b | ||
![]() |
4d3442cca4 | ||
![]() |
179e5c6ccd | ||
![]() |
1806ace2ef | ||
![]() |
bceba8c55d | ||
![]() |
e36bd9b924 | ||
![]() |
8febda41af | ||
![]() |
3146d394c4 | ||
![]() |
559d542a0d | ||
![]() |
ff2b57a127 | ||
![]() |
6e36a01099 | ||
![]() |
e342ffb989 | ||
![]() |
7b0b941b97 | ||
![]() |
9705552a6b | ||
![]() |
1b701dc6f3 | ||
![]() |
b00c3c8246 | ||
![]() |
9c9c20110c | ||
![]() |
b16202dcde | ||
![]() |
da19dab578 | ||
![]() |
0d0e4ac4df | ||
![]() |
784fc69d47 | ||
![]() |
8d94f66d81 | ||
![]() |
4b258e1401 | ||
![]() |
293e749298 | ||
![]() |
cf03645815 | ||
![]() |
883814c50e | ||
![]() |
b1efc8aad2 | ||
![]() |
899479c18d | ||
![]() |
abe3f8f3d6 | ||
![]() |
6a56842e1f | ||
![]() |
bf2d3d9ed2 | ||
![]() |
b8a1829fb6 | ||
![]() |
4070f64467 | ||
![]() |
a74557c3ba | ||
![]() |
3b80d99db7 | ||
![]() |
73566a9a77 | ||
![]() |
d3dbed98c2 | ||
![]() |
1bd7e803e0 | ||
![]() |
adf0596a5f | ||
![]() |
6b6104f081 | ||
![]() |
924e6a2339 | ||
![]() |
a527413acf | ||
![]() |
b2d0ab29a5 | ||
![]() |
fa2d0f6363 | ||
![]() |
f2acac5cae | ||
![]() |
c5c6daef22 | ||
![]() |
6472593cc0 | ||
![]() |
da49f6f3e4 | ||
![]() |
a52a9eef2d | ||
![]() |
f9db0854b7 | ||
![]() |
2f93f2ae7e | ||
![]() |
fcba85bc71 | ||
![]() |
0c5769cc87 | ||
![]() |
db4f26f0db | ||
![]() |
64e952bbe1 | ||
![]() |
39e7282e32 | ||
![]() |
898fdf15ae | ||
![]() |
88149f5b56 | ||
![]() |
7a949a914c | ||
![]() |
3c95e8596e | ||
![]() |
8ae05b9a4b | ||
![]() |
a1f4c3704b | ||
![]() |
1197494895 | ||
![]() |
068a3e7dcb | ||
![]() |
62051b643f | ||
![]() |
a895603a16 | ||
![]() |
e4bb11b1f8 | ||
![]() |
828568afba | ||
![]() |
2af0557a19 | ||
![]() |
96f3b947d6 | ||
![]() |
d8f9c121ff | ||
![]() |
17bb126cab | ||
![]() |
84e900f0f3 | ||
![]() |
b2121b7891 | ||
![]() |
387cf15e7f | ||
![]() |
a13d93cb93 | ||
![]() |
e44a8c49bb | ||
![]() |
ec85d1e843 | ||
![]() |
06e1272491 | ||
![]() |
025e365a9b | ||
![]() |
e9c26512e6 | ||
![]() |
b035e4ddc9 | ||
![]() |
568e8a28fa | ||
![]() |
1b811f8de8 | ||
![]() |
c367974170 | ||
![]() |
968ed0a17a | ||
![]() |
2785e845df | ||
![]() |
31f9b8a56d | ||
![]() |
258695b5ee | ||
![]() |
ded5983ebb | ||
![]() |
5f5912bb5f | ||
![]() |
e381c454a2 | ||
![]() |
cc65809ec5 | ||
![]() |
67cb3acd6a | ||
![]() |
62f9a96972 | ||
![]() |
3ee58b5816 | ||
![]() |
2dc4cb3c3d | ||
![]() |
adbf2aa7cc | ||
![]() |
accafb84ad | ||
![]() |
20cc128956 | ||
![]() |
dd4b9fbdd9 | ||
![]() |
a0e17f02fb | ||
![]() |
f2fd03b8fc | ||
![]() |
837c342b87 | ||
![]() |
9b88280cc2 | ||
![]() |
f0af8214ee | ||
![]() |
cdb4b9398c | ||
![]() |
9b695ca9c3 | ||
![]() |
9f723e83ae | ||
![]() |
f0ea16abf3 | ||
![]() |
11b4f790d0 | ||
![]() |
c8ab8908da | ||
![]() |
1225c93112 | ||
![]() |
edf9e1ac62 | ||
![]() |
3f34c3874c | ||
![]() |
1c2d59b280 | ||
![]() |
e113fbd7f3 | ||
![]() |
9b69e0d77e | ||
![]() |
2c17b6fb4a | ||
![]() |
87392b7262 | ||
![]() |
fc39619be4 | ||
![]() |
9ed3575f19 | ||
![]() |
3f9a2f97d7 | ||
![]() |
0b36e6b567 | ||
![]() |
99de3b637c | ||
![]() |
90513b30dc | ||
![]() |
93b383e95d | ||
![]() |
5d2d52181b | ||
![]() |
590d505c67 | ||
![]() |
8a62493495 | ||
![]() |
a70f74dba8 | ||
![]() |
91f3859a53 | ||
![]() |
7c42ab8eaf | ||
![]() |
b7f5b3e04b | ||
![]() |
7696235acb | ||
![]() |
668ac2c650 | ||
![]() |
811510fbcb | ||
![]() |
1387c5e8c3 | ||
![]() |
0bdf714112 | ||
![]() |
733501a186 | ||
![]() |
508b089f68 | ||
![]() |
e74d239907 | ||
![]() |
26cf8a0583 | ||
![]() |
81352e98b2 | ||
![]() |
4de66e2cd9 | ||
![]() |
406f3aac18 | ||
![]() |
c765ea9bad |
53
.tx/config
@ -1,63 +1,80 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
type = PO
|
||||
|
||||
[odoo-14-doc.applications]
|
||||
[o:odoo:p:odoo-16-doc:r:administration]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/administration.po
|
||||
source_file = locale/sources/administration.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:applications]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||
source_file = locale/sources/applications.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.finance]
|
||||
[o:odoo:p:odoo-16-doc:r:essentials]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||
source_file = locale/sources/essentials.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:finance]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||
source_file = locale/sources/finance.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.general]
|
||||
[o:odoo:p:odoo-16-doc:r:general]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
||||
source_file = locale/sources/general.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.index]
|
||||
[o:odoo:p:odoo-16-doc:r:hr]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/hr.po
|
||||
source_file = locale/sources/hr.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = hr
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:index]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
||||
source_file = locale/sources/index.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.inventory_and_mrp]
|
||||
[o:odoo:p:odoo-16-doc:r:inventory_and_mrp]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
||||
source_file = locale/sources/inventory_and_mrp.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.marketing]
|
||||
[o:odoo:p:odoo-16-doc:r:marketing]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
||||
source_file = locale/sources/marketing.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.productivity]
|
||||
[o:odoo:p:odoo-16-doc:r:productivity]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
||||
source_file = locale/sources/productivity.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.sales]
|
||||
[o:odoo:p:odoo-16-doc:r:sales]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
||||
source_file = locale/sources/sales.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.services]
|
||||
[o:odoo:p:odoo-16-doc:r:services]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||
source_file = locale/sources/services.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.theme]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sphinx.po
|
||||
source_file = locale/sources/sphinx.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.user_settings]
|
||||
[o:odoo:p:odoo-16-doc:r:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
source_lang = en
|
||||
|
||||
[odoo-14-doc.websites]
|
||||
[o:odoo:p:odoo-16-doc:r:studio]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||
source_file = locale/sources/studio.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
source_lang = en
|
||||
source_lang = en
|
||||
|
||||
|
13
COPYRIGHT
Normal file
@ -0,0 +1,13 @@
|
||||
Most of the files are
|
||||
|
||||
Copyright (c) 2004-2023 Odoo S.A.
|
||||
|
||||
Some files may also contain contributions from third
|
||||
parties. In this case the original copyright of
|
||||
the contributions can be traced through the
|
||||
history of the source version control system.
|
||||
|
||||
When that is not the case, the files contain a prominent
|
||||
notice stating the original copyright and applicable
|
||||
license, or come with their own dedicated COPYRIGHT
|
||||
and/or LICENSE file.
|
428
LICENSE
Normal file
@ -0,0 +1,428 @@
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
19
Makefile
@ -18,6 +18,7 @@ CONFIG_DIR = .
|
||||
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
|
||||
-D versions=$(VERSIONS) -D languages=$(LANGUAGES) -D language=$(CURRENT_LANG) \
|
||||
-D is_remote_build=$(IS_REMOTE_BUILD) \
|
||||
-T \
|
||||
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
|
||||
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
|
||||
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
|
||||
@ -26,7 +27,7 @@ SOURCE_DIR = content
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/16.0
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
@ -42,6 +43,7 @@ help:
|
||||
@echo " html to build the documentation to HTML"
|
||||
@echo " fast to build the documentation to HTML with shallow menu (faster)"
|
||||
@echo " clean to delete the build files"
|
||||
@echo " test to run the guidelines tests"
|
||||
|
||||
clean:
|
||||
@echo "Cleaning build files..."
|
||||
@ -55,7 +57,7 @@ html: $(HTML_BUILD_DIR)/_static/style.css
|
||||
|
||||
# To call *after* `make html`
|
||||
# Binary dependencies (Debian): texlive-fonts-recommended texlive-latex-extra
|
||||
# texlive-generic-recommended texlive-fonts-extra
|
||||
# texlive-fonts-extra
|
||||
latexpdf:
|
||||
@echo "Starting build..."
|
||||
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b latex $(SPHINXOPTS) $(SOURCE_DIR) $(BUILD_DIR)/latex
|
||||
@ -82,3 +84,16 @@ fast: html
|
||||
static: $(HTML_BUILD_DIR)/_static/style.css
|
||||
cp -r extensions/odoo_theme/static/* $(HTML_BUILD_DIR)/_static/
|
||||
cp -r static/* $(HTML_BUILD_DIR)/_static/
|
||||
|
||||
# Called by runbot for the ci/documentation_guideline check.
|
||||
test:
|
||||
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer redirects
|
||||
|
||||
# Similar as `test`, but called only manually by content reviewers to trigger extra checks.
|
||||
review:
|
||||
@read -p "Enter relative content path: " path; read -p "Enter max line length (default: 100): " line_length; \
|
||||
if [ -z "$$path" ]; then echo "Error: Path cannot be empty"; exit 1; fi; \
|
||||
if echo $$path | grep -q 'content/'; then path=`echo $$path | sed 's|content/||'`; fi; \
|
||||
if [ -z "$$line_length" ]; then line_length=100; fi; \
|
||||
export REVIEW=1; \
|
||||
python tests/main.py --max-line-length=$$line_length $(SOURCE_DIR)/$$path
|
||||
|
38
README.md
@ -4,43 +4,35 @@
|
||||
|
||||
### Requirements
|
||||
|
||||
- [Git](https://www.odoo.com/documentation/master/contributing/documentation.html#install-git)
|
||||
- [Python 3.7 or 3.8](https://www.odoo.com/documentation/master/contributing/documentation.html#python)
|
||||
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/master/requirements.txt).
|
||||
- [Make](https://www.odoo.com/documentation/master/contributing/documentation.html#make)
|
||||
- A local copy of the [odoo/odoo repository in master](https://github.com/odoo/odoo/tree/master) (Optional)
|
||||
- Git
|
||||
- Python 3.6, 3.7, or 3.8
|
||||
- Python dependencies listed in the file `requirements.txt`.
|
||||
- Make
|
||||
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
|
||||
- A local copy of the [odoo/upgrade-util repository](https://github.com/odoo/upgrade-util) (optional)
|
||||
|
||||
### Instructions
|
||||
|
||||
1. In a terminal, navigate to the root directory and compile the documentation to HTML with the
|
||||
following command:
|
||||
|
||||
```sh
|
||||
make
|
||||
```
|
||||
|
||||
1. In a terminal, navigate to the root directory of the documentation and build it `make`.
|
||||
Additional commands are available with `make help`.
|
||||
|
||||
2. Open the file `documentation/_build/html/index.html` in your web browser to display the render.
|
||||
|
||||
3. See [this guide](https://www.odoo.com/documentation/master/contributing/documentation.html#preview-your-changes)
|
||||
2. Open the file `documentation/_build/html/index.html` in your web browser.
|
||||
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
|
||||
for more detailed instructions.
|
||||
|
||||
Optional: to fully build the developer documentation with inline docstrings for documented Python
|
||||
functions, place your local copy of the `odoo/odoo` repository in the root directory. Alternatively,
|
||||
create a symbolic link with `odoo` as link name. If the Odoo sources are not found, a warning will
|
||||
be shown.
|
||||
Optional: place your local copy of the `odoo/odoo` and `odoo/upgrade-util` repositories in
|
||||
the parent directory or in the root directory of the documentation to build the latter
|
||||
with the documented Python docstrings.
|
||||
|
||||
## Contribute to the documentation
|
||||
|
||||
For contributions to the content of the documentation, please refer to the
|
||||
[Introduction Guide](https://www.odoo.com/documentation/master/contributing/documentation.html).
|
||||
[Introduction Guide](https://www.odoo.com/documentation/latest/contributing/documentation.html).
|
||||
|
||||
To **report a content issue**, **request new content** or **ask a question**, use the
|
||||
[repository's issue tracker](https://github.com/odoo/documentation-user/issues) as usual.
|
||||
[repository's issue tracker](https://github.com/odoo/documentation/issues).
|
||||
|
||||
## Learn More
|
||||
|
||||
To learn more about Odoo, in addition to the documentation, have a look at
|
||||
[the official eLearning](https://odoo.com/slides) and
|
||||
[Scale-up, The Business Game](https://www.odoo.com/page/scale-up-business-game).
|
||||
[Scale-up, The Business Game](https://www.odoo.com/page/scale-up-business-game).
|
||||
|
@ -16,4 +16,4 @@
|
||||
# [REM] = Removal
|
||||
# [REF] = Refactoring (restructuring)
|
||||
# [MOV] = Move/rename
|
||||
#
|
||||
#
|
||||
|
116
conf.py
@ -1,14 +1,14 @@
|
||||
import re
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import docutils
|
||||
import sphinx
|
||||
from pygments.lexers import JsonLexer, XmlLexer
|
||||
from sphinx.ext import graphviz
|
||||
from sphinx.util import logging
|
||||
import sphinx
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@ -19,10 +19,24 @@ _logger = logging.getLogger(__name__)
|
||||
project = 'Odoo'
|
||||
copyright = 'Odoo S.A.'
|
||||
|
||||
# `version` if the version info for the project being documented, acts as replacement for |version|,
|
||||
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
||||
# also used in various other places throughout the built documents.
|
||||
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
||||
version = release = 'master'
|
||||
version = release = '16.0'
|
||||
|
||||
# `current_branch` is the technical name of the current branch.
|
||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||
current_branch = version
|
||||
# `current_version` is the Odoo version linked to the current branch.
|
||||
# E.g., saas-15.4 -> 15.4; 12.0 -> 12; master -> master (*).
|
||||
current_version = current_branch.replace('saas-', '').replace('.0', '')
|
||||
# `current_major_branch` is the technical name of the major branch before the current branch.
|
||||
# E.g., saas-15.4 -> 15.0; 12.0 -> 12.0; master -> master (*).
|
||||
current_major_branch = re.sub(r'\.\d', '.0', current_branch.replace('saas-', ''))
|
||||
# `current_major_version` is the Odoo version linked to the current major branch.
|
||||
# E.g., saas-15.4 -> 15; 12.0 -> 12; master -> master (*).
|
||||
current_major_version = current_major_branch.replace('.0', '')
|
||||
# (*): We don't care for master.
|
||||
|
||||
# The minimal Sphinx version required to build the documentation.
|
||||
needs_sphinx = '3.0.0'
|
||||
@ -61,8 +75,14 @@ add_function_parentheses = True
|
||||
#=== Extensions configuration ===#
|
||||
|
||||
source_read_replace_vals = {
|
||||
'BRANCH': current_branch,
|
||||
'CURRENT_BRANCH': current_branch,
|
||||
'CURRENT_VERSION': current_version,
|
||||
'CURRENT_MAJOR_BRANCH': current_major_branch,
|
||||
'CURRENT_MAJOR_VERSION': current_major_version,
|
||||
'GITHUB_PATH': f'https://github.com/odoo/odoo/blob/{version}',
|
||||
'GITHUB_ENT_PATH': f'https://github.com/odoo/enterprise/blob/{version}',
|
||||
'OWL_PATH': f'https://github.com/odoo/owl/blob/master',
|
||||
}
|
||||
|
||||
# Add extensions directory to PYTHONPATH
|
||||
@ -95,7 +115,7 @@ else:
|
||||
import odoo.addons
|
||||
odoo.addons.__path__.append(str(odoo_dir) + '/addons')
|
||||
from odoo import release as odoo_release # Don't collide with Sphinx's 'release' config option
|
||||
odoo_version = odoo_release.version.replace('~', '-') # Change saas~XX.Y to saas-XX.Y
|
||||
odoo_version = '.'.join(str(s) for s in odoo_release.version_info[:2]).replace('~', '-') # Change saas~XX.Y to saas-XX.Y
|
||||
odoo_version = 'master' if 'alpha' in odoo_release.version else odoo_version
|
||||
if release != odoo_version:
|
||||
_logger.warning(
|
||||
@ -113,6 +133,24 @@ else:
|
||||
)
|
||||
odoo_dir_in_path = True
|
||||
|
||||
if odoo_dir_in_path:
|
||||
upgrade_util_dir = next(filter(Path.exists, [Path('upgrade-util'), Path('../upgrade-util')]), None)
|
||||
if not upgrade_util_dir:
|
||||
_logger.warning(
|
||||
"Could not find Upgrade Utils sources directory in `upgrade_util`.\n"
|
||||
"The developer documentation will be built but autodoc directives will be skipped.\n"
|
||||
"In order to fully build the 'Developer' documentation, clone the repository with "
|
||||
"`git clone https://github.com/odoo/upgrade-util` or create a symbolic link."
|
||||
)
|
||||
odoo_dir_in_path = False
|
||||
else:
|
||||
_logger.info(
|
||||
"Found Upgrade Util sources in %(directory)s",
|
||||
{'directory': upgrade_util_dir.resolve()},
|
||||
)
|
||||
from odoo import upgrade
|
||||
upgrade.__path__.append(str((upgrade_util_dir / 'src').resolve()))
|
||||
|
||||
# Mapping between odoo models related to master data and the declaration of the
|
||||
# data. This is used to point users to available xml_ids when giving values for
|
||||
# a field with the autodoc_field extension.
|
||||
@ -145,6 +183,12 @@ extensions = [
|
||||
# Content tabs
|
||||
'sphinx_tabs.tabs',
|
||||
|
||||
# Cards
|
||||
'cards',
|
||||
|
||||
# Spoilers
|
||||
'spoilers',
|
||||
|
||||
# Strange html domain logic used in memento pages
|
||||
'html_domain',
|
||||
]
|
||||
@ -169,7 +213,7 @@ todo_include_todos = False
|
||||
intersphinx_mapping = {
|
||||
'pillow': ('https://pillow.readthedocs.io/en/stable/', None),
|
||||
'python': ('https://docs.python.org/3/', None),
|
||||
'werkzeug': ('https://werkzeug.palletsprojects.com/en/1.0.x/', None),
|
||||
'werkzeug': ('https://werkzeug.palletsprojects.com/en/2.3.x/', None),
|
||||
}
|
||||
|
||||
github_user = 'odoo'
|
||||
@ -187,10 +231,12 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-15.2': "Odoo Online",
|
||||
'18.0': "Odoo 18",
|
||||
'saas-17.4': "Odoo Online",
|
||||
'saas-17.2': "Odoo Online",
|
||||
'17.0': "Odoo 17",
|
||||
'16.0': "Odoo 16",
|
||||
'15.0': "Odoo 15",
|
||||
'14.0': "Odoo 14",
|
||||
'13.0': "Odoo 13",
|
||||
}
|
||||
|
||||
# The language names that should be shown in the language switcher, if the config option `languages`
|
||||
@ -199,11 +245,17 @@ languages_names = {
|
||||
'de': 'DE',
|
||||
'en': 'EN',
|
||||
'es': 'ES',
|
||||
'es_419': 'ES (LATAM)',
|
||||
'fr': 'FR',
|
||||
'it': 'IT',
|
||||
'ko': 'KR',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'ro': 'RO',
|
||||
'sv': 'SV',
|
||||
'uk': 'UA',
|
||||
'zh_CN': 'ZH',
|
||||
'zh_CN': 'ZH (CN)',
|
||||
'zh_TW': 'ZH (TW)'
|
||||
}
|
||||
|
||||
# The directory in which files holding redirect rules used by the 'redirects' extension are listed.
|
||||
@ -212,6 +264,9 @@ redirects_dir = 'redirects/'
|
||||
sphinx_tabs_disable_tab_closing = True
|
||||
sphinx_tabs_disable_css_loading = True
|
||||
|
||||
# Autodoc ordering
|
||||
autodoc_member_order = 'bysource'
|
||||
|
||||
#=== Options for HTML output ===#
|
||||
|
||||
html_theme = 'odoo_theme'
|
||||
@ -274,20 +329,33 @@ latex_documents = [
|
||||
('legal/terms/i18n/partnership_tex_fr',
|
||||
'odoo_partnership_agreement_fr.tex', 'Odoo Partnership Agreement (FR)', '', 'howto'),
|
||||
('legal/terms/i18n/terms_of_sale_fr', 'terms_of_sale_fr.tex',
|
||||
u'Conditions Générales de Vente Odoo', '', 'howto'),
|
||||
'Conditions Générales de Vente Odoo', '', 'howto'),
|
||||
|
||||
('legal/terms/i18n/enterprise_tex_nl', 'odoo_enterprise_agreement_nl.tex',
|
||||
'Odoo Enterprise Subscription Agreement (NL)', '', 'howto'),
|
||||
|
||||
('legal/terms/i18n/enterprise_tex_de', 'odoo_enterprise_agreement_de.tex',
|
||||
'Odoo Enterprise Subscription Agreement (DE)', '', 'howto'),
|
||||
('legal/terms/i18n/terms_of_sale_de', 'terms_of_sale_de.tex',
|
||||
'Allgemeine Verkaufsbedingungen Odoo', '', 'howto'),
|
||||
|
||||
('legal/terms/i18n/enterprise_tex_es', 'odoo_enterprise_agreement_es.tex',
|
||||
'Odoo Enterprise Subscription Agreement (ES)', '', 'howto'),
|
||||
('legal/terms/i18n/partnership_tex_es',
|
||||
'odoo_partnership_agreement_es.tex', 'Odoo Partnership Agreement (ES)', '', 'howto'),
|
||||
('legal/terms/i18n/terms_of_sale_es', 'terms_of_sale_es.tex',
|
||||
'Términos Generales de Venta Odoo', '', 'howto'),
|
||||
|
||||
('legal/terms/i18n/enterprise_tex_pt_BR', 'odoo_enterprise_agreement_pt_BR.tex',
|
||||
'Odoo Enterprise Subscription Agreement (PT)', '', 'howto'),
|
||||
]
|
||||
|
||||
# List of languages that have legal translations (excluding EN). The keys must be in
|
||||
# `languages_names`. These translations will have a link to their versions of the legal
|
||||
# contracts, instead of the default EN one. The main legal documents are not part of the
|
||||
# translations since they have legal meaning.
|
||||
legal_translations = ['de', 'es', 'fr', 'nl', 'pt_BR']
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of the title page.
|
||||
latex_logo = 'static/img/odoo_logo.png'
|
||||
|
||||
@ -310,7 +378,6 @@ def source_read_replace(app, docname, source):
|
||||
result = result.replace(f"{{{key}}}", app.config.source_read_replace_vals[key])
|
||||
source[0] = result
|
||||
|
||||
|
||||
def setup(app):
|
||||
# Generate all alternate URLs for each document
|
||||
app.add_config_value('project_root', None, 'env')
|
||||
@ -398,8 +465,9 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
The entry 'language' is added by Sphinx in the rendering context.
|
||||
"""
|
||||
_current_lang = app.config.language or 'en'
|
||||
# Replace the context value by its translated description ("Français" instead of "french")
|
||||
context['language'] = languages_names.get(_current_lang)
|
||||
# Replace the context value by its upper-cased value ("FR" instead of "fr")
|
||||
context['language'] = languages_names.get(_current_lang, _current_lang.upper())
|
||||
context['language_code'] = _current_lang
|
||||
|
||||
# If the list of languages is not set, assume that the project has no alternate language
|
||||
_provided_languages = app.config.languages and app.config.languages.split(',') or []
|
||||
@ -416,6 +484,10 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
)
|
||||
)
|
||||
|
||||
# Dynamic generation of localized legal doc links
|
||||
context['legal_translations'] = legal_translations
|
||||
|
||||
|
||||
def _build_url(_version=None, _lang=None):
|
||||
if app.config.is_remote_build:
|
||||
# Project root like https://www.odoo.com/documentation
|
||||
@ -428,8 +500,24 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
_version = _version or app.config.version
|
||||
_lang = _lang or app.config.language or 'en'
|
||||
_canonical_page = f'{pagename}.html'
|
||||
|
||||
# legal translations have different URLs schemes as they are not managed on transifex
|
||||
# e.g. FR translation of /terms/enterprise => /fr/terms/enterprise_fr
|
||||
if pagename.startswith('legal/terms/'):
|
||||
if _lang in legal_translations and not pagename.endswith(f"_{_lang}"):
|
||||
# remove language code for current translation, set target one
|
||||
_page = re.sub("_[a-z]{2}$", "", pagename)
|
||||
if 'terms/i18n' not in _page:
|
||||
_page = _page.replace("/terms/", "/terms/i18n/")
|
||||
_canonical_page = f'{_page}_{_lang}.html'
|
||||
elif _lang == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
|
||||
# remove language code for current translation, link to original EN one
|
||||
_page = re.sub("_[a-z]{2}$", "", pagename)
|
||||
_canonical_page = f'{_page.replace("/i18n/", "/")}.html'
|
||||
|
||||
if app.config.is_remote_build:
|
||||
_canonical_page = _canonical_page.replace('index.html', '')
|
||||
|
||||
return f'{_root}' \
|
||||
f'{f"/{_version}" if app.config.versions else ""}' \
|
||||
f'{f"/{_lang}" if _lang != "en" else ""}' \
|
||||
|
@ -3,20 +3,63 @@
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
====================
|
||||
Install and Maintain
|
||||
====================
|
||||
===================
|
||||
Database management
|
||||
===================
|
||||
|
||||
These guides provide instructions on how to install, maintain and upgrade Odoo databases.
|
||||
|
||||
.. seealso::
|
||||
:doc:`History of Versions <administration/maintain/supported_versions>`
|
||||
:doc:`History of Versions <administration/supported_versions>`
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Depending on the intended use case, there are multiple ways to install Odoo - or not install it at
|
||||
all.
|
||||
|
||||
- :doc:`Online <administration/odoo_online>` is the easiest way to use Odoo in production or to try it.
|
||||
|
||||
- :doc:`Packaged installers <administration/on_premise/packages>` are suitable for testing Odoo and
|
||||
developing modules. They can be used for long-term production with additional deployment and
|
||||
maintenance work.
|
||||
|
||||
- :doc:`Source install <administration/on_premise/source>` provides greater flexibility, as it
|
||||
allows, for example, running multiple Odoo versions on the same system. It is adequate to develop
|
||||
modules and can be used as a base for production deployment.
|
||||
|
||||
- A `Docker <https://hub.docker.com/_/odoo/>`_ base image is available for development or
|
||||
deployment.
|
||||
|
||||
.. _install/editions:
|
||||
|
||||
Editions
|
||||
========
|
||||
|
||||
There are two different editions.
|
||||
|
||||
**Odoo Community** is the free and open-source version of the software, licensed under the `GNU
|
||||
LGPLv3 <https://github.com/odoo/odoo/blob/master/LICENSE>`_. It is the core upon which Odoo
|
||||
Enterprise is built.
|
||||
|
||||
**Odoo Enterprise** is the shared source version of the software, giving access to more
|
||||
functionalities, including functional support, upgrades, and hosting. `Pricing
|
||||
<https://www.odoo.com/pricing-plan>`_ starts from one app free.
|
||||
|
||||
.. tip::
|
||||
:doc:`Switch from Community to Enterprise <administration/on_premise/community_to_enterprise>` at
|
||||
any time (except for the source install).
|
||||
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
administration/install
|
||||
administration/maintain
|
||||
administration/upgrade
|
||||
administration/hosting
|
||||
administration/odoo_online
|
||||
administration/odoo_sh
|
||||
administration/on_premise
|
||||
administration/upgrade
|
||||
administration/neutralized_database
|
||||
administration/supported_versions
|
||||
administration/mobile
|
||||
administration/odoo_accounts
|
||||
|
121
content/administration/hosting.rst
Normal file
@ -0,0 +1,121 @@
|
||||
=======
|
||||
Hosting
|
||||
=======
|
||||
|
||||
.. _hosting/change-solution:
|
||||
|
||||
Change hosting solution
|
||||
=======================
|
||||
|
||||
The instructions to change the hosting type of a database depend on the current solution used and to
|
||||
which solution the database should be moved.
|
||||
|
||||
Transferring an on-premise database
|
||||
===================================
|
||||
|
||||
To Odoo Online
|
||||
--------------
|
||||
|
||||
.. important::
|
||||
- Odoo Online is *not* compatible with **non-standard apps**.
|
||||
- The database's current version must be :doc:`supported <supported_versions>`.
|
||||
|
||||
#. Create a :ref:`duplicate of the database <on-premise/duplicate>`.
|
||||
#. In this duplicate, uninstall all **non-standard apps**.
|
||||
#. Use the database manager to grab a *dump with filestore*.
|
||||
#. `Submit a support ticket <https://www.odoo.com/help>`_ including the following:
|
||||
|
||||
- your **subscription number**,
|
||||
- the **URL** you want to use for the database (e.g., `company.odoo.com`), and
|
||||
- the **dump** as an attachment or as a link to the file (required for 60 MB+ files).
|
||||
|
||||
#. Odoo then makes sure the database is compatible before putting it online. In case of technical
|
||||
issues during the process, Odoo might contact you.
|
||||
|
||||
.. note::
|
||||
If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
|
||||
possible to schedule the transfer.
|
||||
|
||||
To Odoo.sh
|
||||
----------
|
||||
|
||||
Follow the instructions found in :ref:`the Import your database section
|
||||
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
|
||||
|
||||
Transferring an Odoo Online database
|
||||
====================================
|
||||
|
||||
.. important::
|
||||
Odoo Online's :ref:`intermediary versions <supported_versions>` are not supported by Odoo.sh or
|
||||
on-premise. Therefore, if the database to transfer is running an intermediary version, it must be
|
||||
upgraded first to the next :ref:`major version <supported_versions>`, waiting for its release if
|
||||
necessary.
|
||||
|
||||
.. example::
|
||||
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo
|
||||
17.0.
|
||||
|
||||
.. tip::
|
||||
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
|
||||
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
|
||||
|
||||
.. warning::
|
||||
If there is an active Odoo subscription linked to the database being migrated, reach out to
|
||||
the Customer Service Manager or `submit a support ticket <https://www.odoo.com/help>`_ to
|
||||
complete the subscription transfer.
|
||||
|
||||
To on-premise
|
||||
-------------
|
||||
|
||||
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
|
||||
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
|
||||
download fails due to the file being too large, `contact Odoo support
|
||||
<https://www.odoo.com/help>`_.
|
||||
#. Restore the database from the database manager on your local server using the backup.
|
||||
|
||||
To Odoo.sh
|
||||
----------
|
||||
|
||||
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
|
||||
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
|
||||
download fails due to the file being too large, `contact Odoo support
|
||||
<https://www.odoo.com/help>`_.
|
||||
#. Follow the instructions found in :ref:`the Import your database section
|
||||
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
|
||||
|
||||
Transferring an Odoo.sh database
|
||||
================================
|
||||
|
||||
To Odoo Online
|
||||
--------------
|
||||
|
||||
.. important::
|
||||
Odoo Online is *not* compatible with **non-standard apps**.
|
||||
|
||||
#. Uninstall all **non-standard apps** in a staging build before doing it in the production build.
|
||||
#. `Create a support ticket <https://www.odoo.com/help>`_ including the following:
|
||||
|
||||
- your **subscription number**,
|
||||
- the **URL** you want to use for the database (e.g., `company.odoo.com`),
|
||||
- which **branch** should be migrated,
|
||||
- in which **region** you want the database to be hosted (Americas, Europe, or Asia),
|
||||
- which user(s) will be the **administrator(s)**, and
|
||||
- **when** (and in which timezone) you want the database to be up and running.
|
||||
|
||||
#. Odoo then makes sure the database is compatible before putting it online. In case of technical
|
||||
issues during the process, Odoo might contact you.
|
||||
|
||||
.. note::
|
||||
- If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
|
||||
possible to schedule the transfer.
|
||||
- Select the **region** closest to most of your users to reduce latency.
|
||||
- Future **administrator(s)** must have an Odoo.com account.
|
||||
- The **date and time** you want the database to be up and running are helpful to organize the
|
||||
switch from the Odoo.sh server to the Odoo Online servers.
|
||||
- Databases are **not reachable** during their migration.
|
||||
|
||||
To on-premise
|
||||
-------------
|
||||
|
||||
#. Download a :ref:`backup of your Odoo.sh production database <odoo_sh_branches_backups>`.
|
||||
#. Restore the database from the database manager on your local server using the backup.
|
@ -1,14 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
=======
|
||||
Install
|
||||
=======
|
||||
|
||||
.. If you add content on this page, remove the redirect rule 'install -> install/install'
|
||||
|
||||
.. toctree::
|
||||
|
||||
install/install
|
||||
install/deploy
|
||||
install/cdn
|
||||
install/email_gateway
|
@ -1,80 +0,0 @@
|
||||
===========================================
|
||||
Setting up a Content Delivery Network (CDN)
|
||||
===========================================
|
||||
|
||||
.. _reference/cdn/keycdn:
|
||||
|
||||
Deploying with KeyCDN_
|
||||
======================
|
||||
|
||||
.. sectionauthor:: Fabien Meghazi
|
||||
|
||||
This document will guide you through the setup of a KeyCDN_ account with your
|
||||
Odoo powered website.
|
||||
|
||||
Step 1: Create a pull zone in the KeyCDN dashboard
|
||||
--------------------------------------------------
|
||||
|
||||
.. image:: cdn/keycdn_create_a_pull_zone.png
|
||||
:class: img-fluid
|
||||
|
||||
When creating the zone, enable the CORS option in the
|
||||
:guilabel:`advanced features` submenu. (more on that later)
|
||||
|
||||
.. image:: cdn/keycdn_enable_CORS.png
|
||||
:class: img-fluid
|
||||
|
||||
Once done, you'll have to wait a bit while KeyCDN_ is crawling your website.
|
||||
|
||||
.. image:: cdn/keycdn_progressbar.png
|
||||
:class: img-fluid
|
||||
|
||||
.. note:: a new URL has been generated for your Zone, in this case it is
|
||||
``http://pulltest-b49.kxcdn.com``
|
||||
|
||||
Step 2: Configure the odoo instance with your zone
|
||||
--------------------------------------------------
|
||||
|
||||
In the Odoo back end, go to the :guilabel:`Website Settings`: menu, then
|
||||
activate the CDN support and copy/paste your zone URL in the
|
||||
:guilabel:`CDN Base URL` field. This field is only visible and configurable if
|
||||
you have developer mode activated.
|
||||
|
||||
.. image:: cdn/odoo_cdn_base_url.png
|
||||
:class: img-fluid
|
||||
|
||||
Now your website is using the CDN for the resources matching the
|
||||
:guilabel:`CDN filters` regular expressions.
|
||||
|
||||
You can have a look to the HTML of your website in order to check if the CDN
|
||||
integration is properly working.
|
||||
|
||||
.. image:: cdn/odoo_check_your_html.png
|
||||
:class: img-fluid
|
||||
|
||||
|
||||
Why should I activate CORS?
|
||||
---------------------------
|
||||
|
||||
A security restriction in some browsers (Firefox and Chrome at time of writing)
|
||||
prevents a remotely linked CSS file to fetch relative resources on this same
|
||||
external server.
|
||||
|
||||
If you don't activate the CORS option in the CDN zone, the more obvious
|
||||
resulting problem on a default Odoo website will be the lack of font-awesome
|
||||
icons because the font file declared in the font-awesome CSS won't be loaded on
|
||||
the remote server.
|
||||
|
||||
Here's what you would see on your homepage in such a case:
|
||||
|
||||
.. image:: cdn/odoo_font_file_not_loaded.png
|
||||
:class: img-fluid
|
||||
|
||||
A security error message will also appear in the browser's console:
|
||||
|
||||
.. image:: cdn/odoo_security_message.png
|
||||
:class: img-fluid
|
||||
|
||||
Enabling the CORS option in the CDN fixes this issue.
|
||||
|
||||
.. _KeyCDN: https://www.keycdn.com
|
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 7.2 KiB |
@ -1,748 +0,0 @@
|
||||
====================
|
||||
System configuration
|
||||
====================
|
||||
|
||||
This document describes basic steps to set up Odoo in production or on an
|
||||
internet-facing server. It follows :ref:`installation <setup/install>`, and is
|
||||
not generally necessary for a development systems that is not exposed on the
|
||||
internet.
|
||||
|
||||
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
||||
|
||||
.. _db_filter:
|
||||
|
||||
dbfilter
|
||||
========
|
||||
|
||||
Odoo is a multi-tenant system: a single Odoo system may run and serve a number
|
||||
of database instances. It is also highly customizable, with customizations
|
||||
(starting from the modules being loaded) depending on the "current database".
|
||||
|
||||
This is not an issue when working with the backend (web client) as a logged-in
|
||||
company user: the database can be selected when logging in, and customizations
|
||||
loaded afterwards.
|
||||
|
||||
However it is an issue for non-logged users (portal, website) which aren't
|
||||
bound to a database: Odoo needs to know which database should be used to load
|
||||
the website page or perform the operation. If multi-tenancy is not used that is not an
|
||||
issue, there's only one database to use, but if there are multiple databases
|
||||
accessible Odoo needs a rule to know which one it should use.
|
||||
|
||||
That is one of the purposes of :option:`--db-filter <odoo-bin --db-filter>`:
|
||||
it specifies how the database should be selected based on the hostname (domain)
|
||||
that is being requested. The value is a `regular expression`_, possibly
|
||||
including the dynamically injected hostname (``%h``) or the first subdomain
|
||||
(``%d``) through which the system is being accessed.
|
||||
|
||||
For servers hosting multiple databases in production, especially if ``website``
|
||||
is used, dbfilter **must** be set, otherwise a number of features will not work
|
||||
correctly.
|
||||
|
||||
Configuration samples
|
||||
---------------------
|
||||
|
||||
* Show only databases with names beginning with 'mycompany'
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
dbfilter = ^mycompany.*$
|
||||
|
||||
* Show only databases matching the first subdomain after ``www``: for example
|
||||
the database "mycompany" will be shown if the incoming request
|
||||
was sent to ``www.mycompany.com`` or ``mycompany.co.uk``, but not
|
||||
for ``www2.mycompany.com`` or ``helpdesk.mycompany.com``.
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
dbfilter = ^%d$
|
||||
|
||||
.. note::
|
||||
|
||||
Setting a proper :option:`--db-filter <odoo-bin --db-filter>` is an important part
|
||||
of securing your deployment.
|
||||
Once it is correctly working and only matching a single database per hostname, it
|
||||
is strongly recommended to block access to the database manager screens,
|
||||
and to use the ``--no-database-list`` startup parameter to prevent listing
|
||||
your databases, and to block access to the database management screens.
|
||||
See also security_.
|
||||
|
||||
PostgreSQL
|
||||
==========
|
||||
|
||||
By default, PostgreSQL only allows connection over UNIX sockets and loopback
|
||||
connections (from "localhost", the same machine the PostgreSQL server is
|
||||
installed on).
|
||||
|
||||
UNIX socket is fine if you want Odoo and PostgreSQL to execute on the same
|
||||
machine, and is the default when no host is provided, but if you want Odoo and
|
||||
PostgreSQL to execute on different machines [#different-machines]_ it will
|
||||
need to `listen to network interfaces`_ [#remote-socket]_, either:
|
||||
|
||||
* Only accept loopback connections and `use an SSH tunnel`_ between the
|
||||
machine on which Odoo runs and the one on which PostgreSQL runs, then
|
||||
configure Odoo to connect to its end of the tunnel
|
||||
* Accept connections to the machine on which Odoo is installed, possibly
|
||||
over ssl (see `PostgreSQL connection settings`_ for details), then configure
|
||||
Odoo to connect over the network
|
||||
|
||||
Configuration sample
|
||||
--------------------
|
||||
|
||||
* Allow tcp connection on localhost
|
||||
* Allow tcp connection from 192.168.1.x network
|
||||
|
||||
in ``/etc/postgresql/9.5/main/pg_hba.conf`` set:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
# IPv4 local connections:
|
||||
host all all 127.0.0.1/32 md5
|
||||
host all all 192.168.1.0/24 md5
|
||||
|
||||
in ``/etc/postgresql/9.5/main/postgresql.conf`` set:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
listen_addresses = 'localhost,192.168.1.2'
|
||||
port = 5432
|
||||
max_connections = 80
|
||||
|
||||
.. _setup/deploy/odoo:
|
||||
|
||||
Configuring Odoo
|
||||
----------------
|
||||
|
||||
Out of the box, Odoo connects to a local postgres over UNIX socket via port
|
||||
5432. This can be overridden using :ref:`the database options
|
||||
<reference/cmdline/server/database>` when your Postgres deployment is not
|
||||
local and/or does not use the installation defaults.
|
||||
|
||||
The :ref:`packaged installers <setup/install/packaged>` will automatically
|
||||
create a new user (``odoo``) and set it as the database user.
|
||||
|
||||
* The database management screens are protected by the ``admin_passwd``
|
||||
setting. This setting can only be set using configuration files, and is
|
||||
simply checked before performing database alterations. It should be set to
|
||||
a randomly generated value to ensure third parties can not use this
|
||||
interface.
|
||||
* All database operations use the :ref:`database options
|
||||
<reference/cmdline/server/database>`, including the database management
|
||||
screen. For the database management screen to work requires that the PostgreSQL user
|
||||
have ``createdb`` right.
|
||||
* Users can always drop databases they own. For the database management screen
|
||||
to be completely non-functional, the PostgreSQL user needs to be created with
|
||||
``no-createdb`` and the database must be owned by a different PostgreSQL user.
|
||||
|
||||
.. warning:: the PostgreSQL user *must not* be a superuser
|
||||
|
||||
Configuration sample
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* connect to a PostgreSQL server on 192.168.1.2
|
||||
* port 5432
|
||||
* using an 'odoo' user account,
|
||||
* with 'pwd' as a password
|
||||
* filtering only db with a name beginning with 'mycompany'
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
admin_passwd = mysupersecretpassword
|
||||
db_host = 192.168.1.2
|
||||
db_port = 5432
|
||||
db_user = odoo
|
||||
db_password = pwd
|
||||
dbfilter = ^mycompany.*$
|
||||
|
||||
.. _postgresql_ssl_connect:
|
||||
|
||||
SSL Between Odoo and PostgreSQL
|
||||
-------------------------------
|
||||
|
||||
Since Odoo 11.0, you can enforce ssl connection between Odoo and PostgreSQL.
|
||||
in Odoo the db_sslmode control the ssl security of the connection
|
||||
with value chosen out of 'disable', 'allow', 'prefer', 'require', 'verify-ca'
|
||||
or 'verify-full'
|
||||
|
||||
`PostgreSQL Doc <https://www.postgresql.org/docs/current/static/libpq-ssl.html>`_
|
||||
|
||||
.. _builtin_server:
|
||||
|
||||
Builtin server
|
||||
==============
|
||||
|
||||
Odoo includes built-in HTTP servers, using either multithreading or
|
||||
multiprocessing.
|
||||
|
||||
For production use, it is recommended to use the multiprocessing server as it
|
||||
increases stability, makes somewhat better use of computing resources and can
|
||||
be better monitored and resource-restricted.
|
||||
|
||||
* Multiprocessing is enabled by configuring :option:`a non-zero number of
|
||||
worker processes <odoo-bin --workers>`, the number of workers should be based
|
||||
on the number of cores in the machine (possibly with some room for cron
|
||||
workers depending on how much cron work is predicted)
|
||||
* Worker limits can be configured based on the hardware configuration to avoid
|
||||
resources exhaustion
|
||||
|
||||
.. warning:: multiprocessing mode currently isn't available on Windows
|
||||
|
||||
Worker number calculation
|
||||
-------------------------
|
||||
|
||||
* Rule of thumb : (#CPU * 2) + 1
|
||||
* Cron workers need CPU
|
||||
* 1 worker ~= 6 concurrent users
|
||||
|
||||
memory size calculation
|
||||
-----------------------
|
||||
|
||||
* We consider 20% of the requests are heavy requests, while 80% are simpler ones
|
||||
* A heavy worker, when all computed field are well designed, SQL requests are well designed, ... is estimated to consume around 1GB of RAM
|
||||
* A lighter worker, in the same scenario, is estimated to consume around 150MB of RAM
|
||||
|
||||
Needed RAM = #worker * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
|
||||
|
||||
LiveChat
|
||||
--------
|
||||
|
||||
In multiprocessing, a dedicated LiveChat worker is automatically started and
|
||||
listening on :option:`the gevent port <odoo-bin --gevent-port>` but
|
||||
the client will not connect to it.
|
||||
|
||||
Instead you must have a proxy redirecting requests whose URL starts with
|
||||
``/websocket/`` to the gevent port. Other request should be proxied to
|
||||
the :option:`normal HTTP port <odoo-bin --http-port>`
|
||||
|
||||
To achieve such a thing, you'll need to deploy a reverse proxy in front of Odoo,
|
||||
like nginx or apache. When doing so, you'll need to forward some more http Headers
|
||||
to Odoo, and activate the proxy_mode in Odoo configuration to have Odoo read those
|
||||
headers.
|
||||
|
||||
Configuration sample
|
||||
--------------------
|
||||
|
||||
* Server with 4 CPU, 8 Thread
|
||||
* 60 concurrent users
|
||||
|
||||
* 60 users / 6 = 10 <- theoretical number of worker needed
|
||||
* (4 * 2) + 1 = 9 <- theoretical maximal number of worker
|
||||
* We'll use 8 workers + 1 for cron. We'll also use a monitoring system to measure cpu load, and check if it's between 7 and 7.5 .
|
||||
* RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo
|
||||
|
||||
in ``/etc/odoo.conf``:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
limit_memory_hard = 1677721600
|
||||
limit_memory_soft = 629145600
|
||||
limit_request = 8192
|
||||
limit_time_cpu = 600
|
||||
limit_time_real = 1200
|
||||
max_cron_threads = 1
|
||||
workers = 8
|
||||
|
||||
.. _https_proxy:
|
||||
|
||||
HTTPS
|
||||
=====
|
||||
|
||||
Whether it's accessed via website/web client or web service, Odoo transmits
|
||||
authentication information in cleartext. This means a secure deployment of
|
||||
Odoo must use HTTPS\ [#switching]_. SSL termination can be implemented via
|
||||
just about any SSL termination proxy, but requires the following setup:
|
||||
|
||||
* Enable Odoo's :option:`proxy mode <odoo-bin --proxy-mode>`. This should only be enabled when Odoo is behind a reverse proxy
|
||||
* Set up the SSL termination proxy (`Nginx termination example`_)
|
||||
* Set up the proxying itself (`Nginx proxying example`_)
|
||||
* Your SSL termination proxy should also automatically redirect non-secure
|
||||
connections to the secure port
|
||||
|
||||
Configuration sample
|
||||
--------------------
|
||||
|
||||
* Redirect http requests to https
|
||||
* Proxy requests to odoo
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
proxy_mode = True
|
||||
|
||||
in ``/etc/nginx/sites-enabled/odoo.conf`` set:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
#odoo server
|
||||
upstream odoo {
|
||||
server 127.0.0.1:8069;
|
||||
}
|
||||
upstream odoochat {
|
||||
server 127.0.0.1:8072;
|
||||
}
|
||||
|
||||
# http -> https
|
||||
server {
|
||||
listen 80;
|
||||
server_name odoo.mycompany.com;
|
||||
rewrite ^(.*) https://$host$1 permanent;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name odoo.mycompany.com;
|
||||
proxy_read_timeout 720s;
|
||||
proxy_connect_timeout 720s;
|
||||
proxy_send_timeout 720s;
|
||||
|
||||
# Add Headers for odoo proxy mode
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
# SSL parameters
|
||||
ssl_certificate /etc/ssl/nginx/server.crt;
|
||||
ssl_certificate_key /etc/ssl/nginx/server.key;
|
||||
ssl_session_timeout 30m;
|
||||
ssl_protocols TLSv1.2;
|
||||
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;
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
# log
|
||||
access_log /var/log/nginx/odoo.access.log;
|
||||
error_log /var/log/nginx/odoo.error.log;
|
||||
|
||||
# Redirect websocket requests to odoo gevent port
|
||||
location /websocket {
|
||||
proxy_pass http://odoochat;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
|
||||
# Redirect requests to odoo backend server
|
||||
location / {
|
||||
proxy_redirect off;
|
||||
proxy_pass http://odoo;
|
||||
}
|
||||
|
||||
# common gzip
|
||||
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
|
||||
gzip on;
|
||||
}
|
||||
|
||||
Odoo as a WSGI Application
|
||||
==========================
|
||||
|
||||
It is also possible to mount Odoo as a standard WSGI_ application. Odoo
|
||||
provides the base for a WSGI launcher script as ``odoo-wsgi.example.py``. That
|
||||
script should be customized (possibly after copying it from the setup directory) to correctly set the
|
||||
configuration directly in :mod:`odoo.tools.config` rather than through the
|
||||
command-line or a configuration file.
|
||||
|
||||
However the WSGI server will only expose the main HTTP endpoint for the web
|
||||
client, website and webservice API. Because Odoo does not control the creation
|
||||
of workers anymore it can not setup cron or livechat workers
|
||||
|
||||
Cron Workers
|
||||
------------
|
||||
|
||||
To run cron jobs for an Odoo deployment as a WSGI application requires
|
||||
|
||||
* A classical Odoo (run via ``odoo-bin``)
|
||||
* Connected to the database in which cron jobs have to be run (via
|
||||
:option:`odoo-bin -d`)
|
||||
* Which should not be exposed to the network. To ensure cron runners are not
|
||||
network-accessible, it is possible to disable the built-in HTTP server
|
||||
entirely with :option:`odoo-bin --no-http` or setting ``http_enable = False``
|
||||
in the configuration file
|
||||
|
||||
LiveChat
|
||||
--------
|
||||
|
||||
The second problematic subsystem for WSGI deployments is the LiveChat: where
|
||||
most HTTP connections are relatively short and quickly free up their worker
|
||||
process for the next request, LiveChat require a long-lived connection for
|
||||
each client in order to implement near-real-time notifications.
|
||||
|
||||
This is in conflict with the process-based worker model, as it will tie
|
||||
up worker processes and prevent new users from accessing the system. However,
|
||||
those long-lived connections do very little and mostly stay parked waiting for
|
||||
notifications.
|
||||
|
||||
The solutions to support livechat/motifications in a WSGI application are:
|
||||
|
||||
* Deploy a threaded version of Odoo (instead of a process-based preforking
|
||||
one) and redirect only requests to URLs starting with ``/websocket/`` to
|
||||
that Odoo, this is the simplest and the websocket URL can double up as the cron
|
||||
instance.
|
||||
* Deploy an evented Odoo via ``odoo-gevent`` and proxy requests starting
|
||||
with ``/websocket/`` to
|
||||
:option:`the gevent port <odoo-bin --gevent-port>`.
|
||||
|
||||
.. _deploy/streaming:
|
||||
|
||||
Serving static files and attachments
|
||||
====================================
|
||||
|
||||
For development convenience, Odoo directly serves all static files and attachments in its modules.
|
||||
This may not be ideal when it comes to performances, and static files should generally be served by
|
||||
a static HTTP server.
|
||||
|
||||
Serving static files
|
||||
--------------------
|
||||
|
||||
Odoo static files are located in each module's :file:`static/` folder, so static files can be served
|
||||
by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module
|
||||
(and file) in the various addons paths.
|
||||
|
||||
.. example::
|
||||
Say Odoo has been installed via the **debian packages** for Community and Enterprise, the addons
|
||||
paths is :file:`/usr/lib/python3/dist-packages/odoo/addons`. Using the above NGINX (https)
|
||||
configuration, the following location block should be added to serve static files via NGINX.
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
location @odoo {
|
||||
# copy-paste the content of the / location block
|
||||
}
|
||||
|
||||
# Serve static files right away
|
||||
location ~ ^/[^/]+/static/.+$ {
|
||||
root /usr/lib/python3/dist-packages/odoo/addons;
|
||||
try_files $uri @odoo;
|
||||
expires 24h;
|
||||
}
|
||||
|
||||
.. example::
|
||||
Say Odoo has been installed via the **source**, and the two git repositories for Community and
|
||||
Enterprise has been cloned in :file:`/opt/odoo` and :file:`/opt/odoo-enterprise` respectively.
|
||||
The addons paths is ``/opt/odoo/odoo,/opt/odoo/addons,/opt/odoo-enterprise``. Using the above
|
||||
NGINX (https) configuragion, the following location block should be added to serve static files
|
||||
via NGINX.
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
location @odoo {
|
||||
# copy-paste the content of the / location block
|
||||
}
|
||||
|
||||
# Serve static files right away
|
||||
location ~ ^/[^/]+/static/.+$ {
|
||||
try_files /static-base$uri /static-addons$uri /static-enterprise$uri @odoo$uri;
|
||||
expires 24h;
|
||||
}
|
||||
|
||||
location /static-base {
|
||||
internal;
|
||||
alias /opt/odoo/odoo/addons;
|
||||
}
|
||||
|
||||
location /static-addons {
|
||||
internal;
|
||||
alias /opt/odoo/addons;
|
||||
}
|
||||
|
||||
location /static-enterprise {
|
||||
internal;
|
||||
alias /opt/odoo-enterprise;
|
||||
}
|
||||
|
||||
.. warning::
|
||||
The actual NGINX configuration you need is highly dependent on your own installation. The two
|
||||
above snippets only highlight two possible configurations and may not be used as-is.
|
||||
|
||||
Serving attachments
|
||||
-------------------
|
||||
|
||||
Attachments are files stored in the filestore which access is regulated by Odoo. They cannot be
|
||||
directly accessed via a static web server as accessing them requires multiple lookups in the
|
||||
database to determine where the files are stored and whether the current user can access them or
|
||||
not.
|
||||
|
||||
Nevertheless, once the file has been located and the access rights verified by Odoo, it is a good
|
||||
idea to serve the file using the static web server instead of Odoo. For Odoo to delegate serving
|
||||
files to the static web server, the `X-Sendfile <https://tn123.org/mod_xsendfile/>`_ (apache) or
|
||||
`X-Accel <https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/>`_ (nginx) extensions
|
||||
must be enabled and configured on the static web server. Once it is set up, start Odoo with the
|
||||
:option:`--x-sendfile <odoo-bin --x-sendfile>` CLI flag (this unique flag is used for both
|
||||
X-Sendfile and X-Accel).
|
||||
|
||||
|
||||
.. note::
|
||||
- The X-Sendfile extension for apache (and compatible web servers) does not require any
|
||||
supplementary configuration.
|
||||
- The X-Accel extension for NGINX **does** require the following additionnal configuration:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
location /web/filestore {
|
||||
internal;
|
||||
alias /path/to/odoo/data-dir/filestore;
|
||||
}
|
||||
|
||||
In case you don't know what is the path to your filestore, start Odoo with the
|
||||
:option:`--x-sendfile <odoo-bin --x-sendfile>` option and navigate to the ``/web/filestore`` URL
|
||||
directly via Odoo (don't navigate to the URL via NGINX). This logs a warnings, the message
|
||||
contains the configuration you need.
|
||||
|
||||
|
||||
.. _security:
|
||||
|
||||
Security
|
||||
========
|
||||
|
||||
For starters, keep in mind that securing an information system is a continuous process,
|
||||
not a one-shot operation. At any moment, you will only be as secure as the weakest link
|
||||
in your environment.
|
||||
|
||||
So please do not take this section as the ultimate list of measures that will prevent
|
||||
all security problems. It's only intended as a summary of the first important things
|
||||
you should be sure to include in your security action plan. The rest will come
|
||||
from best security practices for your operating system and distribution,
|
||||
best practices in terms of users, passwords, and access control management, etc.
|
||||
|
||||
When deploying an internet-facing server, please be sure to consider the following
|
||||
security-related topics:
|
||||
|
||||
- Always set a strong super-admin admin password, and restrict access to the database
|
||||
management pages as soon as the system is set up. See :ref:`db_manager_security`.
|
||||
|
||||
- Choose unique logins and strong passwords for all administrator accounts on all databases.
|
||||
Do not use 'admin' as the login. Do not use those logins for day-to-day operations,
|
||||
only for controlling/managing the installation.
|
||||
*Never* use any default passwords like admin/admin, even for test/staging databases.
|
||||
|
||||
- Do **not** install demo data on internet-facing servers. Databases with demo data contain
|
||||
default logins and passwords that can be used to get into your systems and cause significant
|
||||
trouble, even on staging/dev systems.
|
||||
|
||||
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
|
||||
to restrict the visibility of your databases according to the hostname.
|
||||
See :ref:`db_filter`.
|
||||
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
|
||||
list of available databases to filter from, instead of letting the system fetch
|
||||
them all from the database backend.
|
||||
|
||||
- Once your ``db_name`` and ``db_filter`` are configured and only match a single database
|
||||
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
|
||||
listing databases entirely, and to block access to the database management screens
|
||||
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
|
||||
command-line option)
|
||||
|
||||
- Make sure the PostgreSQL user (:option:`--db_user <odoo-bin --db_user>`) is *not* a super-user,
|
||||
and that your databases are owned by a different user. For example they could be owned by
|
||||
the ``postgres`` super-user if you are using a dedicated non-privileged ``db_user``.
|
||||
See also :ref:`setup/deploy/odoo`.
|
||||
|
||||
- Keep installations updated by regularly installing the latest builds,
|
||||
either via GitHub or by downloading the latest version from
|
||||
https://www.odoo.com/page/download or http://nightly.odoo.com
|
||||
|
||||
- Configure your server in multi-process mode with proper limits matching your typical
|
||||
usage (memory/CPU/timeouts). See also :ref:`builtin_server`.
|
||||
|
||||
- Run Odoo behind a web server providing HTTPS termination with a valid SSL certificate,
|
||||
in order to prevent eavesdropping on cleartext communications. SSL certificates are
|
||||
cheap, and many free options exist.
|
||||
Configure the web proxy to limit the size of requests, set appropriate timeouts,
|
||||
and then enable the :option:`proxy mode <odoo-bin --proxy-mode>` option.
|
||||
See also :ref:`https_proxy`.
|
||||
|
||||
- If you need to allow remote SSH access to your servers, make sure to set a strong password
|
||||
for **all** accounts, not just `root`. It is strongly recommended to entirely disable
|
||||
password-based authentication, and only allow public key authentication. Also consider
|
||||
restricting access via a VPN, allowing only trusted IPs in the firewall, and/or
|
||||
running a brute-force detection system such as `fail2ban` or equivalent.
|
||||
|
||||
- Consider installing appropriate rate-limiting on your proxy or firewall, to prevent
|
||||
brute-force attacks and denial of service attacks. See also :ref:`login_brute_force`
|
||||
for specific measures.
|
||||
|
||||
Many network providers provide automatic mitigation for Distributed Denial of
|
||||
Service attacks (DDOS), but this is often an optional service, so you should consult
|
||||
with them.
|
||||
|
||||
- Whenever possible, host your public-facing demo/test/staging instances on different
|
||||
machines than the production ones. And apply the same security precautions as for
|
||||
production.
|
||||
|
||||
- If your public-facing Odoo server has access to sensitive internal network resources
|
||||
or services (e.g. via a private VLAN), implement appropriate firewall rules to
|
||||
protect those internal resources. This will ensure that the Odoo server cannot
|
||||
be used accidentally (or as a result of malicious user actions) to access or disrupt
|
||||
those internal resources.
|
||||
Typically this can be done by applying an outbound default DENY rule on the firewall,
|
||||
then only explicitly authorizing access to internal resources that the Odoo server
|
||||
needs to access.
|
||||
`Systemd IP traffic access control <http://0pointer.net/blog/ip-accounting-and-access-lists-with-systemd.html>`_
|
||||
may also be useful to implement per-process network access control.
|
||||
|
||||
- If your public-facing Odoo server is behind a Web Application Firewall, a load-balancer,
|
||||
a transparent DDoS protection service (like CloudFlare) or a similar network-level
|
||||
device, you may wish to avoid direct access to the Odoo system. It is generally
|
||||
difficult to keep the endpoint IP addresses of your Odoo servers secret. For example
|
||||
they can appear in web server logs when querying public systems, or in the headers
|
||||
of emails posted from Odoo.
|
||||
In such a situation you may want to configure your firewall so that the endpoints
|
||||
are not accessible publicly except from the specific IP addresses of your WAF,
|
||||
load-balancer or proxy service. Service providers like CloudFlare usually maintain
|
||||
a public list of their IP address ranges for this purpose.
|
||||
|
||||
- If you are hosting multiple customers, isolate customer data and files from each other
|
||||
using containers or appropriate "jail" techniques.
|
||||
|
||||
- Setup daily backups of your databases and filestore data, and copy them to a remote
|
||||
archiving server that is not accessible from the server itself.
|
||||
|
||||
|
||||
.. _login_brute_force:
|
||||
|
||||
Blocking Brute Force Attacks
|
||||
----------------------------
|
||||
For internet-facing deployments, brute force attacks on user passwords are very common, and this
|
||||
threat should not be neglected for Odoo servers. Odoo emits a log entry whenever a login attempt
|
||||
is performed, and reports the result: success or failure, along with the target login and source IP.
|
||||
|
||||
The log entries will have the following form.
|
||||
|
||||
Failed login::
|
||||
|
||||
2018-07-05 14:56:31,506 24849 INFO db_name odoo.addons.base.res.res_users: Login failed for db:db_name login:admin from 127.0.0.1
|
||||
|
||||
Successful login::
|
||||
|
||||
2018-07-05 14:56:31,506 24849 INFO db_name odoo.addons.base.res.res_users: Login successful for db:db_name login:admin from 127.0.0.1
|
||||
|
||||
|
||||
These logs can be easily analyzed by an intrusion prevention system such as `fail2ban`.
|
||||
|
||||
For example, the following fail2ban filter definition should match a
|
||||
failed login::
|
||||
|
||||
[Definition]
|
||||
failregex = ^ \d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from <HOST>
|
||||
ignoreregex =
|
||||
|
||||
This could be used with a jail definition to block the attacking IP on HTTP(S).
|
||||
|
||||
Here is what it could look like for blocking the IP for 15 minutes when
|
||||
10 failed login attempts are detected from the same IP within 1 minute::
|
||||
|
||||
[odoo-login]
|
||||
enabled = true
|
||||
port = http,https
|
||||
bantime = 900 ; 15 min ban
|
||||
maxretry = 10 ; if 10 attempts
|
||||
findtime = 60 ; within 1 min /!\ Should be adjusted with the TZ offset
|
||||
logpath = /var/log/odoo.log ; set the actual odoo log path here
|
||||
|
||||
.. _db_manager_security:
|
||||
|
||||
Database Manager Security
|
||||
-------------------------
|
||||
|
||||
:ref:`setup/deploy/odoo` mentioned ``admin_passwd`` in passing.
|
||||
|
||||
This setting is used on all database management screens (to create, delete,
|
||||
dump or restore databases).
|
||||
|
||||
If the management screens must not be accessible at all, you should set ``list_db``
|
||||
configuration option to ``False``, to block access to all the database selection and
|
||||
management screens.
|
||||
|
||||
.. warning::
|
||||
|
||||
It is strongly recommended to disable the Database Manager for any internet-facing
|
||||
system! It is meant as a development/demo tool, to make it easy to quickly create
|
||||
and manage databases. It is not designed for use in production, and may even expose
|
||||
dangerous features to attackers. It is also not designed to handle large databases,
|
||||
and may trigger memory limits.
|
||||
|
||||
On production systems, database management operations should always be performed by
|
||||
the system administrator, including provisioning of new databases and automated backups.
|
||||
|
||||
Be sure to setup an appropriate ``db_name`` parameter
|
||||
(and optionally, ``db_filter`` too) so that the system can determine the target database
|
||||
for each request, otherwise users will be blocked as they won't be allowed to choose the
|
||||
database themselves.
|
||||
|
||||
If the management screens must only be accessible from a selected set of machines,
|
||||
use the proxy server's features to block access to all routes starting with ``/web/database``
|
||||
except (maybe) ``/web/database/selector`` which displays the database-selection screen.
|
||||
|
||||
If the database-management screen should be left accessible, the
|
||||
``admin_passwd`` setting must be changed from its ``admin`` default: this
|
||||
password is checked before allowing database-alteration operations.
|
||||
|
||||
It should be stored securely, and should be generated randomly e.g.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
|
||||
|
||||
which will generate a 32 characters pseudorandom printable string.
|
||||
|
||||
Supported Browsers
|
||||
==================
|
||||
|
||||
Odoo supports all the major desktop and mobile browsers available on the market,
|
||||
as long as they are supported by their publishers.
|
||||
|
||||
Here are the supported browsers:
|
||||
|
||||
- Google Chrome
|
||||
- Mozilla Firefox
|
||||
- Microsoft Edge
|
||||
- Apple Safari
|
||||
|
||||
.. warning:: Please make sure your browser is up-to-date and still supported by
|
||||
its publisher before filing a bug report.
|
||||
|
||||
.. note::
|
||||
|
||||
Since Odoo 13.0, ES6 is supported. Therefore, IE support is dropped.
|
||||
|
||||
.. [#different-machines]
|
||||
to have multiple Odoo installations use the same PostgreSQL database,
|
||||
or to provide more computing resources to both software.
|
||||
.. [#remote-socket]
|
||||
technically a tool like socat_ can be used to proxy UNIX sockets across
|
||||
networks, but that is mostly for software which can only be used over
|
||||
UNIX sockets
|
||||
.. [#switching]
|
||||
or be accessible only over an internal packet-switched network, but that
|
||||
requires secured switches, protections against `ARP spoofing`_ and
|
||||
precludes usage of WiFi. Even over secure packet-switched networks,
|
||||
deployment over HTTPS is recommended, and possible costs are lowered as
|
||||
"self-signed" certificates are easier to deploy on a controlled
|
||||
environment than over the internet.
|
||||
|
||||
.. _regular expression: https://docs.python.org/3/library/re.html
|
||||
.. _ARP spoofing: https://en.wikipedia.org/wiki/ARP_spoofing
|
||||
.. _Nginx termination example:
|
||||
https://nginx.com/resources/admin-guide/nginx-ssl-termination/
|
||||
.. _Nginx proxying example:
|
||||
https://nginx.com/resources/admin-guide/reverse-proxy/
|
||||
.. _socat: http://www.dest-unreach.org/socat/
|
||||
.. _PostgreSQL connection settings:
|
||||
.. _listen to network interfaces:
|
||||
https://www.postgresql.org/docs/9.6/static/runtime-config-connection.html
|
||||
.. _use an SSH tunnel:
|
||||
https://www.postgresql.org/docs/9.6/static/ssh-tunnels.html
|
||||
.. _WSGI: https://wsgi.readthedocs.org/
|
||||
.. _POSBox: https://www.odoo.com/page/point-of-sale-hardware#part_2
|
@ -1,751 +0,0 @@
|
||||
|
||||
.. _setup/install:
|
||||
|
||||
===============
|
||||
Installing Odoo
|
||||
===============
|
||||
|
||||
There are multiple ways to install Odoo, or not install it at all, depending
|
||||
on the intended use case.
|
||||
|
||||
This documents attempts to describe most of the installation options.
|
||||
|
||||
:ref:`setup/install/online`
|
||||
The easiest way to use Odoo in production or to try it.
|
||||
|
||||
:ref:`setup/install/packaged`
|
||||
Suitable for testing Odoo, developing modules and can be used for
|
||||
long-term production use with additional deployment and maintenance work.
|
||||
|
||||
:ref:`setup/install/source`
|
||||
Provides greater flexibility: e.g. allow multiple running Odoo versions on
|
||||
the same system. Good for developing modules, can be used as base for
|
||||
production deployment.
|
||||
|
||||
:ref:`setup/install/docker`
|
||||
If you usually use docker_ for development or deployment, an official
|
||||
docker_ base image is available.
|
||||
|
||||
|
||||
.. _setup/install/editions:
|
||||
|
||||
Editions
|
||||
========
|
||||
|
||||
There are two different Editions_ of Odoo: the Community and Enterprise versions.
|
||||
Using the Enterprise version is possible on our SaaS_ and accessing the code is
|
||||
restricted to Enterprise customers and partners. The Community version is freely
|
||||
available to anyone.
|
||||
|
||||
If you already use the Community version and wish to upgrade to Enterprise, please
|
||||
refer to :ref:`setup/enterprise` (except for :ref:`setup/install/source`).
|
||||
|
||||
|
||||
.. _setup/install/online:
|
||||
|
||||
Online
|
||||
======
|
||||
|
||||
Demo
|
||||
----
|
||||
|
||||
To simply get a quick idea of Odoo, demo_ instances are available. They are
|
||||
shared instances which only live for a few hours, and can be used to browse
|
||||
around and try things out with no commitment.
|
||||
|
||||
Demo_ instances require no local installation, just a web browser.
|
||||
|
||||
SaaS
|
||||
----
|
||||
|
||||
Trivial to start with, fully managed and migrated by Odoo S.A., Odoo's SaaS_
|
||||
provides private instances and starts out free. It can be used to discover and
|
||||
test Odoo and do non-code customizations (i.e. incompatible with custom modules
|
||||
or the Odoo Apps Store) without having to install it locally.
|
||||
|
||||
Can be used for both testing Odoo and long-term production use.
|
||||
|
||||
Like demo_ instances, SaaS_ instances require no local installation, a web
|
||||
browser is sufficient.
|
||||
|
||||
|
||||
.. _setup/install/packaged:
|
||||
|
||||
Packaged installers
|
||||
===================
|
||||
|
||||
Odoo provides packaged installers for Windows, deb-based distributions
|
||||
(Debian, Ubuntu, …) and RPM-based distributions (Fedora, CentOS, RHEL, …) for
|
||||
both the Community and Enterprise versions.
|
||||
|
||||
These packages automatically set up all dependencies (for the Community version),
|
||||
but may be difficult to keep up-to-date.
|
||||
|
||||
Official Community packages with all relevant dependency requirements are
|
||||
available on our nightly_ server. Both Community and Enterprise packages can
|
||||
be downloaded from our download_ page (you must to be logged in as a paying
|
||||
customer or partner to download the Enterprise packages).
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
#. Download the installer from our nightly_ server (Community only) or the Windows installer from
|
||||
the download_ page (any edition).
|
||||
#. Execute the downloaded file.
|
||||
|
||||
.. warning::
|
||||
| On Windows 8 and later you may see a warning titled "Windows protected your PC".
|
||||
| Click on **More Info** and then on **Run anyway**.
|
||||
|
||||
#. Accept the UAC_ prompt.
|
||||
#. Go through the various installation steps.
|
||||
|
||||
Odoo will automatically be started at the end of the installation.
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
Prepare
|
||||
~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian/Ubuntu
|
||||
|
||||
Odoo needs a `PostgreSQL`_ server to run properly. The default configuration for
|
||||
the Odoo 'deb' package is to use the PostgreSQL server on the same host as your
|
||||
Odoo instance. Execute the following command in order to install the PostgreSQL server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install postgresql -y
|
||||
|
||||
.. group-tab:: Fedora
|
||||
|
||||
Odoo needs a `PostgreSQL`_ server to run properly. Make sure that the `sudo` command is
|
||||
available and well configured and, only then, execute the following command in order to
|
||||
install the PostgreSQL server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf install -y postgresql-server
|
||||
$ sudo postgresql-setup --initdb --unit postgresql
|
||||
$ sudo systemctl enable postgresql
|
||||
$ sudo systemctl start postgresql
|
||||
|
||||
.. warning::
|
||||
`wkhtmltopdf` is not installed through **pip** and must be installed manually in version `0.12.5
|
||||
<the wkhtmltopdf download page_>`_ for it to support headers and footers. See our `wiki
|
||||
<https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for more details on the various versions.
|
||||
|
||||
Repository
|
||||
~~~~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian/Ubuntu
|
||||
|
||||
Odoo S.A. provides a repository that can be used with Debian and Ubuntu distributions. It can
|
||||
be used to install *Odoo Community Edition* by executing the following commands **as root**:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
|
||||
# echo "deb http://nightly.odoo.com/15.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list
|
||||
# apt-get update && apt-get install odoo
|
||||
|
||||
You can then use the usual `apt-get upgrade` command to keep your installation up-to-date.
|
||||
|
||||
.. group-tab:: Fedora
|
||||
|
||||
Odoo S.A. provides a repository that can be used with the Fedora distributions. It can be used
|
||||
to install *Odoo Community Edition* by executing the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf config-manager --add-repo=https://nightly.odoo.com/15.0/nightly/rpm/odoo.repo
|
||||
$ sudo dnf install -y odoo
|
||||
$ sudo systemctl enable odoo
|
||||
$ sudo systemctl start odoo
|
||||
|
||||
.. note::
|
||||
At this moment, there is no nightly repository for the Enterprise Edition.
|
||||
|
||||
Distribution package
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian/Ubuntu
|
||||
|
||||
Instead of using the repository as described above, the 'deb' packages for both the
|
||||
*Community* and *Enterprise* editions can be downloaded from the `official download page
|
||||
<download_>`_.
|
||||
|
||||
.. note::
|
||||
Odoo 15.0 'deb' package currently supports `Debian 11 (Bullseye)`_, `Ubuntu 20.04 (Focal)`_
|
||||
or above.
|
||||
|
||||
Next, execute the following commands **as root**:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# dpkg -i <path_to_installation_package> # this probably fails with missing dependencies
|
||||
# apt-get install -f # should install the missing dependencies
|
||||
# dpkg -i <path_to_installation_package>
|
||||
|
||||
This will install Odoo as a service, create the necessary PostgreSQL_ user
|
||||
and automatically start the server.
|
||||
|
||||
.. warning::
|
||||
- The `python3-xlwt` Debian package does not exists in Debian Buster nor Ubuntu 18.04. This
|
||||
python module is needed to export into xls format.
|
||||
|
||||
If you need the feature, you can install it manually with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo pip3 install xlwt
|
||||
|
||||
- The `num2words` python package does not exists in Debian Buster nor Ubuntu 18.04. Textual
|
||||
amounts will not be rendered by Odoo and this could cause problems with the `l10n_mx_edi`
|
||||
module.
|
||||
|
||||
If you need this feature, you can install manually with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo pip3 install num2words
|
||||
|
||||
.. group-tab:: Fedora
|
||||
|
||||
Instead of using the repository as described above, the 'rpm' packages for both the
|
||||
*Community* and *Enterprise* editions can be downloaded from the `official download page
|
||||
<download_>`_.
|
||||
|
||||
.. note::
|
||||
Odoo 15.0 'rpm' package supports Fedora 34.
|
||||
|
||||
Once downloaded, the package can be installed using the 'dnf' package manager:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf localinstall odoo_15.0.latest.noarch.rpm
|
||||
$ sudo systemctl enable odoo
|
||||
$ sudo systemctl start odoo
|
||||
|
||||
.. _setup/install/source:
|
||||
|
||||
Source install
|
||||
==============
|
||||
|
||||
The source "installation" is really about not installing Odoo, and running it directly from source
|
||||
instead.
|
||||
|
||||
This can be more convenient for module developers as the Odoo source is more easily accessible
|
||||
than using packaged installation (for information or to build this documentation and have it
|
||||
available offline).
|
||||
|
||||
It also makes starting and stopping Odoo more flexible and explicit than the services set up by the
|
||||
packaged installations, and allows overriding settings using
|
||||
:ref:`command-line parameters <reference/cmdline>` without needing to edit a configuration file.
|
||||
|
||||
Finally it provides greater control over the system's set up, and allows to more easily keep
|
||||
(and run) multiple versions of Odoo side-by-side.
|
||||
|
||||
Fetch the sources
|
||||
-----------------
|
||||
|
||||
There are two ways to obtain the source code of Odoo: as a zip **archive** or through **git**.
|
||||
|
||||
Archive
|
||||
~~~~~~~
|
||||
|
||||
Community Edition:
|
||||
|
||||
* `Official download page <download_>`_
|
||||
* `GitHub repository <community-repository_>`_
|
||||
* `Nightly server <nightly_>`_
|
||||
|
||||
Enterprise Edition:
|
||||
|
||||
* `Official download page <download_>`_
|
||||
* `GitHub repository <enterprise-repository_>`_
|
||||
|
||||
.. _setup/install/source/git:
|
||||
|
||||
Git
|
||||
~~~
|
||||
|
||||
The following requires `Git <git_>`_ to be installed on your machine and that you have basic
|
||||
knowledge of Git commands. To clone a Git repository, you must choose between cloning with HTTPS or
|
||||
SSH. If you do not know the difference between the two, the best option is most likely HTTPS. If you
|
||||
are following the :doc:`Getting started </developer/howtos/rdtraining>` developer tutorial, or plan
|
||||
on contributing to Odoo source code, choose SSH.
|
||||
|
||||
.. note::
|
||||
**The Enterprise Git repository does not contain the full Odoo source code**. It is only a
|
||||
collection of extra add-ons. The main server code is in the Community version. Running the
|
||||
Enterprise version actually means running the server from the Community version with the
|
||||
addons-path option set to the folder with the Enterprise version. You need to clone both the
|
||||
Community and Enterprise repository to have a working Odoo Enterprise installation. See
|
||||
:ref:`setup/install/editions` to get access to the Enterprise repository.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Clone with HTTPS
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> git clone https://github.com/odoo/odoo.git
|
||||
C:\> git clone https://github.com/odoo/enterprise.git
|
||||
|
||||
.. tab:: Clone with SSH
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> git clone git@github.com:odoo/odoo.git
|
||||
C:\> git clone git@github.com:odoo/enterprise.git
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Clone with HTTPS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/odoo/odoo.git
|
||||
$ git clone https://github.com/odoo/enterprise.git
|
||||
|
||||
.. tab:: Clone with SSH
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone git@github.com:odoo/odoo.git
|
||||
$ git clone git@github.com:odoo/enterprise.git
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Clone with HTTPS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/odoo/odoo.git
|
||||
$ git clone https://github.com/odoo/enterprise.git
|
||||
|
||||
.. tab:: Clone with SSH
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone git@github.com:odoo/odoo.git
|
||||
$ git clone git@github.com:odoo/enterprise.git
|
||||
|
||||
.. note::
|
||||
**The Enterprise git repository does not contain the full Odoo source code**. It is only a
|
||||
collection of extra add-ons. The main server code is in the Community version. Running the
|
||||
Enterprise version actually means running the server from the Community version with the
|
||||
addons-path option set to the folder with the Enterprise version. You need to clone both the
|
||||
Community and Enterprise repository to have a working Odoo Enterprise installation.
|
||||
|
||||
.. _setup/install/source/prepare:
|
||||
|
||||
Prepare
|
||||
-------
|
||||
|
||||
Python
|
||||
~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
Odoo requires Python 3.7 or later to run. Visit `Python's download page <https://www.python.org/downloads/windows/>`_
|
||||
to download and install the latest version of Python 3 on your machine.
|
||||
|
||||
During installation, check **Add Python 3 to PATH**, then click **Customize Installation** and make
|
||||
sure that **pip** is checked.
|
||||
|
||||
.. note::
|
||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
||||
versions are not compatible with Odoo.
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> python --version
|
||||
|
||||
Verify also that pip_ is installed for this version.
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> pip --version
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
Odoo requires Python 3.7 or later to run. Use your package manager to download and install Python 3
|
||||
on your machine if it is not already done.
|
||||
|
||||
.. note::
|
||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
||||
versions are not compatible with Odoo.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 --version
|
||||
|
||||
Verify also that pip_ is installed for this version.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip3 --version
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
Odoo requires Python 3.7 or later to run. Use your preferred package manager (homebrew_, macports_)
|
||||
to download and install Python 3 on your machine if it is not already done.
|
||||
|
||||
.. note::
|
||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
||||
versions are not compatible with Odoo.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 --version
|
||||
|
||||
Verify also that pip_ is installed for this version.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip3 --version
|
||||
|
||||
PostgreSQL
|
||||
~~~~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
Odoo uses PostgreSQL as database management system. `Download and install PostgreSQL
|
||||
<https://www.postgresql.org/download/windows/>`_ (supported version: 10.0 and later).
|
||||
|
||||
By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need
|
||||
to create a new PostgreSQL user:
|
||||
|
||||
#. Add PostgreSQL's `bin` directory (by default:
|
||||
:file:`C:\\Program Files\\PostgreSQL\\<version>\\bin`) to your `PATH`.
|
||||
#. Create a postgres user with a password using the pg admin gui:
|
||||
|
||||
1. Open **pgAdmin**.
|
||||
2. Double-click the server to create a connection.
|
||||
3. Select :menuselection:`Object --> Create --> Login/Group Role`.
|
||||
4. Enter the username in the **Role Name** field (e.g. `odoo`).
|
||||
5. Open the **Definition** tab and enter the password (e.g. `odoo`), then click **Save**.
|
||||
6. Open the **Privileges** tab and switch **Can login?** to `Yes` and **Create database?**
|
||||
to `Yes`.
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
Odoo uses PostgreSQL as database management system. Use your package manager to download and
|
||||
install PostgreSQL (supported version: 10.0 and later).
|
||||
|
||||
It can be achieved by executing the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install postgresql postgresql-client
|
||||
|
||||
By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need
|
||||
to create a new PostgreSQL user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo -u postgres createuser -s $USER
|
||||
$ createdb $USER
|
||||
|
||||
.. note::
|
||||
Because your PostgreSQL user has the same name as your Unix login, you will be able to
|
||||
connect to the database without password.
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
Odoo uses PostgreSQL as database management system. Use `postgres.app
|
||||
<https://postgresapp.com>`_ to download and install PostgreSQL (supported version: 10.0 and
|
||||
later).
|
||||
|
||||
.. tip::
|
||||
To make the command line tools bundled with `postgres.app` available, make sure to setup your
|
||||
`$PATH` variable by following the `Postgres.app CLI Tools Instructions
|
||||
<https://postgresapp.com/documentation/cli-tools.html>`_.
|
||||
|
||||
By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need
|
||||
to create a new PostgreSQL user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo -u postgres createuser -s $USER
|
||||
$ createdb $USER
|
||||
|
||||
.. note::
|
||||
Because your PostgreSQL user has the same name as your Unix login, you will be able to
|
||||
connect to the database without password.
|
||||
|
||||
.. _install/dependencies:
|
||||
|
||||
Dependencies
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
Before installing the dependencies, you must download and install the `Build Tools for Visual
|
||||
Studio <https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019>`_.
|
||||
When prompted, select **C++ build tools** in the **Workloads** tab and install them.
|
||||
|
||||
Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo
|
||||
community directory.
|
||||
|
||||
.. tip::
|
||||
It can be preferable to not mix python modules packages between different instances of Odoo
|
||||
or with your system. You can use virtualenv_ to create isolated Python environments.
|
||||
|
||||
Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on
|
||||
the requirements file in a terminal **with Administrator privileges**:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> cd \CommunityPath
|
||||
C:\> pip install setuptools wheel
|
||||
C:\> pip install -r requirements.txt
|
||||
|
||||
For languages with right-to-left interface (such as Arabic or Hebrew), the package `rtlcss`
|
||||
is needed:
|
||||
|
||||
#. Download and install `nodejs <https://nodejs.org/en/download/>`_.
|
||||
#. Install `rtlcss`:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> npm install -g rtlcss
|
||||
|
||||
#. Edit the System Environment's variable `PATH` to add the folder where `rtlcss.cmd` is
|
||||
located (typically: :file:`C:\\Users\\<user>\\AppData\\Roaming\\npm\\`).
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
Using your **distribution packages** is the preferred way of installing dependencies.
|
||||
Alternatively, you can install the python dependencies with **pip**.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Debian/Ubuntu
|
||||
|
||||
For Debian-based systems, the packages are listed in the `debian/control
|
||||
<https://github.com/odoo/odoo/blob/master/debian/control>`_ file of the Odoo sources.
|
||||
|
||||
On Debian/Ubuntu, the following commands should install the required packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
|
||||
|
||||
.. tab:: Install with pip
|
||||
|
||||
As some of the python packages need a compilation step, they require system libraries to
|
||||
be installed.
|
||||
|
||||
On Debian/Ubuntu-based systems, the following command should install these required
|
||||
libraries:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install python3-pip libldap2-dev libpq-dev libsasl2-dev
|
||||
|
||||
Odoo dependencies are listed in the :file:`requirements.txt` file located at the root of
|
||||
the Odoo community directory.
|
||||
|
||||
.. note::
|
||||
| The python packages in :file:`requirements.txt` are based on their stable/LTS
|
||||
Debian/Ubuntu corresponding version at the moment of the Odoo release.
|
||||
| E.g., for Odoo 15.0, the `python3-babel` package version is 2.8.0 in Debian
|
||||
Bullseye and 2.6.0 in Ubuntu Focal. The lowest version is then chosen in the
|
||||
:file:`requirements.txt`.
|
||||
|
||||
.. tip::
|
||||
It can be preferable to not mix python modules packages between different instances
|
||||
of Odoo or with your system. You can use virtualenv_ to create isolated Python
|
||||
environments.
|
||||
|
||||
Navigate to the path of your Odoo Community installation (:file:`CommunityPath`) and run
|
||||
**pip** on the requirements file to install the requirements for the current user.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ pip install -r requirements.txt
|
||||
|
||||
For languages with right-to-left interface (such as Arabic or Hebrew), the package `rtlcss` is
|
||||
needed:
|
||||
|
||||
#. Download and install **nodejs** and **npm** with your package manager.
|
||||
#. Install `rtlcss`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo npm install -g rtlcss
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo
|
||||
community directory.
|
||||
|
||||
.. tip::
|
||||
It can be preferable to not mix python modules packages between different instances of Odoo
|
||||
or with your system. You can use virtualenv_ to create isolated Python environments.
|
||||
|
||||
Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on
|
||||
the requirements file:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ pip3 install setuptools wheel
|
||||
$ pip3 install -r requirements.txt
|
||||
|
||||
.. warning::
|
||||
Non-Python dependencies need to be installed with a package manager:
|
||||
|
||||
#. Download and install the **Command Line Tools**:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ xcode-select --install
|
||||
|
||||
#. Download and install the package manager of your choice (homebrew_, macports_).
|
||||
#. Install non-python dependencies.
|
||||
|
||||
For languages with right-to-left interface (such as Arabic or Hebrew), the package `rtlcss` is
|
||||
needed:
|
||||
|
||||
#. Download and install **nodejs** with your preferred package manager (homebrew_, macports_).
|
||||
#. Install `rtlcss`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo npm install -g rtlcss
|
||||
|
||||
.. important::
|
||||
`wkhtmltopdf` is not installed through **pip** and must be installed manually in version `0.12.5
|
||||
<the wkhtmltopdf download page_>`_ for it to support headers and footers. See our `wiki
|
||||
<https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for more details on the various versions.
|
||||
|
||||
Running Odoo
|
||||
------------
|
||||
|
||||
Once all dependencies are set up, Odoo can be launched by running `odoo-bin`, the
|
||||
command-line interface of the server. It is located at the root of the Odoo Community directory.
|
||||
|
||||
To configure the server, you can either specify :ref:`command-line arguments
|
||||
<reference/cmdline/server>` or a :ref:`configuration file <reference/cmdline/config>`.
|
||||
|
||||
.. tip::
|
||||
For the Enterprise edition, you must add the path to the `enterprise` addons to the `addons-path`
|
||||
argument. Note that it must come before the other paths in `addons-path` for addons to be loaded
|
||||
correctly.
|
||||
|
||||
Common necessary configurations are:
|
||||
|
||||
- PostgreSQL user and password.
|
||||
- Custom addon paths beyond the defaults, to load your own modules.
|
||||
|
||||
A typical way to run the server would be:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> cd CommunityPath/
|
||||
C:\> python odoo-bin -r dbuser -w dbpassword --addons-path=addons -d mydb
|
||||
|
||||
Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the
|
||||
PostgreSQL login, `dbpassword` is the PostgreSQL password, and `mydb` is the name of the
|
||||
PostgreSQL database.
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ python3 odoo-bin --addons-path=addons -d mydb
|
||||
|
||||
Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name
|
||||
of the PostgreSQL database.
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ python3 odoo-bin --addons-path=addons -d mydb
|
||||
|
||||
Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name
|
||||
of the PostgreSQL database.
|
||||
|
||||
After the server has started (the INFO log `odoo.modules.loading: Modules loaded.` is printed), open
|
||||
http://localhost:8069 in your web browser and log in with the base administrator account: Use
|
||||
`admin` for the :guilabel:`Email` and, again, `admin` for the :guilabel:`Password`. That's it, you
|
||||
just logged into your own Odoo database!
|
||||
|
||||
.. tip::
|
||||
- From there, you can create and manage new :doc:`users
|
||||
</applications/general/users/manage_users>`.
|
||||
- The user account you use to log into Odoo's web interface differs from the :option:`--db_user
|
||||
<odoo-bin -r>` CLI argument.
|
||||
|
||||
.. seealso::
|
||||
:doc:`The exhaustive list of CLI arguments for odoo-bin </developer/cli>`.
|
||||
|
||||
.. _setup/install/docker:
|
||||
|
||||
Docker
|
||||
======
|
||||
|
||||
The full documentation on how to use Odoo with Docker can be found on the
|
||||
official Odoo `docker image <https://hub.docker.com/_/odoo/>`_ page.
|
||||
|
||||
.. _Debian 11 (Bullseye): https://www.debian.org/releases/bullseye/
|
||||
.. _demo: https://demo.odoo.com
|
||||
.. _docker: https://www.docker.com
|
||||
.. _download: https://www.odoo.com/page/download
|
||||
.. _Ubuntu 20.04 (Focal): http://releases.ubuntu.com/20.04/
|
||||
.. _EPEL: https://fedoraproject.org/wiki/EPEL
|
||||
.. _PostgreSQL: http://www.postgresql.org
|
||||
.. _the official installer:
|
||||
.. _install pip:
|
||||
https://pip.pypa.io/en/latest/installing.html#install-pip
|
||||
.. _Quilt: http://en.wikipedia.org/wiki/Quilt_(software)
|
||||
.. _saas: https://www.odoo.com/page/start
|
||||
.. _the wkhtmltopdf download page: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5
|
||||
.. _UAC: http://en.wikipedia.org/wiki/User_Account_Control
|
||||
.. _wkhtmltopdf: http://wkhtmltopdf.org
|
||||
.. _pip: https://pip.pypa.io
|
||||
.. _macports: https://www.macports.org
|
||||
.. _homebrew: http://brew.sh
|
||||
.. _wheels: https://wheel.readthedocs.org/en/latest/
|
||||
.. _virtualenv: https://pypi.python.org/pypi/virtualenv
|
||||
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/en/latest/
|
||||
.. _pywin32: http://sourceforge.net/projects/pywin32/files/pywin32/
|
||||
.. _community-repository: https://github.com/odoo/odoo
|
||||
.. _enterprise-repository: https://github.com/odoo/enterprise
|
||||
.. _Editions: https://www.odoo.com/pricing#pricing_table_features
|
||||
.. _nightly: https://nightly.odoo.com/
|
||||
.. _extra: https://nightly.odoo.com/extra/
|
@ -1,16 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
========
|
||||
Maintain
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
|
||||
maintain/domain_names
|
||||
maintain/google_oauth
|
||||
maintain/update
|
||||
maintain/enterprise
|
||||
maintain/hosting_changes
|
||||
maintain/online
|
||||
maintain/on_premise
|
||||
maintain/supported_versions
|
@ -1,336 +0,0 @@
|
||||
============
|
||||
Domain names
|
||||
============
|
||||
|
||||
A **domain name** works as an address for your website. It makes the Internet much more accessible
|
||||
as it allows users to type a meaningful web address, such as ``www.odoo.com``, rather than its
|
||||
server's IP address with a series of numbers.
|
||||
|
||||
You can use a custom domain name to access your Odoo database and websites:
|
||||
|
||||
- By :ref:`registering a free domain name with Odoo <domain-name/odoo-register>` (for Odoo Online
|
||||
databases)
|
||||
- By :ref:`configuring a custom domain that you already own <domain-name/existing>`.
|
||||
|
||||
.. note::
|
||||
Odoo Online and Odoo.sh databases, including their websites, use by default a subdomain of
|
||||
``odoo.com`` for both the URL and the emails (e.g., ``https://example.odoo.com``).
|
||||
|
||||
.. important::
|
||||
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
|
||||
databases for one year. Visitors can then access your website with an address such as
|
||||
``www.example.com`` rather than the default ``example.odoo.com``.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Register a Free Domain Name
|
||||
<https://www.odoo.com/slides/slide/register-a-free-domain-name-1663>`_
|
||||
- `Odoo Quick Tips: Get a free domain name! <https://www.youtube.com/watch?v=eAfgeNOHLP4>`_
|
||||
|
||||
.. _domain-name/about:
|
||||
|
||||
About domain names
|
||||
==================
|
||||
|
||||
Having a **good domain name** is as important to your branding as the name of your business or
|
||||
organization as it is the first thing your visitors will notice. We recommend you keep them *simple,
|
||||
short, easy to remember and spell*.
|
||||
|
||||
A **subdomain** is a domain that is a part of another domain. It often refers to the additional part
|
||||
that comes before the main domain name. Traditionally, most websites use the ``www.`` subdomain,
|
||||
but any string of letters can be used as well. You can use subdomains to direct your visitors to
|
||||
other websites than your main website or to specific pages (e.g., ``experience.odoo.com`` points to
|
||||
a specific page.)
|
||||
|
||||
All domain names are referenced in the **Domain Name System**, or **DNS**, which works as a giant
|
||||
directory for the Internet. There are many DNS servers, so any modification to the DNS can take up
|
||||
to 72 hours to propagate worldwide on all servers.
|
||||
|
||||
.. _domain-name/odoo-register:
|
||||
|
||||
Register a free domain name with Odoo
|
||||
=====================================
|
||||
|
||||
You can register a domain name for your Odoo Online database directly from Odoo Website or your
|
||||
database manager.
|
||||
|
||||
.. important::
|
||||
- Your domain name is **free for one year** if you register it with Odoo!
|
||||
- The domain name is registered with `Gandi <https://www.gandi.net/>`_, the domain name
|
||||
registrar.
|
||||
- You are the owner of the domain name and can use it for other purposes.
|
||||
- Odoo manages payment and technical support for you.
|
||||
- This offer doesn't include any mailbox. However, you can :ref:`configure your MX records
|
||||
<domain-name/odoo-manage>` to use your own email server or solution such as Google Workspace.
|
||||
|
||||
To do so, go to :menuselection:`Website --> Go to website --> Promote --> Domain Name`.
|
||||
Alternatively, open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
||||
:guilabel:`settings` button next to your database, then on :guilabel:`Domain names`.
|
||||
|
||||
.. image:: domain_names/register-promote.png
|
||||
:align: center
|
||||
:alt: Clicking on Domain Names from an Odoo website
|
||||
|
||||
Search for the domain name of your choice to check its availability, then select the one you want to
|
||||
register for your website.
|
||||
|
||||
.. image:: domain_names/register-search.png
|
||||
:align: center
|
||||
:alt: The search of the domain name example.com shows which associated domains are available.
|
||||
|
||||
Next, fill in the form with your information to become the domain name owner.
|
||||
|
||||
Your domain name is directly linked to your database, but you still have to :ref:`map your domain
|
||||
name with your website <domain-name/website-map>`.
|
||||
|
||||
.. note::
|
||||
- Free domain names are also available for free Odoo Online databases (if you installed one app
|
||||
only, for example). In this case, Odoo reviews your request and your website to avoid abuse.
|
||||
This process may take up to three days.
|
||||
- This is not available for Odoo.sh databases yet.
|
||||
|
||||
.. _domain-name/odoo-manage:
|
||||
|
||||
Manage your domain name registered with Odoo
|
||||
--------------------------------------------
|
||||
|
||||
To manage the DNS records of your domain name registered with Odoo or to visualize the contacts
|
||||
associated with it, open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
||||
:guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on
|
||||
:guilabel:`Contacts` or :guilabel:`DNS`.
|
||||
|
||||
.. image:: domain_names/manage.png
|
||||
:align: center
|
||||
:alt: Management of the domain names linked to an Odoo database
|
||||
|
||||
.. note::
|
||||
Please `submit a support ticket <https://www.odoo.com/help>`_ if you need further assistance to
|
||||
manage your domain name.
|
||||
|
||||
.. _domain-name/existing:
|
||||
|
||||
Configure your existing domain name
|
||||
===================================
|
||||
|
||||
If you already own a domain name, you can use it to point to your website.
|
||||
|
||||
To avoid any issue with the :ref:`SSL certificate validation <domain-name/ssl>`, we highly recommend
|
||||
that you proceed with the following actions in this order:
|
||||
|
||||
#. :ref:`Add a CNAME record <domain-name/cname>` on your domain name's DNS zone.
|
||||
#. :ref:`Map your domain name with your Odoo database <domain-name/db-map>`.
|
||||
#. :ref:`Map your domain name with your Odoo website <domain-name/website-map>`.
|
||||
|
||||
.. _domain-name/cname:
|
||||
|
||||
Add a CNAME record
|
||||
------------------
|
||||
|
||||
A **CNAME record** is a type of DNS record that points to the IP address of another website rather
|
||||
than to directly to an IP address.
|
||||
|
||||
You need a CNAME record that points to your Odoo database. The requirements are detailed in your
|
||||
database manager.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
The target address is the current address of your database, as defined at its creation (e.g.,
|
||||
``example.odoo.com``)
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
Your project's main address is defined in :menuselection:`Settings --> Project Name`.
|
||||
|
||||
If you want to target a specific branch (production, staging or development), go to
|
||||
:menuselection:`Branches --> select your branch --> Settings --> Custom domains`, and click on
|
||||
:guilabel:`How to set up my domain?`. A message indicates which address your CNAME record
|
||||
should target.
|
||||
|
||||
#. Open your domain name's manager dashboard.
|
||||
#. Open the **DNS zone** management page for the domain name you want to configure.
|
||||
#. Create a **CNAME record** pointing to the address of your database.
|
||||
|
||||
While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``, you
|
||||
can of course use any domain name of your choice, with any subdomain (e.g.,
|
||||
``anything.example.com``).
|
||||
|
||||
.. example::
|
||||
You own the domain name ``example.com``, and you have an Odoo Online database at the address
|
||||
``example.odoo.com``. You want to access your Odoo database primarily with the domain
|
||||
``www.example.com`` but also with the :ref:`naked domain <domain-name/naked-domain>`
|
||||
``example.com``.
|
||||
|
||||
To do so, you create a CNAME record for the ``www`` subdomain, with ``example.odoo.com`` as the
|
||||
target. The DNS zone manager generates the following rule and adds it to your DNS zone: ``www IN
|
||||
CNAME example.odoo.com.``
|
||||
|
||||
You also create a redirection from ``example.com`` to ``wwww.example.com``.
|
||||
|
||||
Your new DNS records are propagated to all DNS servers.
|
||||
|
||||
.. note::
|
||||
Here are some specific guidelines to create a CNAME record:
|
||||
|
||||
- `GoDaddy <https://www.godaddy.com/help/add-a-cname-record-19236>`_
|
||||
- `Namecheap <https://www.namecheap.com/support/knowledgebase/article.aspx/9646/2237/how-to-create-a-cname-record-for-your-domain>`_
|
||||
- `OVH <https://docs.ovh.com/us/en/domains/web_hosting_how_to_edit_my_dns_zone/#add-a-new-dns-record>`_
|
||||
- `CloudFlare <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
|
||||
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
|
||||
|
||||
.. _domain-name/naked-domain:
|
||||
|
||||
Naked domain
|
||||
~~~~~~~~~~~~
|
||||
|
||||
A **naked domain** is a domain name that doesn't have any subdomain at the beginning of the address
|
||||
(e.g., ``odoo.com`` instead of ``www.odoo.com``).
|
||||
|
||||
You may want your naked domain to redirect to your website as some visitors may not type the full
|
||||
domain name to access your website.
|
||||
|
||||
#. Open your domain name's manager dashboard.
|
||||
#. Create a **redirection** from the naked domain (``example.com``) to your main domain name
|
||||
(``www.example.com``).
|
||||
|
||||
.. note::
|
||||
Depending on your domain name registrar, this redirection may be already pre-configured.
|
||||
|
||||
.. _domain-name/db-map:
|
||||
|
||||
Map your domain name with your Odoo database
|
||||
--------------------------------------------
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
Open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
||||
:guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on
|
||||
:guilabel:`Use my own domain` at the bottom of the right column.
|
||||
|
||||
Type the domain name you want to add to this database, then click on :guilabel:`Verify` to
|
||||
check if the CNAME record is correctly configured. Once done, click on :guilabel:`I confirm,
|
||||
it's done`.
|
||||
|
||||
.. image:: domain_names/online-map.png
|
||||
:align: center
|
||||
:alt: Verification of the CNAME records of a domain name before mapping it with a database
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
Go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, type
|
||||
the domain name you want to add to this database, then click on :guilabel:`Add domain`.
|
||||
|
||||
.. image:: domain_names/odoo-sh-map.png
|
||||
:align: center
|
||||
:alt: Mapping a domain name with an Odoo.sh branch
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Odoo.sh branches: settings tab <odoosh-gettingstarted-branches-tabs-settings>`
|
||||
|
||||
.. warning::
|
||||
Make sure to :ref:`add a CNAME record <domain-name/cname>` to your domain name's DNS **before**
|
||||
mapping your domain name with your Odoo database.
|
||||
|
||||
Failing to do so may impede the validation of the :ref:`SSL certificate <domain-name/ssl>` and
|
||||
would result in a *certificate name mismatch* error. This is often displayed by web browsers as a
|
||||
warning such as *"Your connection is not private"*.
|
||||
|
||||
If this is the case and you have added the domain name to your database's settings less than five
|
||||
days ago, wait 24 hours as the validation may still happen. Otherwise, please `submit a support
|
||||
ticket <https://www.odoo.com/help>`_ including screenshots of your CNAME records.
|
||||
|
||||
.. _domain-name/ssl:
|
||||
|
||||
SSL encryption (HTTPS protocol)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**SSL encryption** is an encryption-based Internet security protocol. It allows your visitors to
|
||||
navigate your website through a secure connection, which appears as an ``https://`` protocol at the
|
||||
beginning of your web address, rather than a non-secure ``http://`` protocol.
|
||||
|
||||
Odoo generates a separate SSL certificate for each domain :ref:`mapped in the database manager
|
||||
<domain-name/db-map>`, using integration with `Let's Encrypt Certificate Authority and ACME protocol
|
||||
<https://letsencrypt.org/how-it-works/>`_.
|
||||
|
||||
.. note::
|
||||
- The certificate generation may take up to 24h.
|
||||
- Several attempts to validate your certificate are made during the five days following the
|
||||
moment you add your domain name in your database's settings.
|
||||
- If you already use another service, you can keep using it or simply change for Odoo.
|
||||
|
||||
.. _domain-name/web-base-url:
|
||||
|
||||
Web base URL of a database
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
If you have Odoo Website, you can disregard this part and directly :ref:`map your domain name
|
||||
with your website <domain-name/website-map>`.
|
||||
|
||||
The **web base URL** of a database, or **root URL** affects your main website address and all the
|
||||
links sent to your customers (e.g., quotations, portal links, etc.).
|
||||
|
||||
To configure it, access your Odoo database with your custom address, then log in as an administrator
|
||||
of your database (any user in the *Settings* group) from the login screen.
|
||||
|
||||
.. warning::
|
||||
Connecting to your database with the original Odoo subdomain address (e.g., ``example.odoo.com``
|
||||
also updates the web base URL of your database. See below to prevent these automatic updates.
|
||||
|
||||
Alternatively, you can do it manually. To do so, activate the :ref:`developer mode
|
||||
<developer-mode>`, then go to :menuselection:`Settings --> Technical --> System Parameters`.
|
||||
|
||||
Find the key called ``web.base.url`` (or create it if it does not exist) and enter the full address
|
||||
of your website as value, such as ``https://www.example.com``.
|
||||
|
||||
.. note::
|
||||
The URL must include the protocol ``https://`` (or ``http://``) and must not end with a slash
|
||||
(``/``).
|
||||
|
||||
To prevent the automatic update of the web base URL when an administrator logs in the database, you
|
||||
can create the following System Parameter:
|
||||
|
||||
- key: ``web.base.url.freeze``
|
||||
- value: ``True``
|
||||
|
||||
.. _domain-name/website-map:
|
||||
|
||||
Map your domain name with your website
|
||||
======================================
|
||||
|
||||
Mapping your domain name to your website isn't the same as mapping it with your database:
|
||||
|
||||
- It defines your domain name as the main one for your website, helping search engines to index your
|
||||
website properly.
|
||||
- It defines your domain name as the base URL for your database, including the portal links sent by
|
||||
email to your customers.
|
||||
- If you have multiple websites, it maps your domain name with the appropriate website.
|
||||
|
||||
Go to :menuselection:`Website --> Configuration --> Settings --> Website Info`. If you have multiple
|
||||
websites, select the one you want to configure.
|
||||
|
||||
In the :guilabel:`Domain` field, fill in the web address of your website (e.g.,
|
||||
``https://www.example.com``) and click on :guilabel:`Save`.
|
||||
|
||||
.. image:: domain_names/website-settings.png
|
||||
:align: center
|
||||
:alt: Configuring https://www.example.com as the Domain of the website
|
||||
|
||||
.. warning::
|
||||
Mapping your domain name with your Odoo website prevents Google from indexing both your custom
|
||||
domain name ``www.example.com`` and your original odoo database address ``example.odoo.com``.
|
||||
|
||||
If both addresses are already indexed, it may take some time before Google removes the indexation
|
||||
of the second address. You may also try using the `Google Search Console
|
||||
<https://search.google.com/search-console/welcome>`_ to fix this.
|
||||
|
||||
.. note::
|
||||
If you have multiple websites and companies on your database, make sure that you select the
|
||||
right :guilabel:`Company` in the website settings, next to the :guilabel:`Domain` settings. Doing
|
||||
so indicates Odoo which URL to use as the :ref:`base URL <domain-name/web-base-url>` according to
|
||||
the company in use.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/email_communication/email_servers`
|
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 7.2 KiB |
@ -1,106 +0,0 @@
|
||||
|
||||
.. _setup/enterprise:
|
||||
|
||||
===============================
|
||||
Upgrade Community to Enterprise
|
||||
===============================
|
||||
|
||||
Depending on your current installation, there are multiple ways to upgrade
|
||||
your community version.
|
||||
In any case the basic guidelines are:
|
||||
|
||||
* Backup your community database
|
||||
|
||||
.. image:: enterprise/db_manager.png
|
||||
:class: img-fluid
|
||||
|
||||
* Shutdown your server
|
||||
|
||||
* Install the web_enterprise module
|
||||
|
||||
* Restart your server
|
||||
|
||||
* Enter your Odoo Enterprise Subscription code
|
||||
|
||||
.. image:: enterprise/enterprise_code.png
|
||||
:class: img-fluid
|
||||
|
||||
On Linux, using an installer
|
||||
============================
|
||||
|
||||
* Backup your community database
|
||||
|
||||
* Stop the odoo service
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo service odoo stop
|
||||
|
||||
* Install the enterprise .deb (it should install over the community package)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dpkg -i <path_to_enterprise_deb>
|
||||
|
||||
* Update your database to the enterprise packages using
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 /usr/bin/odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
* You should be able to connect to your Odoo Enterprise instance using your usual mean of identification.
|
||||
You can then link your database with your Odoo Enterprise Subscription by entering the code you received
|
||||
by e-mail in the form input
|
||||
|
||||
|
||||
On Linux, using the source code
|
||||
===============================
|
||||
|
||||
There are many ways to launch your server when using sources, and you probably
|
||||
have your own favourite. You may need to adapt sections to your usual workflow.
|
||||
|
||||
* Shutdown your server
|
||||
* Backup your community database
|
||||
* Update the ``--addons-path`` parameter of your launch command (see :ref:`setup/install/source`)
|
||||
* Install the web_enterprise module by using
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
Depending on the size of your database, this may take some time.
|
||||
|
||||
* Restart your server with the updated addons path of point 3.
|
||||
You should be able to connect to your instance. You can then link your database with your
|
||||
Odoo Enterprise Subscription by entering the code you received by e-mail in the form input
|
||||
|
||||
On Windows
|
||||
==========
|
||||
|
||||
* Backup your community database
|
||||
|
||||
* Uninstall Odoo Community (using the Uninstall executable in the installation folder) -
|
||||
PostgreSQL will remain installed
|
||||
|
||||
.. image:: enterprise/windows_uninstall.png
|
||||
:class: img-fluid
|
||||
|
||||
* Launch the Odoo Enterprise Installer and follow the steps normally. When choosing
|
||||
the installation path, you can set the folder of the Community installation
|
||||
(this folder still contains the PostgreSQL installation).
|
||||
Uncheck ``Start Odoo`` at the end of the installation
|
||||
|
||||
.. image:: enterprise/windows_setup.png
|
||||
:class: img-fluid
|
||||
|
||||
* Using a command window, update your Odoo Database using this command (from the Odoo
|
||||
installation path, in the server subfolder)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ odoo.exe -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
* No need to manually launch the server, the service is running.
|
||||
You should be able to connect to your Odoo Enterprise instance using your usual
|
||||
mean of identification. You can then link your database with your Odoo Enterprise
|
||||
Subscription by entering the code you received by e-mail in the form input
|
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 27 KiB |
@ -1,192 +0,0 @@
|
||||
========================================
|
||||
Connect Gmail to Odoo using Google OAuth
|
||||
========================================
|
||||
|
||||
Odoo is compatible with Google's OAuth for Gmail. In order to send secure emails from a custom
|
||||
domain, all that is required is to configure a few settings on Google's *Workspace* platform, as
|
||||
well as on the back end of the Odoo database. This configuration works by using either a personal
|
||||
email address or an address created by a custom domain.
|
||||
|
||||
.. tip::
|
||||
For more information, visit `Google's documentation
|
||||
<https://support.google.com/cloud/answer/6158849>`_ on setting up OAuth.
|
||||
|
||||
Setup in Google
|
||||
===============
|
||||
|
||||
Create a new project
|
||||
--------------------
|
||||
|
||||
To get started, go to the `Google API Platform
|
||||
<https://console.cloud.google.com/apis/credentials/consent>`_. Log in with your *Google Workspace*
|
||||
account if you have one, otherwise log in with your personal Gmail account (this should match the
|
||||
email address you want to configure in Odoo).
|
||||
|
||||
After that, click on :guilabel:`Create Project`, located on the far right of the OAuth consent
|
||||
screen. If a project has already been created in this account, then the :guilabel:`New Project`
|
||||
option will be located on the top left under the :guilabel:`Select a project` drop-down menu.
|
||||
|
||||
On the :guilabel:`New Project` screen, rename the :guilabel:`Project name` to `Odoo` and browse for
|
||||
the :guilabel:`Location`. Set the :guilabel:`Location` as the `Google Workspace` organization. If
|
||||
you are using a personal Gmail account, then leave the :guilabel:`Location` as `No Organization`.
|
||||
|
||||
.. image:: google_oauth/new-project.png
|
||||
:align: center
|
||||
:alt: Project Name and Location for Google Oauth.
|
||||
|
||||
Click on :guilabel:`Create` to finish this step. On the next screen, :guilabel:`User Type` options,
|
||||
select the :guilabel:`External` option, and then click on :guilabel:`Create` again, which will
|
||||
finally navigate to the :guilabel:`Edit app registration` page.
|
||||
|
||||
Edit app registration
|
||||
---------------------
|
||||
|
||||
- On the :guilabel:`Oauth consent screen` step, under the :guilabel:`App information` section,
|
||||
enter `Odoo` in the :guilabel:`App name` field. Select the organization's email address under the
|
||||
:guilabel:`User support` email field.
|
||||
- Next, under :menuselection:`App Domain --> Authorized domains`, click on :guilabel:`Add Domain`
|
||||
and enter `odoo.com`.
|
||||
- After that, under the :guilabel:`Developer contact information` section, enter the organization's
|
||||
email address. Google uses this email address to notify the organization about any changes to
|
||||
your project.
|
||||
- Next, click on the :guilabel:`Save and Continue` button.
|
||||
- Then, skip the :guilabel:`Scopes` page by scrolling to the bottom and clicking on
|
||||
:guilabel:`Save and Continue`.
|
||||
- Next, add the email being configured under the :guilabel:`Test users` step by clicking on
|
||||
:guilabel:`Add Users` and then the :guilabel:`Save and Continue` button. A summary of the
|
||||
:guilabel:`App registration` appears.
|
||||
- Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard`.
|
||||
|
||||
Create Credentials
|
||||
------------------
|
||||
|
||||
Now that you have set up the project, you need to create credentials, which includes the
|
||||
:guilabel:`Client ID` and :guilabel:`Client Secret`. First, click on :guilabel:`Credentials` in the
|
||||
left sidebar menu.
|
||||
|
||||
Then, click on :guilabel:`Create Credentials` in the top menu and select
|
||||
:guilabel:`OAuth client ID` from the dropdown menu.
|
||||
|
||||
- Under :guilabel:`Application Type`, select :guilabel:`Web Application` from the dropdown menu.
|
||||
- In the :guilabel:`Client ID` field, enter `Odoo`.
|
||||
- Under the :guilabel:`Authorized redirect URIs` label, click the button :guilabel:`ADD URI`, and
|
||||
then input `https://yourdbname.odoo.com/google_gmail/confirm` in the :guilabel:`URIs 1` field. Be
|
||||
sure to replace the *yourdbname* part of the URL with your actual Odoo database name.
|
||||
- Next, click on :guilabel:`Create` to generate an OAuth :guilabel:`Client ID` and
|
||||
:guilabel:`Client Secret`. Finally, copy each generated value for later use when configuring in
|
||||
Odoo, and then navigate to the Odoo database.
|
||||
|
||||
.. image:: google_oauth/client-credentials.png
|
||||
:align: center
|
||||
:alt: Client ID and Client Secret for Google OAuth.
|
||||
|
||||
Setup in Odoo
|
||||
=============
|
||||
|
||||
Enter Google Credentials
|
||||
------------------------
|
||||
|
||||
First, open Odoo and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps`
|
||||
filter from the search bar and type in `Google`. Install the module called :guilabel:`Google Gmail`.
|
||||
|
||||
Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss`
|
||||
section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a
|
||||
new option for :guilabel:`Gmail Credentials`. Then, copy and paste the :guilabel:`Client ID` and
|
||||
:guilabel:`Client Secret` into the respective fields and :guilabel:`Save` the settings.
|
||||
|
||||
Configure outgoing email server
|
||||
-------------------------------
|
||||
|
||||
After that, on the :guilabel:`General Settings` page, under :guilabel:`Custom Email Servers`, click
|
||||
:guilabel:`Outgoing Email Servers` to configure the external Gmail account.
|
||||
|
||||
.. image:: google_oauth/outgoing-servers.png
|
||||
:align: center
|
||||
:alt: Configure Outgoing Email Servers in Odoo.
|
||||
|
||||
Then, :guilabel:`Create` a new email server and select the option for :guilabel:`Gmail`. Next, fill
|
||||
in the :guilabel:`Description` (can be anything) and the email :guilabel:`Username` and click on
|
||||
:guilabel:`Connect your Gmail account`.
|
||||
|
||||
A new window from :guilabel:`Google` opens to complete the authorization process. Select the
|
||||
appropriate email address that is being configured in Odoo.
|
||||
|
||||
If the email address is a personal account, an extra step pops up, click :guilabel:`Continue` to
|
||||
allow the verification and connect the Gmail account to Odoo.
|
||||
|
||||
Then, allow Odoo to access the Google account by clicking on :guilabel:`Continue` or
|
||||
:guilabel:`Allow`. After that, the page navigates back to the newly configured outgoing email
|
||||
server in Odoo. The configuration automatically loads the token in Odoo, and a tag stating
|
||||
:guilabel:`Gmail Token Valid` appears in green.
|
||||
|
||||
.. image:: google_oauth/green-token.png
|
||||
:align: center
|
||||
:alt: Configure Outgoing Email Servers in Odoo.
|
||||
|
||||
Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should
|
||||
appear. The Odoo database can now send safe, secure emails through Google using OAuth
|
||||
authentication.
|
||||
|
||||
Google OAuth FAQ
|
||||
================
|
||||
|
||||
Production VS Testing Publishing Status
|
||||
---------------------------------------
|
||||
|
||||
Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of Testing) will
|
||||
display the following warning message:
|
||||
|
||||
.. image:: google_oauth/published-status.png
|
||||
:align: center
|
||||
:alt: OAuth is Limited to 100 Sensitive Scope Logins.
|
||||
|
||||
To correct this warning, navigate to the `Google API Platform
|
||||
<https://console.cloud.google.com/apis/credentials/consent>`_. If the :guilabel:`Publishing status`
|
||||
is :guilabel:`In Production`, click :guilabel:`Back to Testing` to correct the issue.
|
||||
|
||||
No Test Users Added
|
||||
-------------------
|
||||
|
||||
If no test users are added to the OAuth consent screen, then a 403 access denied error will
|
||||
populate.
|
||||
|
||||
.. image:: google_oauth/403-error.png
|
||||
:align: center
|
||||
:alt: 403 Access Denied Error.
|
||||
|
||||
To correct this error, return to the :guilabel:`OAuth consent screen` under
|
||||
:guilabel:`APIs & Services` and add test user(s) to the app. Add the email that you are configuring
|
||||
in Odoo.
|
||||
|
||||
Gmail Module not updated
|
||||
------------------------
|
||||
|
||||
If the :guilabel:`Gmail Module` in Odoo has not been updated to the latest version, then a
|
||||
:guilabel:`Forbidden` error message populates.
|
||||
|
||||
.. image:: google_oauth/forbidden-error.png
|
||||
:align: center
|
||||
:alt: Forbidden you don't have the permission to access the requested resource.
|
||||
|
||||
To correct this error, go to the :guilabel:`Apps` module and clear out the search terms. Then,
|
||||
search for `Gmail` or `Google` and upgrade the :guilabel:`Google Gmail` module. Finally, click on
|
||||
the three dots on the upper right of the module and select :guilabel:`Upgrade`.
|
||||
|
||||
Application Type
|
||||
----------------
|
||||
|
||||
When creating the :guilabel:`Credentials` (OAuth Client ID and Client Secret), if
|
||||
:guilabel:`Desktop App` is selected for the :guilabel:`Application Type`, an
|
||||
:guilabel:`Authorization Error` appears.
|
||||
|
||||
.. image:: google_oauth/error-400.png
|
||||
:align: center
|
||||
:alt: Error 400 Redirect URI Mismatch.
|
||||
|
||||
To correct this error, delete the credentials already created and create new credentials, selecting
|
||||
:guilabel:`Web Application` for the :guilabel:`Application Type`. Then, under
|
||||
:guilabel:`Authorized redirect URIs`, click :guilabel:`ADD URI` and type:
|
||||
`https://yourdbname.odoo.com/google_gmail/confirm` in the field.
|
||||
|
||||
.. note::
|
||||
Replace *yourdbname* in the URL with the Odoo database name.
|
@ -1,88 +0,0 @@
|
||||
|
||||
.. _db_management/hosting_changes:
|
||||
|
||||
=======================
|
||||
Change hosting solution
|
||||
=======================
|
||||
|
||||
You may want to move your Odoo database from one hosting solution to another.
|
||||
Depending on the platforms, you have to do it by yourself or contact our support team first.
|
||||
|
||||
From on-premises to Odoo Online
|
||||
===============================
|
||||
|
||||
1. Create a :ref:`duplicate <duplicate_premise>` of your database: in this duplicate, uninstall all the **non-standard apps**.
|
||||
2. Grab a "dump with filestore" of your database by using the Database Manager.
|
||||
3. **If you have time constraints, contact us earlier to schedule the transfer.**
|
||||
4. `Create a support ticket <https://www.odoo.com/help>`_ and attach the dump (if the file is too large, use any file transfer service and attach the link to your ticket). Also include your subscription number and the URL you want to use for your database (e.g.: my-company.odoo.com).
|
||||
5. We will make sure your database is compatible and upload it to our cloud. In case of technical issues, we will get in touch with you.
|
||||
6. It's done!
|
||||
|
||||
.. important::
|
||||
- Odoo Online is not compatible with **non-standard apps**.
|
||||
- The database you are moving to Odoo Online must be in a :doc:`supported version
|
||||
<supported_versions>`.
|
||||
|
||||
From on-premises to Odoo.sh
|
||||
===========================
|
||||
|
||||
1. Follow the :ref:`Import your database section of the Odoo.sh documentation <odoo_sh_import_your_database>`.
|
||||
2. ...and voilà!
|
||||
|
||||
From Odoo Online to on-premises
|
||||
===============================
|
||||
|
||||
1. Log into `your Odoo Online user portal <https://accounts.odoo.com/my/databases/manage>`_ and look for the version number of your database.
|
||||
2. If your database does not run a :ref:`major version <supported_versions>` of Odoo, you cannot host it on-premises yet, you have to upgrade it first to a new major version. (*e.g.: If your database runs Odoo 12.3 which is not a major version, you have to upgrade it first to Odoo 13.0 or 14.0.*)
|
||||
3. Download a backup of your database by clicking on the "Gear" icon next to your database name then :menuselection:`Download` (if the download fails due to your backup file being too large, contact `our support <https://www.odoo.com/help>`_)
|
||||
4. Restore it from the database manager on your local server.
|
||||
|
||||
From Odoo Online to Odoo.sh
|
||||
===========================
|
||||
|
||||
1. Log into `your Odoo Online user portal <https://accounts.odoo.com/my/databases/manage>`_ and look for the version number of your database.
|
||||
2. If your database does not run a :ref:`major version <supported_versions>` of Odoo, you cannot host it on Odoo.sh yet, you have to upgrade it first to a new major version. (*e.g.: If your database runs Odoo 12.3 which is not a major version, you have to upgrade it first to Odoo 13.0 or 14.0.*)
|
||||
3. Download a backup of your database by clicking on the "Gear" icon next to your database name then :menuselection:`Download` (if the download fails due to your backup file being too large, contact `our support <https://www.odoo.com/help>`_)
|
||||
4. Follow the :ref:`Import your database section of the Odoo.sh documentation <odoo_sh_import_your_database>`.
|
||||
|
||||
From Odoo.sh to Odoo Online
|
||||
===========================
|
||||
|
||||
#. Uninstall all the **non-standard apps**.
|
||||
#. `Create a support ticket <https://www.odoo.com/help>`_ and include the following:
|
||||
|
||||
- Your subscription number
|
||||
- The URL you want to use for your database (e.g., `example.odoo.com`)
|
||||
- Which branch you want to migrate
|
||||
- In which region you want to be hosted:
|
||||
|
||||
- Americas
|
||||
- Europe
|
||||
- Asia
|
||||
|
||||
- Which user(s) will be the administrator(s)
|
||||
- When (and in which timezone) you want the database to be up and running
|
||||
|
||||
#. We will make sure your database is compatible and upload it to our cloud. In case of technical
|
||||
issues, we will get in touch with you.
|
||||
#. All done!
|
||||
|
||||
.. important::
|
||||
- Odoo Online is not compatible with **non-standard apps**.
|
||||
- Make sure to uninstall all the **non-standard apps** in a staging build before doing it in your
|
||||
production build.
|
||||
|
||||
.. note::
|
||||
- Make sure you select the **region** that is closest to your users to reduce latency.
|
||||
- The future **administrator(s)** must have an odoo.com account.
|
||||
- The specific **date and time** at which you want the database to be up and running are mainly
|
||||
helpful to organize the switch from the odoo.sh server to the Odoo Online servers.
|
||||
- Databases are **not reachable** during their migration.
|
||||
- **If you have time constraints, contact us earlier to schedule the transfer**.
|
||||
|
||||
From Odoo.sh to on-premises
|
||||
===========================
|
||||
|
||||
1. Grab a :ref:`backup of your Odoo.sh production database <odoo_sh_branches_backups>`.
|
||||
2. Restore it from the database manager on your local server.
|
||||
|
@ -1,176 +0,0 @@
|
||||
==============================
|
||||
On-premise database management
|
||||
==============================
|
||||
|
||||
Register a database
|
||||
===================
|
||||
|
||||
To register your database, you just need to enter your Subscription Code in the
|
||||
banner in the App Switcher. Make sure you do not add extra spaces before or after
|
||||
your subscription code. If the registration is successful, it will turn green and
|
||||
will provide you with the Expiration Date of your freshly-registered database. You
|
||||
can check this Expiration Date in the About menu (Odoo 9) or in the Settings Dashboard
|
||||
(Odoo 10).
|
||||
|
||||
Registration Error Message
|
||||
--------------------------
|
||||
|
||||
If you are unable to register your database, you will likely encounter this
|
||||
message:
|
||||
|
||||
.. image:: on_premise/error_message_sub_code.png
|
||||
:align: center
|
||||
:alt: Something went wrong while registering your database,
|
||||
you can try again or contact Odoo Help
|
||||
|
||||
Solutions
|
||||
'''''''''
|
||||
|
||||
* Do you have a valid Enterprise subscription?
|
||||
|
||||
* Check if your subscription details get the tag "In Progress" on
|
||||
your `Odoo Account
|
||||
<https://accounts.odoo.com/my/subscription>`__ or with your Account Manager
|
||||
|
||||
* Have you already linked a database with your subscription reference?
|
||||
|
||||
* You can link only one database per subscription.
|
||||
(Need a test or a development database? `Find a partner
|
||||
<https://www.odoo.com/partners>`__)
|
||||
|
||||
* You can unlink the old database yourself on your `Odoo Contract
|
||||
<https://accounts.odoo.com/my/subscription>`__ with the button "Unlink database"
|
||||
|
||||
.. image:: on_premise/unlink_single_db.png
|
||||
:align: center
|
||||
|
||||
|
||||
A confirmation message will appear; make sure this is the correct database as
|
||||
it will be deactivated shortly:
|
||||
|
||||
.. image:: on_premise/unlink_confirm_enterprise_edition.png
|
||||
:align: center
|
||||
|
||||
|
||||
* Do you have the updated version of Odoo 9?
|
||||
|
||||
* From July 2016 onward, Odoo 9 now automatically change the uuid of a
|
||||
duplicated database; a manual operation is no longer required.
|
||||
|
||||
* If it's not the case, you may have multiple databases sharing the same
|
||||
UUID. Please check on your `Odoo Contract
|
||||
<https://accounts.odoo.com/my/subscription>`__, a short message will appear
|
||||
specifying which database is problematic:
|
||||
|
||||
.. image:: on_premise/unlink_db_name_collision.png
|
||||
:align: center
|
||||
|
||||
|
||||
In this case, you need to change the UUID on your test databases to solve this
|
||||
issue. You will find more information about this in :ref:`this section <duplicate_premise>`.
|
||||
|
||||
For your information, we identify database with UUID. Therefore, each database
|
||||
should have a distinct UUID to ensure that registration and invoicing proceed
|
||||
effortlessly for your and for us.
|
||||
|
||||
* Check your network and firewall settings
|
||||
|
||||
* The Update notification must be able to reach Odoo's subscription
|
||||
validation servers. In other words, make sure that the Odoo server is able
|
||||
to open outgoing connections towards:
|
||||
|
||||
* services.odoo.com on port 443 (or 80)
|
||||
* services.openerp.com on port 443 (or 80) for older deployments
|
||||
|
||||
* Once you activated your database, you must keep these ports open, as the
|
||||
Update notification runs once a week.
|
||||
|
||||
|
||||
|
||||
Error message due to too many users
|
||||
-----------------------------------
|
||||
|
||||
If you have more users in your local database than provisionned in your
|
||||
Odoo Enterprise subscription, you may encounter this message:
|
||||
|
||||
.. image:: on_premise/add_more_users.png
|
||||
:align: center
|
||||
:alt: This database will expire in X days, you
|
||||
have more users than your subscription allows
|
||||
|
||||
|
||||
When the message appears you have 30 days before the expiration.
|
||||
The countdown is updated everyday.
|
||||
|
||||
Solutions
|
||||
'''''''''
|
||||
|
||||
- **Add more users** on your subscription: follow the link and Validate
|
||||
the upsell quotation and pay for the extra users.
|
||||
- **Deactivate users** as explained in this `documentation <documentation.html#deactivating-users>`_
|
||||
and **Reject** the upsell quotation.
|
||||
|
||||
Once your database has the correct number of users, the expiration message
|
||||
will disappear automatically after a few days, when the next verification occurs.
|
||||
We understand that it can be a bit frightening to see the countdown,
|
||||
so you can :ref:`force an Update Notification <force_ping>` to make the message disappear
|
||||
right away.
|
||||
|
||||
Database expired error message
|
||||
------------------------------
|
||||
|
||||
If your database reaches its expiration date before your renew your subscription,
|
||||
you will encounter this message:
|
||||
|
||||
.. image:: on_premise/database_expired.png
|
||||
:align: center
|
||||
:alt: This database has expired.
|
||||
|
||||
|
||||
This **blocking** message appears after a non-blocking message that lasts 30 days.
|
||||
If you fail to take action before the end of the countdown, the database is expired.
|
||||
|
||||
Solutions
|
||||
'''''''''
|
||||
|
||||
* Renew your subscription: follow the link and renew your subscription - note that
|
||||
if you wish to pay by Wire Transfer, your subscription will effectively be renewed
|
||||
only when the payment arrives, which can take a few days. Credit card payments are
|
||||
processed immediately.
|
||||
* Contact our `Support <https://www.odoo.com/help>`__
|
||||
|
||||
None of those solutions worked for you? Please contact our
|
||||
`Support <https://www.odoo.com/help>`__
|
||||
|
||||
|
||||
.. _force_ping:
|
||||
|
||||
.. _duplicate_premise:
|
||||
|
||||
Duplicate a database
|
||||
====================
|
||||
|
||||
You can duplicate your database by accessing the database manager on your
|
||||
server (<odoo-server>/web/database/manager). In this page, you can easily
|
||||
duplicate your database (among other things).
|
||||
|
||||
.. image:: on_premise/db_manager.gif
|
||||
:align: center
|
||||
|
||||
|
||||
When you duplicate a local database, it is **strongly** advised to change
|
||||
the duplicated database's uuid (Unniversally Unique Identifier), since this
|
||||
uuid is how your database identifies itself with our servers. Having two
|
||||
databases with the same uuid could result in invoicing problems or registration
|
||||
problems down the line.
|
||||
|
||||
.. note:: From July 2016 onward, Odoo 9 now automatically change the uuid of a
|
||||
duplicated database; a manual operation is no longer required.
|
||||
|
||||
The database uuid is currently accessible from the menu :menuselection:`Settings --> Technical -->
|
||||
System Parameters`, we advise you to use a `uuid generator <https://www.uuidtools.com>`_ or to
|
||||
use the unix command ``uuidgen`` to generate a new uuid. You can then simply replace it like any
|
||||
other record by clicking on it and using the edit button.
|
||||
|
||||
.. image:: on_premise/db_uuid.png
|
||||
:align: center
|
Before Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 14 KiB |
@ -1,155 +0,0 @@
|
||||
=================================
|
||||
Online (SaaS) database management
|
||||
=================================
|
||||
|
||||
To manage a database, sign in to https://www.odoo.com and access the `database management page
|
||||
<https://www.odoo.com/my/databases>`_ by clicking on the user icon, then on *My Databases*.
|
||||
|
||||
.. image:: online/my-databases.png
|
||||
:align: center
|
||||
:alt: Clicking on the user icon opens a drop-down menu. "My databases" button is highlighted.
|
||||
|
||||
.. note::
|
||||
Make sure you are connected as the administrator of the database you want to manage.
|
||||
|
||||
.. image:: online/dropdown-menu.png
|
||||
:align: right
|
||||
:alt: Clicking on the gear icon opens the drop-down menu.
|
||||
|
||||
Open the drop-down menu next to the database you want to manage by clicking on the gear icon.
|
||||
|
||||
Several actions are available:
|
||||
|
||||
- :ref:`online/upgrade`
|
||||
- :ref:`online/duplicate`
|
||||
- :ref:`online/rename`
|
||||
- :ref:`online/download`
|
||||
- :ref:`online/domains`
|
||||
- :ref:`online/tags`
|
||||
- :ref:`online/delete`
|
||||
- :ref:`online/contact-support`
|
||||
- :ref:`online/users`
|
||||
|
||||
.. _online/upgrade:
|
||||
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
If you are *not* on the latest **Online version**, you should receive an invitation to :doc:`upgrade
|
||||
<../upgrade>` your database. A **Rolling Release button** on your database's main screen proposes an
|
||||
upgrade to the latest version (e.g., 13.0 to 15.1).
|
||||
|
||||
.. important::
|
||||
- | **If your Odoo database's version is lower than the latest major release:**
|
||||
| You must upgrade your database within two months. After these two months, an automatic
|
||||
upgrade is initiated.
|
||||
- | **If your Odoo database's version is equal to or higher than the latest major release:**
|
||||
| You can disregard the invitation to upgrade as you probably wouldn't benefit from new
|
||||
features every two months.
|
||||
|
||||
.. note::
|
||||
Versions that are not supported anymore become deprecated and need to be updated to avoid
|
||||
security issues. We recommend you initiate the upgrade of the database yourself, as this method
|
||||
allows you to request a test upgrade of your database to check for any discrepancies.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../upgrade`
|
||||
- :doc:`supported_versions`
|
||||
|
||||
.. _online/duplicate:
|
||||
|
||||
Duplicate
|
||||
=========
|
||||
|
||||
Make an exact copy of the database to be able to perform testing without compromising the daily
|
||||
operations.
|
||||
|
||||
.. important::
|
||||
- By checking *For testing purposes*, all external communication (emails, payments, delivery
|
||||
orders, etc.) are disabled by default on the duplicated database.
|
||||
- Duplicate databases expire automatically after 15 days.
|
||||
|
||||
.. _online/rename:
|
||||
|
||||
Rename
|
||||
======
|
||||
|
||||
Rename the database and its URL.
|
||||
|
||||
.. _online/download:
|
||||
|
||||
Download
|
||||
========
|
||||
|
||||
Download instantly a ZIP file with a backup of the database.
|
||||
|
||||
.. note::
|
||||
Databases are backed up daily according to the `Odoo Cloud SLA
|
||||
<https://www.odoo.com/cloud-sla>`_.
|
||||
|
||||
.. _online/domains:
|
||||
|
||||
Domains
|
||||
=======
|
||||
|
||||
Configure custom domains to access the database via another URL.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`domain_names`
|
||||
|
||||
.. _online/tags:
|
||||
|
||||
Tags
|
||||
====
|
||||
|
||||
Add tags to sort your databases out. You can search the tags in the search bar.
|
||||
|
||||
.. _online/delete:
|
||||
|
||||
Delete
|
||||
======
|
||||
|
||||
Delete a database instantly.
|
||||
|
||||
.. danger::
|
||||
Deleting a database means that all data is permanently lost. The deletion is instant and for all
|
||||
users. It is recommended to create a backup of the database before deleting it.
|
||||
|
||||
Read carefully the warning message that pops up and proceed only if you fully understand the
|
||||
implications of deleting a database:
|
||||
|
||||
.. image:: online/delete.png
|
||||
:align: center
|
||||
:alt: A warning message is prompted before deleting a database.
|
||||
|
||||
.. note::
|
||||
- Only an administrator can delete a database.
|
||||
- The database name is immediately available for a new database.
|
||||
- It is not possible to delete a database if it is expired or linked to a subscription. If
|
||||
needed, please get in touch with `Odoo Support <https://www.odoo.com/help>`_.
|
||||
- To delete your account, please get in touch with `Odoo Support <https://www.odoo.com/help>`_.
|
||||
|
||||
.. _online/contact-support:
|
||||
|
||||
Contact Support
|
||||
===============
|
||||
|
||||
Access the Odoo `support page <https://www.odoo.com/help>`_ with your database's details already
|
||||
pre-filled.
|
||||
|
||||
.. _online/users:
|
||||
|
||||
Invite / Remove Users
|
||||
=====================
|
||||
|
||||
To invite users, fill out the email address of the new user and click on *Invite*. To add multiple
|
||||
users, click on *Add more users*.
|
||||
|
||||
.. image:: online/invite-users.png
|
||||
:align: center
|
||||
:alt: Clicking on "Add more users" adds additional email fields.
|
||||
|
||||
To remove users, select the users to remove and click on *Remove*.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users/manage_users`
|
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 9.6 KiB |
@ -1,86 +0,0 @@
|
||||
|
||||
.. _supported_versions:
|
||||
|
||||
==================
|
||||
Supported versions
|
||||
==================
|
||||
|
||||
Odoo provides support and bug fixing **for the 3 last major versions** of Odoo.
|
||||
|
||||
.. note::
|
||||
Odoo releases intermediary versions called **Online versions** on the :doc:`Odoo Online <online>`
|
||||
hosting every two months. Odoo Online users can then benefit from the latest features of Odoo.
|
||||
|
||||
- Admins of Odoo Online databases are invited to :doc:`upgrade <../upgrade>` them regularly.
|
||||
- Online versions are *not* released for Odoo.sh and On-Premise installations.
|
||||
- Online versions are listed below as *SaaS*.
|
||||
|
||||
What's the support status of my Odoo?
|
||||
=====================================
|
||||
|
||||
This matrix shows the support status of every version.
|
||||
|
||||
**Major releases are in bold type.**
|
||||
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| | Odoo Online | Odoo.sh | On-Premise | Release date | End of support |
|
||||
+=================+=============+==========+=============+================+========================+
|
||||
| Odoo saas~15.2 | |green| | N/A | N/A | March 2022 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~15.1 | |red| | N/A | N/A | February 2022 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 15.0** | |green| | |green| | |green| | October 2021 | October 2024 (planned) |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 14.0** | |green| | |green| | |green| | October 2020 | October 2023 (planned) |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 13.0** | |green| | |green| | |green| | October 2019 | October 2022 (planned) |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~12.3 | |red| | N/A | N/A | August 2019 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 12.0** | |red| | |red| | |red| | October 2018 | October 2021 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~11.3 | |red| | N/A | N/A | April 2018 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 11.0** | |red| | |red| | |red| | October 2017 | October 2020 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo 10.saas~15 | |red| | N/A | N/A | March 2017 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo 10.saas~14 | |red| | N/A | N/A | January 2017 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 10.0** | |red| | |red| | |red| | October 2016 | October 2019 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo 9.saas~11 | |red| | N/A | N/A | May 2016 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 9.0** | |red| | N/A | |red| | October 2015 | October 2018 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo 8.saas~6 | |red| | N/A | N/A | February 2015 | |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 8.0** | |red| | N/A | |red| | September 2014 | October 2017 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
|
||||
.. note::
|
||||
|
||||
|green| Supported version
|
||||
|
||||
|red| End-of-support
|
||||
|
||||
N/A Never released for this platform
|
||||
|
||||
🏁 Future version, not released yet
|
||||
|
||||
.. |green| raw:: html
|
||||
|
||||
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
.. |red| raw:: html
|
||||
|
||||
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
I run an older version of Odoo/OpenERP/TinyERP
|
||||
==============================================
|
||||
|
||||
OpenERP 7.0, 6.1, 6.0 and 5.0 is not supported anymore, on any platform.
|
||||
|
||||
TinyERP 4.0, 3.0, 2.0 and 1.0 is not supported anymore, on any platform.
|
||||
|
||||
Even though we don't support older versions, you can always `upgrade from any version <https://upgrade.odoo.com/>`_.
|
67
content/administration/mobile.rst
Normal file
@ -0,0 +1,67 @@
|
||||
================
|
||||
Odoo mobile apps
|
||||
================
|
||||
|
||||
Two kind of Odoo mobile app exist: the progressive web app (PWA) and store apps. Using the PWA is
|
||||
recommended.
|
||||
|
||||
Progressive web app (PWA)
|
||||
=========================
|
||||
|
||||
PWAs are web-based applications designed to function across different devices and platforms,
|
||||
leveraging web browsers to deliver user experiences similar to native apps.
|
||||
|
||||
The Odoo PWA features include:
|
||||
|
||||
- Quick access by adding the PWA to a device's home screen
|
||||
- Seamless and borderless navigation experience
|
||||
- Push notifications
|
||||
- SSO authentication
|
||||
|
||||
To install the Odoo PWA, launch a browser supporting PWAs, and sign in to an Odoo database. The
|
||||
instructions to install a PWA depend on the platform and browser used.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Android
|
||||
|
||||
**Chrome**: open Chrome's menu (:guilabel:`⋮`), select :guilabel:`Install app`, and tap
|
||||
:guilabel:`Install`.
|
||||
|
||||
**Firefox**: open Firefox's menu (:guilabel:`⋮`), select :guilabel:`Install`, and either touch
|
||||
and hold the Odoo icon or tap :guilabel:`Add automatically`.
|
||||
|
||||
The PWA can also be installed with **Samsung Internet**, **Edge**, and **Opera**.
|
||||
|
||||
.. tab:: iOS
|
||||
|
||||
**Safari**: open the **Share** menu by tapping the square with an arrow pointing upwards icon,
|
||||
select :guilabel:`Add to Home Screen`, edit the PWA details if desired, and tap
|
||||
:guilabel:`Add`.
|
||||
|
||||
On iOS 16.4 and above, the PWA can also be installed with **Chrome**, **Firefox**, and
|
||||
**Edge**.
|
||||
|
||||
.. tab:: Desktop
|
||||
|
||||
**Chrome** and **Edge**: click the installation icon at the right of the address bar and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. seealso::
|
||||
- `Google Chrome Help: Use progressive web apps
|
||||
<https://support.google.com/chrome/answer/9658361>`_
|
||||
- `MDN Web Docs: Installing and uninstalling web apps
|
||||
<https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing>`_
|
||||
- `Microsoft Support: Install, manage, or uninstall apps in Microsoft Edge <https://support.microsoft.com/en-us/topic/install-manage-or-uninstall-apps-in-microsoft-edge-0c156575-a94a-45e4-a54f-3a84846f6113>`_
|
||||
|
||||
Store apps
|
||||
==========
|
||||
|
||||
The Odoo mobile apps are available for download on the `Google Play Store
|
||||
<https://play.google.com/store/apps/details?id=com.odoo.mobile>`_ and `Apple App Store
|
||||
<https://apps.apple.com/app/odoo/id1272543640>`_.
|
||||
|
||||
.. important::
|
||||
The iOS app cannot be updated and will be deprecated at some point in the future.
|
||||
|
||||
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
|
36
content/administration/neutralized_database.rst
Normal file
@ -0,0 +1,36 @@
|
||||
====================
|
||||
Neutralized database
|
||||
====================
|
||||
|
||||
A neutralized database is a non-production database on which several parameters are deactivated.
|
||||
This enables one to carry out tests without the risk of launching specific automated processes that
|
||||
could impact production data (e.g., sending emails to customers). Live access is removed and
|
||||
turned into a testing environment.
|
||||
|
||||
.. note::
|
||||
**Any testing database created is a neutralized database:**
|
||||
|
||||
- testing backup databases
|
||||
- duplicate databases
|
||||
- for Odoo.sh: staging and development databases
|
||||
|
||||
.. important::
|
||||
A database can also be neutralized when upgrading, as it is vital to do some tests before
|
||||
switching to a new version.
|
||||
|
||||
Deactivated features
|
||||
====================
|
||||
|
||||
Here is a non-exhaustive list of the deactivated features:
|
||||
|
||||
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
|
||||
- outgoing emails
|
||||
- bank synchronization
|
||||
- payment providers
|
||||
- delivery methods
|
||||
- :abbr:`IAP (In-App Purchase)` tokens
|
||||
- website visibility (prevent search engines from indexing your site)
|
||||
|
||||
.. note::
|
||||
**A red banner at the top of the screen is displayed on the neutralized database so that it can
|
||||
be seen immediately.**
|
BIN
content/administration/odoo_account/delete-account.png
Normal file
After Width: | Height: | Size: 18 KiB |
80
content/administration/odoo_accounts.rst
Normal file
@ -0,0 +1,80 @@
|
||||
=================
|
||||
Odoo.com accounts
|
||||
=================
|
||||
|
||||
This documentation is dedicated to edits made to an Odoo.com account. The following processes
|
||||
describe how to delete an Odoo.com account, and how to change the password on an Odoo.com account.
|
||||
|
||||
Delete Odoo.com account
|
||||
=======================
|
||||
|
||||
To delete an Odoo.com account, start by clicking the profile icon in the upper-right corner
|
||||
(represented by the username and icon) to reveal a drop-down menu. From the drop-down menu, select
|
||||
:guilabel:`My Odoo.com account`, which reveals the user portal.
|
||||
|
||||
From the user portal, the delete option can be accessed by going to :menuselection:`My Account -->
|
||||
Edit Security Settings --> Delete Account`. It can also be accessed by going to
|
||||
`https://www.odoo.com/my/home <https://www.odoo.com/my/home>`_.
|
||||
|
||||
.. danger::
|
||||
Deleting an Odoo account is irreversible. Be careful performing this action, as the Odoo.com
|
||||
account is **not** retrievable once deleted.
|
||||
|
||||
Upon clicking the :guilabel:`Delete Account` button, a pop-up window appears, requesting
|
||||
confirmation for the account deletion.
|
||||
|
||||
.. image:: odoo_account/delete-account.png
|
||||
:align: center
|
||||
:alt: Clicking on the Delete Account button will populate a window verifying the change.
|
||||
|
||||
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
|
||||
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
|
||||
|
||||
.. _odoocom/change_password:
|
||||
|
||||
Odoo.com account password change
|
||||
================================
|
||||
|
||||
To change an Odoo.com account password, first login into the Odoo.com user account from the Odoo.com
|
||||
login page. After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼
|
||||
(down arrow)` icon next to the profile icon. Then, select :guilabel:`My Account`, and a portal
|
||||
dashboard appears.
|
||||
|
||||
To change the Odoo.com password, click on the :guilabel:`Edit Security Settings` link, below the
|
||||
:menuselection:`Account Security` section. Next, make the necessary changes by typing in the current
|
||||
:guilabel:`Password`, :guilabel:`New Password`, and verify the new password. Lastly, click on
|
||||
:guilabel:`Change Password` to complete the password change.
|
||||
|
||||
.. note::
|
||||
If a customer would like to change the login, contact Odoo support `here
|
||||
<https://www.odoo.com/help>`_.
|
||||
|
||||
.. note::
|
||||
Passwords for Odoo.com users and portal users remain separate, even if the same email address is
|
||||
used.
|
||||
|
||||
Add two-factor authentication
|
||||
=============================
|
||||
|
||||
To add two-factor authentication, login into the Odoo.com user account from the Odoo.com login page.
|
||||
After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼ (down
|
||||
arrow)` icon next to the :guilabel:`profile icon`. Then, select :guilabel:`My Account`, and a portal
|
||||
dashboard appears.
|
||||
|
||||
If the user would like to turn on two-factor authentication (2FA) for Odoo.com access, click on the
|
||||
:guilabel:`Edit Security Settings` link below the :menuselection:`Account Security` section.
|
||||
|
||||
Click on :guilabel:`Enable two-factor authentication` to turn on :abbr:`2FA (two-factor
|
||||
authentication)`. Then, confirm the current password in the :guilabel:`Password` field. Next, click
|
||||
on :guilabel:`Confirm Password`. Following that, activate :abbr:`2FA (two-factor authentication)` in
|
||||
a :abbr:`2FA (two-factor authentication)` app (Google Authenticator, Authy, etc.), by scanning the
|
||||
:guilabel:`QR code` or entering a :guilabel:`Verification Code`.
|
||||
|
||||
Finally, click on :guilabel:`Enable two-factor authentication` to complete the setup.
|
||||
|
||||
.. note::
|
||||
Under :guilabel:`My Account` Odoo.com users can also access the following:
|
||||
|
||||
- :guilabel:`My Partner dashboard`
|
||||
- :guilabel:`My In-App Services`
|
||||
- :guilabel:`My Apps Dashboard`
|
151
content/administration/odoo_online.rst
Normal file
@ -0,0 +1,151 @@
|
||||
===========
|
||||
Odoo Online
|
||||
===========
|
||||
|
||||
`Odoo Online <https://www.odoo.com/trial>`_ provides private databases which are fully managed and
|
||||
hosted by Odoo. It can be used for long-term production or to test Odoo thoroughly, including
|
||||
customizations that don't require code.
|
||||
|
||||
.. note::
|
||||
Odoo Online is incompatible with custom modules or the Odoo App Store.
|
||||
|
||||
Odoo Online databases are accessed using any web browser and do not require a local installation.
|
||||
|
||||
To quickly try out Odoo, shared `demo <https://demo.odoo.com>`_ instances are available. No
|
||||
registration is required, but each instance only lives for a few hours.
|
||||
|
||||
Database management
|
||||
===================
|
||||
|
||||
To manage a database, go to the `database manager <https://www.odoo.com/my/databases>`_ and sign in
|
||||
as the database administrator.
|
||||
|
||||
All the main database management options are available by clicking the database name, except the
|
||||
upgrade option, which can be accessed by clicking the **arrow in a circle** icon next to the
|
||||
database name. It is only displayed if an upgrade is available.
|
||||
|
||||
.. image:: odoo_online/database-manager.png
|
||||
:alt: Accessing the database management options
|
||||
|
||||
- :ref:`odoo_online/upgrade`
|
||||
- :ref:`odoo_online/duplicate`
|
||||
- :ref:`odoo_online/rename`
|
||||
- :ref:`odoo_online/download`
|
||||
- :ref:`odoo_online/domains`
|
||||
- :ref:`odoo_online/tags`
|
||||
- :ref:`odoo_online/delete`
|
||||
- :ref:`odoo_online/contact-support`
|
||||
- :ref:`odoo_online/users`
|
||||
|
||||
.. _odoo_online/upgrade:
|
||||
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
Trigger a database upgrade.
|
||||
|
||||
.. seealso::
|
||||
For more information about the upgrade process, check out the :ref:`Odoo Online upgrade
|
||||
documentation <upgrade-request-test>`.
|
||||
|
||||
.. _odoo_online/duplicate:
|
||||
|
||||
Duplicate
|
||||
=========
|
||||
|
||||
Create an exact copy of the database, which can be used to perform testing without compromising
|
||||
daily operations.
|
||||
|
||||
.. important::
|
||||
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
|
||||
orders, etc.) are disabled by default on the duplicated database.
|
||||
- Duplicated databases expire automatically after 15 days.
|
||||
- A maximum of five duplicates can be made per database. Under extraordinary circumstances,
|
||||
contact `support <https://www.odoo.com/help>`_ to raise the limit.
|
||||
|
||||
.. _odoo_online/rename:
|
||||
|
||||
Rename
|
||||
======
|
||||
|
||||
Rename the database and its URL.
|
||||
|
||||
.. _odoo_online/download:
|
||||
|
||||
Download
|
||||
========
|
||||
|
||||
Download a ZIP file containing a backup of the database.
|
||||
|
||||
.. note::
|
||||
Databases are backed up daily as per the `Odoo Cloud Hosting SLA
|
||||
<https://www.odoo.com/cloud-sla>`_.
|
||||
|
||||
.. _odoo_online/domains:
|
||||
|
||||
Domain names
|
||||
============
|
||||
|
||||
Use a custom :doc:`domain name </applications/websites/website/configuration/domain_names>` to
|
||||
access the database via another URL.
|
||||
|
||||
.. tip::
|
||||
You can :ref:`register a domain name for free <domain-name/register>`.
|
||||
|
||||
.. _odoo_online/tags:
|
||||
|
||||
Tags
|
||||
====
|
||||
|
||||
Add tags to easily identify and sort your databases.
|
||||
|
||||
.. tip::
|
||||
You can search for tags in the search bar.
|
||||
|
||||
.. _odoo_online/delete:
|
||||
|
||||
Delete
|
||||
======
|
||||
|
||||
Delete a database instantly.
|
||||
|
||||
.. danger::
|
||||
Deleting a database means that all data is permanently lost. The deletion is instant and applies
|
||||
to all users. It is recommended to create a backup of the database before deleting it.
|
||||
|
||||
Carefully read the warning message and only proceed if the implications of deleting a database are
|
||||
fully understood.
|
||||
|
||||
.. image:: odoo_online/delete.png
|
||||
:alt: The warning message displayed before deleting a database
|
||||
|
||||
.. note::
|
||||
- Only an administrator can delete a database.
|
||||
- The database name is immediately made available to anyone.
|
||||
- Deleting a database if it has expired or is linked to a subscription is impossible. In that
|
||||
case, contact `Odoo Support <https://www.odoo.com/help>`_.
|
||||
|
||||
.. _odoo_online/contact-support:
|
||||
|
||||
Contact us
|
||||
==========
|
||||
|
||||
Access the `Odoo.com support page <https://www.odoo.com/help>`_ with the database's details already
|
||||
pre-filled.
|
||||
|
||||
.. _odoo_online/users:
|
||||
|
||||
Invite / remove users
|
||||
=====================
|
||||
|
||||
To invite users, fill out the new user's email address and click :guilabel:`Invite`. To add multiple
|
||||
users, click :guilabel:`Add more users`.
|
||||
|
||||
.. image:: odoo_online/invite-users.png
|
||||
:alt: Inviting a user on a database
|
||||
|
||||
To remove users, select them and click :guilabel:`Remove`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users`
|
||||
- :doc:`odoo_accounts`
|
BIN
content/administration/odoo_online/database-manager.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
@ -1,8 +1,8 @@
|
||||
:nosearch:
|
||||
|
||||
=================
|
||||
========
|
||||
Advanced
|
||||
=================
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
==================================
|
||||
==========
|
||||
Containers
|
||||
==================================
|
||||
==========
|
||||
|
||||
Overview
|
||||
========
|
||||
@ -17,7 +17,7 @@ The platform will take care to install these dependencies in your containers.
|
||||
`The pip requirements specifiers <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_
|
||||
documentation can help you write a :file:`requirements.txt` file.
|
||||
To have a concrete example,
|
||||
check out the `requirements.txt file of Odoo <https://github.com/odoo/odoo/blob/14.0/requirements.txt>`_.
|
||||
check out the `requirements.txt file of Odoo <{GITHUB_PATH}/requirements.txt>`_.
|
||||
|
||||
The :file:`requirements.txt` files of submodules are taken into account as well. The platform
|
||||
looks for :file:`requirements.txt` files in each folder containing Odoo modules: Not in the module folder itself,
|
||||
@ -167,16 +167,16 @@ In the above commands, the argument:
|
||||
* ``--stop-after-init`` will immediately shutdown the server instance after it completed the operations you asked.
|
||||
|
||||
More options are available and detailed in the
|
||||
:doc:`CLI documentation </developer/cli>`.
|
||||
:doc:`CLI documentation </developer/reference/cli>`.
|
||||
|
||||
You can find in the logs (*~/logs/odoo.log*) the addons path used by Odoo.sh to run your server.
|
||||
Look for "*odoo: addons paths*":
|
||||
|
||||
::
|
||||
|
||||
2018-02-19 10:51:39,267 4 INFO ? odoo: Odoo version 13.0
|
||||
2018-02-19 10:51:39,267 4 INFO ? odoo: Odoo version {BRANCH}
|
||||
2018-02-19 10:51:39,268 4 INFO ? odoo: Using configuration file at /home/odoo/.config/odoo/odoo.conf
|
||||
2018-02-19 10:51:39,268 4 INFO ? odoo: addons paths: ['/home/odoo/data/addons/13.0', '/home/odoo/src/user', '/home/odoo/src/enterprise', '/home/odoo/src/themes', '/home/odoo/src/odoo/addons', '/home/odoo/src/odoo/odoo/addons']
|
||||
2018-02-19 10:51:39,268 4 INFO ? odoo: addons paths: ['/home/odoo/data/addons/{BRANCH}', '/home/odoo/src/user', '/home/odoo/src/enterprise', '/home/odoo/src/themes', '/home/odoo/src/odoo/addons', '/home/odoo/src/odoo/odoo/addons']
|
||||
|
||||
**Be careful**, especially with your production database.
|
||||
Operations that you perform running this Odoo server instance are not isolated:
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
.. _odoosh-advanced-frequent_technical_questions:
|
||||
|
||||
==================================
|
||||
============================
|
||||
Frequent Technical Questions
|
||||
==================================
|
||||
============================
|
||||
|
||||
"Scheduled actions do not run at the exact time they were expected"
|
||||
-------------------------------------------------------------------
|
||||
@ -30,3 +30,31 @@ We advise that:
|
||||
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
|
||||
cause side-effects if they are started more often than expected.
|
||||
|
||||
.. _ip-address-change:
|
||||
|
||||
How can I automate tasks when an IP address change occurs?
|
||||
----------------------------------------------------------
|
||||
|
||||
**Odoo.sh notifies project administrators of IP address changes.**
|
||||
Additionally, when the IP address of a production instance changes, an HTTP `GET` request is made
|
||||
to the path `/_odoo.sh/ip-change` with the new IP address included as a query string parameter
|
||||
(`new`), along with the previous IP address as an additional parameter (`old`).
|
||||
|
||||
This mechanism allows custom actions to be applied in response to the IP address change
|
||||
(e.g., sending an email, contacting a firewall API, configuring database objects, etc.)
|
||||
|
||||
For security reasons, the `/_odoo.sh/ip-change` route is accessible only internally by the platform
|
||||
itself and returns a `403` response if accessed through any other means.
|
||||
|
||||
Here is a pseudo-implementation example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class IPChangeController(http.Controller):
|
||||
|
||||
@http.route('/_odoo.sh/ip-change', auth='public')
|
||||
def ip_change(self, old=None, new=None):
|
||||
_logger.info("IP address changed from %s to %s", old, new)
|
||||
# Then perform whatever action required for your use case, e.g., update an
|
||||
# ir.config_parameter, send an email, contact an external firewall service's API, ...
|
||||
return 'ok'
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
.. _odoosh-advanced-submodules:
|
||||
|
||||
==================================
|
||||
==========
|
||||
Submodules
|
||||
==================================
|
||||
==========
|
||||
|
||||
Overview
|
||||
========
|
||||
@ -64,7 +64,7 @@ On Github, you can get the repository URL with the *Clone or download* button of
|
||||
.. _odoosh-advanced-submodules-withgit:
|
||||
|
||||
With Git (advanced)
|
||||
---------------------
|
||||
-------------------
|
||||
|
||||
In a terminal, in the folder where your Git repository is cloned,
|
||||
checkout the branch in which you want to add a submodule:
|
||||
|
@ -1,8 +1,8 @@
|
||||
:nosearch:
|
||||
|
||||
=================
|
||||
===========
|
||||
Get started
|
||||
=================
|
||||
===========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
@ -1,7 +1,6 @@
|
||||
|
||||
==================================
|
||||
========
|
||||
Branches
|
||||
==================================
|
||||
========
|
||||
|
||||
Overview
|
||||
========
|
||||
@ -14,7 +13,7 @@ The branches view gives you an overview of the different branches your repositor
|
||||
.. _odoosh-gettingstarted-branches-stages:
|
||||
|
||||
Stages
|
||||
===============
|
||||
======
|
||||
|
||||
Odoo.sh offers three different stages for your branches: production, staging and development.
|
||||
|
||||
@ -27,6 +26,7 @@ You can change the stage of a branch by drag and dropping it into the stage sect
|
||||
|
||||
Production
|
||||
----------
|
||||
|
||||
This is the branch holding the code on which your production database runs.
|
||||
There can be only one production branch.
|
||||
|
||||
@ -42,7 +42,7 @@ instance will be held temporarily unavailable for maintenance reason.
|
||||
|
||||
This method is equivalent to perform an upgrade of the module through the Apps menu,
|
||||
or through the :code:`-u` switch of
|
||||
:doc:`the command line </developer/cli>`.
|
||||
:doc:`the command line </developer/reference/cli>`.
|
||||
|
||||
In the case the changes in the commit prevent the server to restart,
|
||||
or if the modules update fails,
|
||||
@ -59,6 +59,7 @@ will automatically be set back to the development stage after 30 days.
|
||||
|
||||
Staging
|
||||
-------
|
||||
|
||||
Staging branches are meant to test your new features using the production data without compromising
|
||||
the actual production database with test records. They will create databases that are neutralized
|
||||
duplicates of the production database.
|
||||
@ -83,9 +84,9 @@ The unit tests are not performed as, in Odoo, they currently rely on the demo da
|
||||
production database. In the future, if Odoo supports to run the unit tests without the demo data,
|
||||
Odoo.sh will then consider running the tests on staging databases.
|
||||
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
Development branches create new databases using the demo data to run the unit tests.
|
||||
The installed modules are the ones included in your branches. You can change this list of modules
|
||||
to install in your :ref:`project Settings <odoosh-gettingstarted-settings-modules-installation>`.
|
||||
@ -98,7 +99,7 @@ disable the tests or allow specific tests to be run with custom tags in the :ref
|
||||
<odoosh-gettingstarted-branches-tabs-settings>`.
|
||||
|
||||
Similar to staging branches, the emails are not sent but are intercepted by a mailcatcher and
|
||||
scheduled actions are not triggered as often is the database is not in use.
|
||||
scheduled actions are not triggered as long as the database is not in use.
|
||||
|
||||
The databases created for development branches are meant to live around three days.
|
||||
After that, they can be automatically garbage collected to make room for new databases without prior notice.
|
||||
@ -107,6 +108,7 @@ After that, they can be automatically garbage collected to make room for new dat
|
||||
|
||||
Merging your branches
|
||||
---------------------
|
||||
|
||||
You can merge your branches easily by drag and dropping them into each other.
|
||||
|
||||
.. image:: branches/interface-branches-merge.png
|
||||
@ -147,10 +149,11 @@ If you test configuration changes in staging branches, and want them to be appli
|
||||
.. _odoosh-gettingstarted-branches-tabs:
|
||||
|
||||
Tabs
|
||||
=============
|
||||
====
|
||||
|
||||
History
|
||||
-------
|
||||
|
||||
An overview of your branch history:
|
||||
|
||||
* The messages of the commits and their authors,
|
||||
@ -168,6 +171,7 @@ When an operation is successful, you can access the database thanks to the *conn
|
||||
|
||||
Mails
|
||||
-----
|
||||
|
||||
This tab contains the mail catcher. It displays an overview of the emails sent by your database.
|
||||
The mail catcher is available for your development and
|
||||
staging branches as the emails of your production database are really sent instead of being intercepted.
|
||||
@ -178,6 +182,7 @@ staging branches as the emails of your production database are really sent inste
|
||||
|
||||
Shell
|
||||
-----
|
||||
|
||||
A shell access to your container. You can perform basic linux commands (:code:`ls`, :code:`top`)
|
||||
and open a shell on your database by typing :code:`psql`.
|
||||
|
||||
@ -187,13 +192,13 @@ and open a shell on your database by typing :code:`psql`.
|
||||
You can open multiple tabs and drag-and-drop them to arrange the layout as you wish,
|
||||
for instance side by side.
|
||||
|
||||
|
||||
.. Note::
|
||||
Long running shell instances are not guaranteed. Idle shells can be
|
||||
disconnected at anytime in order to free up resources.
|
||||
|
||||
Editor
|
||||
------
|
||||
|
||||
An online integrated development environment (IDE) to edit the source code.
|
||||
You can also open terminals, Python consoles and even Odoo Shell consoles.
|
||||
|
||||
@ -205,6 +210,7 @@ for instance side by side.
|
||||
|
||||
Monitoring
|
||||
----------
|
||||
|
||||
This link contains various monitoring metrics of the current build.
|
||||
|
||||
.. image:: branches/interface-branches-monitoring.png
|
||||
@ -217,6 +223,7 @@ On the graphs, annotations help you relate to changes on the build (database imp
|
||||
|
||||
Logs
|
||||
----
|
||||
|
||||
A viewer to have a look to your server logs.
|
||||
|
||||
.. image:: branches/interface-branches-logs.png
|
||||
@ -240,6 +247,7 @@ The fetching is automatically stopped after 5 minutes. You can restart it using
|
||||
|
||||
Backups
|
||||
-------
|
||||
|
||||
A list of the backups available for download and restore, the ability to perform a manual backup and to import a
|
||||
database.
|
||||
|
||||
@ -259,16 +267,16 @@ This server only keeps one month of backups: 7 daily and 4 weekly backups.
|
||||
Dedicated backup servers keep the same backups, as well as 3 additional monthly backups.
|
||||
To restore or download one of these monthly backups, please `contact us <https://www.odoo.com/help>`_.
|
||||
|
||||
If you merge a commit updating the version of one or several modules (in :file:`__manifest__.py`), or their linked python
|
||||
dependencies (in :file:`requirements.txt`), then Odoo.sh performs a backup automatically (flagged with type Update in the list),
|
||||
as either the container will be changed by the installation of new pip packages, either the database itself will be
|
||||
changed with the module update triggered afterwards. In these two cases, we are doing a backup as it may potentially
|
||||
If you merge a commit updating the version of one or several modules (in :file:`__manifest__.py`), or their linked python
|
||||
dependencies (in :file:`requirements.txt`), then Odoo.sh performs a backup automatically (flagged with type Update in the list),
|
||||
as either the container will be changed by the installation of new pip packages, either the database itself will be
|
||||
changed with the module update triggered afterwards. In these two cases, we are doing a backup as it may potentially
|
||||
break things.
|
||||
|
||||
If you merge a commit that only changes some code without the above-mentioned modifications, then no backup is done
|
||||
by Odoo.sh, as neither the container nor the database is modified so the platform considers this safe enough. Of course,
|
||||
as an extra precaution, you can make a backup manually before making big changes in your production sources in case
|
||||
something goes wrong (those manual backups are available for about one week). To avoid abuse, we limit manual backups
|
||||
If you merge a commit that only changes some code without the above-mentioned modifications, then no backup is done
|
||||
by Odoo.sh, as neither the container nor the database is modified so the platform considers this safe enough. Of course,
|
||||
as an extra precaution, you can make a backup manually before making big changes in your production sources in case
|
||||
something goes wrong (those manual backups are available for about one week). To avoid abuse, we limit manual backups
|
||||
to 5 per day.
|
||||
|
||||
The *import database* feature accepts database archives in the format provided by:
|
||||
@ -287,7 +295,7 @@ Upgrade
|
||||
Available for production and staging branches for valid projects.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Upgrade - Odoo.sh <../../upgrade/odoo_sh>`
|
||||
:doc:`Upgrade documentation <../../upgrade>`
|
||||
|
||||
.. _odoosh-gettingstarted-branches-tabs-settings:
|
||||
|
||||
@ -398,14 +406,13 @@ settings to increase the deliverability of your outgoing emails.
|
||||
The configuration steps are explained in the documentation about :ref:`SPF
|
||||
<email_communication/spf_compliant>` and :ref:`DKIM <email_communication/dkim_compliant>`.
|
||||
|
||||
|
||||
.. Warning::
|
||||
Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the
|
||||
delivery of your emails as spam in your contacts inbox.
|
||||
|
||||
|
||||
Shell commands
|
||||
==============
|
||||
|
||||
In the top right-hand corner of the view, different shell commands are available.
|
||||
|
||||
.. image:: branches/interface-branches-shellcommands.png
|
||||
@ -418,6 +425,7 @@ such as ``<URL>``, ``<PATH>``, ...
|
||||
|
||||
Clone
|
||||
-----
|
||||
|
||||
Download the Git repository.
|
||||
|
||||
.. code-block:: bash
|
||||
@ -433,6 +441,7 @@ The *run* button is not available for this command, as it is meant to be used on
|
||||
|
||||
Fork
|
||||
----
|
||||
|
||||
Create a new branch based on the current branch.
|
||||
|
||||
.. code-block:: bash
|
||||
@ -449,6 +458,7 @@ Uploads the new branch *feature-1* on your remote repository.
|
||||
|
||||
Merge
|
||||
-----
|
||||
|
||||
Merge the current branch in another branch.
|
||||
|
||||
.. code-block:: bash
|
||||
@ -465,8 +475,10 @@ Uploads the changes you just added in the *master* branch on your remote reposit
|
||||
|
||||
SSH
|
||||
---
|
||||
|
||||
Setup
|
||||
~~~~~
|
||||
|
||||
In order to use SSH, you have to set up your profile SSH public key (if it is not already done).
|
||||
To do so, follow these steps:
|
||||
|
||||
@ -506,7 +518,6 @@ you'll be granted ssh access to the build.
|
||||
Long running ssh connections are not guaranteed. Idle connections will be
|
||||
disconnected in order to free up resources.
|
||||
|
||||
|
||||
Submodule
|
||||
---------
|
||||
|
||||
|
@ -1,17 +1,18 @@
|
||||
|
||||
.. _odoosh-gettingstarted-builds:
|
||||
|
||||
==================================
|
||||
======
|
||||
Builds
|
||||
==================================
|
||||
======
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
In Odoo.sh, a build is considered as a database loaded by an Odoo server
|
||||
(`odoo/odoo <https://github.com/odoo/odoo>`_ & `odoo/enterprise <https://github.com/odoo/enterprise>`_)
|
||||
running on a specific revision of your project repository in a containerized environment.
|
||||
Its purpose is to test the well-behavior of the server, the database and the features with this revision.
|
||||
(`odoo/odoo <https://github.com/odoo/odoo>`_ & `odoo/enterprise
|
||||
<https://github.com/odoo/enterprise>`_) running on a specific revision of your project repository in
|
||||
a containerized environment. Its purpose is to test the well-behavior of the server, the database
|
||||
and the features with this revision.
|
||||
|
||||
.. image:: builds/interface-builds.png
|
||||
:align: center
|
||||
@ -28,13 +29,13 @@ A successful build is highlighted in green.
|
||||
A build is considered failed if errors come up during its creation.
|
||||
A failed build is highlighted in red.
|
||||
|
||||
If warnings come up during the creation, but there are no errors, the build is considered almost successful.
|
||||
It is highlighted in yellow to notify the developer warnings were raised.
|
||||
If warnings come up during the creation, but there are no errors, the build is considered almost
|
||||
successful. It is highlighted in yellow to notify the developer warnings were raised.
|
||||
|
||||
Builds do not always create a database from scratch.
|
||||
For instance, when pushing a change on the production branch, the build created just starts the server
|
||||
with your new revision and tries to load the current production database on it.
|
||||
If no errors come up, the build is considered successful, and otherwise failed.
|
||||
Builds do not always create a database from scratch. For instance, when pushing a change on the
|
||||
production branch, the build created just starts the server with your new revision and tries to load
|
||||
the current production database on it. If no errors come up, the build is considered successful, and
|
||||
otherwise failed.
|
||||
|
||||
Stages
|
||||
======
|
||||
@ -48,14 +49,15 @@ If this build is successful, this database is considered as the production datab
|
||||
From then, pushes on the production branch will create new builds that attempt to load the database
|
||||
using a server running with the new revision.
|
||||
|
||||
If the build is successful, or has warnings but no errors, the production database will now run with this build, along
|
||||
with the revision associated to this build.
|
||||
If the build is successful, or has warnings but no errors, the production database will now run with
|
||||
this build, along with the revision associated to this build.
|
||||
|
||||
If the build fails to load or update the database, then the previous successful build is re-used to load the database,
|
||||
and therefore the database will run using a server running with the previous successful revision.
|
||||
If the build fails to load or update the database, then the previous successful build is re-used to
|
||||
load the database, and therefore the database will run using a server running with the previous
|
||||
successful revision.
|
||||
|
||||
The build used to run the production database is always the first of the builds list. If a build fails, it is
|
||||
put after the build currently running the production database.
|
||||
The build used to run the production database is always the first of the builds list. If a build
|
||||
fails, it is put after the build currently running the production database.
|
||||
|
||||
Staging
|
||||
-------
|
||||
@ -63,18 +65,17 @@ Staging
|
||||
Staging builds duplicate the production database,
|
||||
and try to load this duplicate with the revisions of the staging branches.
|
||||
|
||||
Each time you push a new revision on a staging branch, the build created uses a new copy of the production database.
|
||||
The databases are not re-used between builds of the same branch. This ensures:
|
||||
Each time you push a new revision on a staging branch, the build created uses a new copy of the
|
||||
production database. The databases are not re-used between builds of the same branch. This ensures:
|
||||
|
||||
* staging builds use databases that are close to what the production looks like,
|
||||
so you do not make your tests with outdated data,
|
||||
* staging builds use databases that are close to what the production looks like, so you do not make
|
||||
your tests with outdated data,
|
||||
|
||||
* you can play around as much as you want in the same staging database,
|
||||
and you can then ask for a rebuild when you want to restart with a new copy of the production.
|
||||
* you can play around as much as you want in the same staging database, and you can then ask for a
|
||||
rebuild when you want to restart with a new copy of the production.
|
||||
|
||||
Nevertheless, this means that if you make configuration changes in staging databases
|
||||
and do not apply them in the production,
|
||||
they will not be passed on the next build of the same staging branch.
|
||||
Nevertheless, this means that if you make configuration changes in staging databases and do not
|
||||
apply them in the production, they will not be passed on the next build of the same staging branch.
|
||||
|
||||
Development
|
||||
-----------
|
||||
@ -86,30 +87,30 @@ as they are meant to raise errors if something wrong occurs.
|
||||
|
||||
If all tests pass, and there is no error, the build will be considered successful.
|
||||
|
||||
According to the list of modules to install and test, a development build can take up to 1 hour to be ready.
|
||||
This is due to the large number of tests set in the default Odoo modules suite.
|
||||
According to the list of modules to install and test, a development build can take up to 1 hour to
|
||||
be ready. This is due to the large number of tests set in the default Odoo modules suite.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
The production branch will always appear first,
|
||||
and then the other branches are ordered by last build created. You can filter out the branches.
|
||||
The production branch will always appear first, and then the other branches are ordered by last
|
||||
build created. You can filter out the branches.
|
||||
|
||||
.. image:: builds/interface-builds-branches.png
|
||||
:align: center
|
||||
|
||||
For each branch, you can access the last build's database using the *Connect* link and jump to the branch code using
|
||||
the *Github* link. For other branches than the production, you can create a new build which will use the latest revision
|
||||
of the branch using the link *rebuild*. This last link is not available when there is already a build in progress for
|
||||
the branch.
|
||||
For each branch, you can access the last build's database using the *Connect* link and jump to the
|
||||
branch code using the *Github* link. For other branches than the production, you can create a new
|
||||
build which will use the latest revision of the branch using the link *rebuild*. This last link is
|
||||
not available when there is already a build in progress for the branch.
|
||||
|
||||
.. image:: builds/interface-builds-build.png
|
||||
:align: center
|
||||
|
||||
For each build, you can access the revision changes using the button with the Github icon.
|
||||
You can access the build's database as the administrator using the *Connect* button.
|
||||
Also, you can access the database with another user using the *Connect as* button,
|
||||
in the dropdown menu of the *Connect* button.
|
||||
For each build, you can access the revision changes using the button with the Github icon. You can
|
||||
access the build's database as the administrator using the *Connect* button. Also, you can access
|
||||
the database with another user using the *Connect as* button, in the dropdown menu of the *Connect*
|
||||
button.
|
||||
|
||||
.. _odoosh-gettingstarted-builds-download-dump:
|
||||
|
||||
@ -118,6 +119,6 @@ in the dropdown menu of the *Connect* button.
|
||||
|
||||
.. _odoosh-gettingstarted-builds-dropdown-menu:
|
||||
|
||||
In the dropdown menu of the build, you can access the same features than in :ref:`the branches view <odoosh-gettingstarted-branches-tabs>`:
|
||||
*Logs*, *Web Shell*, *Editor*, *Outgoing e-mails*.
|
||||
You also have the possibility to *Download a dump* of the build's database.
|
||||
In the dropdown menu of the build, you can access the same features than in :ref:`the branches view
|
||||
<odoosh-gettingstarted-branches-tabs>`: *Logs*, *Web Shell*, *Editor*, *Outgoing e-mails*. You also
|
||||
have the possibility to *Download a dump* of the build's database.
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
.. _odoosh-gettingstarted-create:
|
||||
|
||||
==================================
|
||||
===================
|
||||
Create your project
|
||||
==================================
|
||||
===================
|
||||
|
||||
Deploy your platform
|
||||
====================
|
||||
@ -16,7 +16,8 @@ Go to `Odoo.sh <https://www.odoo.sh/>`_ and hit the *Deploy your platform* butto
|
||||
Sign in with Github
|
||||
===================
|
||||
|
||||
Sign in with your Github account. If you do not have an account yet, hit the *Create an account* link.
|
||||
Sign in with your Github account. If you do not have an account yet, hit the *Create an account*
|
||||
link.
|
||||
|
||||
.. image:: create/github-signin.png
|
||||
:align: center
|
||||
@ -33,34 +34,44 @@ Odoo.sh basically needs:
|
||||
|
||||
* to know your Github login and email,
|
||||
* to create a new repository in case you decide to start from scratch,
|
||||
* to read your existing repositories, including the ones of your organizations, in case you want to start from an existing repository,
|
||||
* to read your existing repositories, including the ones of your organizations, in case you want to
|
||||
start from an existing repository,
|
||||
* to create a webhook to be notified each time you push changes,
|
||||
* to commit changes to make your deployment easier, merging branches or adding new `submodules <https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_ for example.
|
||||
* to commit changes to make your deployment easier, merging branches or adding new `submodules
|
||||
<https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_ for example.
|
||||
|
||||
Submit your project
|
||||
===================
|
||||
|
||||
Choose if you want to start from scratch by creating a new repository, or if you want to use an existing repository.
|
||||
Choose if you want to start from scratch by creating a new repository, or if you want to use an
|
||||
existing repository.
|
||||
|
||||
Then, choose a name or select the repository you want to use.
|
||||
|
||||
Choose the Odoo version you want to use. If you plan to import an existing database or an existing set of applications, you might need to choose the according version. If you start from scratch, use the latest version.
|
||||
Choose the Odoo version you want to use. If you plan to import an existing database or an existing
|
||||
set of applications, you might need to choose the according version. If you start from scratch, use
|
||||
the latest version.
|
||||
|
||||
Enter your *subscription code*. This is also called *subscription referral*, *contract number* or *activation code*.
|
||||
Enter your *subscription code*. This is also called *subscription referral*, *contract number* or
|
||||
*activation code*.
|
||||
|
||||
It should be the code of your Enterprise subscription that includes Odoo.sh.
|
||||
|
||||
Partners can use their partnership codes to start a trial. Should their clients start a project, they ought to get an Enterprise subscription including Odoo.sh and use its subscription code. The partner will get the full amount as back commission.
|
||||
Contact your sales representative or account manager in order to get it.
|
||||
Partners can use their partnership codes to start a trial. Should their clients start a project,
|
||||
they ought to get an Enterprise subscription including Odoo.sh and use its subscription code. The
|
||||
partner will get 50% of the amount back as commission. Contact your sales representative or account
|
||||
manager in order to get it.
|
||||
|
||||
When submitting the form, if you are notified your subscription is not valid, it either means:
|
||||
|
||||
* it is not an existing subscription,
|
||||
* it is not a partnership subscription,
|
||||
* it is an enterprise subscription, but which does not include Odoo.sh,
|
||||
* it is neither a partnership subscription or an enterprise subscription (e.g. an online subscription).
|
||||
* it is neither a partnership subscription or an enterprise subscription (e.g. an online
|
||||
subscription).
|
||||
|
||||
In case of doubt with your subscription, please contact the `Odoo support <https://www.odoo.com/help>`_.
|
||||
In case of doubt with your subscription, please contact the `Odoo support
|
||||
<https://www.odoo.com/help>`_.
|
||||
|
||||
.. image:: create/deploy-form.png
|
||||
:align: center
|
||||
@ -68,7 +79,8 @@ In case of doubt with your subscription, please contact the `Odoo support <https
|
||||
You're done !
|
||||
=============
|
||||
|
||||
You can start using Odoo.sh. Your first build is about to be created. You will soon be able to connect to your first database.
|
||||
You can start using Odoo.sh. Your first build is about to be created. You will soon be able to
|
||||
connect to your first database.
|
||||
|
||||
.. image:: create/deploy-done.png
|
||||
:align: center
|
||||
@ -79,7 +91,7 @@ Import your database
|
||||
====================
|
||||
|
||||
You can import your database in your Odoo.sh project as long as it is in a :doc:`supported version
|
||||
</administration/maintain/supported_versions>` of Odoo.
|
||||
</administration/supported_versions>` of Odoo.
|
||||
|
||||
Push your modules in production
|
||||
-------------------------------
|
||||
@ -88,9 +100,10 @@ If you use community or custom modules, add them in a branch in your Github repo
|
||||
Databases hosted on the Odoo.com online platform do not have any custom modules.
|
||||
Users of these databases can therefore skip this step.
|
||||
|
||||
You can structure your modules as you wish, Odoo.sh will automatically detect the folders containing Odoo addons.
|
||||
For instance, you can put all your modules folder in the root directory of your repository,
|
||||
or group the modules in folders by categories that you define (accounting, project, ...).
|
||||
You can structure your modules as you wish, Odoo.sh will automatically detect the folders containing
|
||||
Odoo addons. For instance, you can put all your modules folder in the root directory of your
|
||||
repository, or group the modules in folders by categories that you define (accounting, project,
|
||||
...).
|
||||
|
||||
For community modules available in public Git repositories,
|
||||
you can also consider to add them using :ref:`Submodules <odoosh-advanced-submodules>`.
|
||||
@ -111,7 +124,8 @@ Access the URL :file:`/web/database/manager` of your on-premise database and dow
|
||||
If you cannot access the database manager, it may have been disabled by your system administrator.
|
||||
See the :ref:`database manager security documentation <db_manager_security>`.
|
||||
|
||||
You will need the master password of your database server. If you do not have it, contact your system administrator.
|
||||
You will need the master password of your database server. If you do not have it, contact your
|
||||
system administrator.
|
||||
|
||||
.. image:: create/create-import-onpremise-backup.png
|
||||
:align: center
|
||||
@ -124,64 +138,68 @@ Choose a zip including the filestore as the backup format.
|
||||
Odoo Online databases
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
`Access your databases manager <https://accounts.odoo.com/my/databases/manage>`_ and download a backup of your database.
|
||||
`Access your databases manager <https://accounts.odoo.com/my/databases/manage>`_ and download a
|
||||
backup of your database.
|
||||
|
||||
.. image:: create/create-import-online-backup.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
.. Warning::
|
||||
|
||||
Saas releases (e.g. *saas-**) are not supported on Odoo.sh.
|
||||
Online versions (e.g. *saas-**) are not supported on Odoo.sh.
|
||||
|
||||
Upload the backup
|
||||
-----------------
|
||||
|
||||
Then, in your Odoo.sh project, in the backups tab of your production branch, import the backup you just downloaded.
|
||||
Then, in your Odoo.sh project, in the backups tab of your production branch, import the backup you
|
||||
just downloaded.
|
||||
|
||||
.. image:: create/create-import-production.png
|
||||
:align: center
|
||||
|
||||
Once the backup imported, you can access the database using the *Connect* button in the history of the branch.
|
||||
Once the backup imported, you can access the database using the *Connect* button in the history of
|
||||
the branch.
|
||||
|
||||
.. image:: create/create-import-production-done.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
Check your outgoing email servers
|
||||
---------------------------------
|
||||
|
||||
There is a default mail server provided with Odoo.sh.
|
||||
To use it, there must be no enabled outgoing mail server configured in your database in
|
||||
:menuselection:`Settings --> Technical --> Outgoing Mail Servers`
|
||||
(:ref:`Developer mode <developer-mode>` must be activated).
|
||||
:menuselection:`Settings --> Technical --> Outgoing Mail Servers` (:ref:`Developer mode
|
||||
<developer-mode>` must be activated).
|
||||
|
||||
After the import of your database,
|
||||
all outgoing email servers are disabled so you use the Odoo.sh email server provided by default.
|
||||
After the import of your database, all outgoing email servers are disabled so you use the Odoo.sh
|
||||
email server provided by default.
|
||||
|
||||
.. Warning::
|
||||
|
||||
Port 25 is (and will stay) closed. If you want to connect to an external SMTP server, you should use ports 465 and 587.
|
||||
.. warning::
|
||||
Port 25 is (and will stay) closed. If you want to connect to an external SMTP server, you should
|
||||
use ports 465 and 587.
|
||||
|
||||
Check your scheduled actions
|
||||
----------------------------
|
||||
|
||||
All scheduled actions are disabled after the import.
|
||||
|
||||
This is to prevent your newly imported database to perform actions that could impact your running production,
|
||||
such as sending the mails remaining in the queue, processing mass mailings, or third-party services synchronization
|
||||
(Calendars, files hosting, ...).
|
||||
This is to prevent your newly imported database to perform actions that could impact your running
|
||||
production, such as sending the mails remaining in the queue, processing mass mailings, or
|
||||
third-party services synchronization (Calendars, files hosting, ...).
|
||||
|
||||
If you plan to make the imported database your production, enable the scheduled actions you need.
|
||||
You can check what is enabled in the database of origin and enable the same actions in the imported database.
|
||||
Scheduled actions are located under :menuselection:`Settings --> Technical --> Automation --> Scheduled Actions`.
|
||||
You can check what is enabled in the database of origin and enable the same actions in the imported
|
||||
database. Scheduled actions are located under :menuselection:`Settings --> Technical --> Automation
|
||||
--> Scheduled Actions`.
|
||||
|
||||
Register your subscription
|
||||
--------------------------
|
||||
|
||||
Your subscription is unlinked after the import.
|
||||
|
||||
The imported database is considered a duplicate by default and the enterprise subscription is therefore removed,
|
||||
as you can only have one database linked per subscription.
|
||||
The imported database is considered a duplicate by default and the enterprise subscription is
|
||||
therefore removed, as you can only have one database linked per subscription.
|
||||
|
||||
If you plan to make it your production,
|
||||
unlink your former database from the subscription, and register the newly imported database.
|
||||
Read the :doc:`database registration documentation <../../maintain/on_premise>` for instructions.
|
||||
If you plan to make it your production, unlink your former database from the subscription, and
|
||||
register the newly imported database. Read the :doc:`database registration documentation
|
||||
<../../on_premise>` for instructions.
|
||||
|
@ -1,14 +1,14 @@
|
||||
|
||||
==================================
|
||||
=================
|
||||
Your first module
|
||||
==================================
|
||||
=================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
This chapter helps you to create your first Odoo module and deploy it in your Odoo.sh project.
|
||||
|
||||
This tutorial requires :ref:`you created a project on Odoo.sh <odoosh-gettingstarted-create>`, and you know your Github repository's URL.
|
||||
This tutorial requires :ref:`you created a project on Odoo.sh <odoosh-gettingstarted-create>`, and
|
||||
you know your Github repository's URL.
|
||||
|
||||
Basic use of Git and Github is explained.
|
||||
|
||||
@ -27,7 +27,7 @@ Create the development branch
|
||||
=============================
|
||||
|
||||
From Odoo.sh
|
||||
-------------
|
||||
------------
|
||||
|
||||
In the branches view:
|
||||
|
||||
@ -43,20 +43,18 @@ In the branches view:
|
||||
.. |pic2| image:: first_module/firstmodule-development-fork.png
|
||||
:width: 45%
|
||||
|
||||
|
||||
Once the build created, you can access the editor and browse to the folder *~/src/user* to access
|
||||
to the code of your development branch.
|
||||
|
||||
.. image:: first_module/firstmodule-development-editor.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
.. image:: first_module/firstmodule-development-editor-interface.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
From your computer
|
||||
------------------
|
||||
|
||||
|
||||
Clone your Github repository on your computer:
|
||||
|
||||
.. code-block:: bash
|
||||
@ -72,7 +70,6 @@ Create a new branch:
|
||||
|
||||
$ git checkout -b feature-1 master
|
||||
|
||||
|
||||
Create the module structure
|
||||
===========================
|
||||
|
||||
@ -88,15 +85,15 @@ From the Odoo.sh editor, in a terminal:
|
||||
|
||||
$ odoo-bin scaffold my_module ~/src/user/
|
||||
|
||||
Or, from your computer, if you have an :ref:`installation of Odoo <setup/install/source>`:
|
||||
Or, from your computer, if you have an :doc:`installation of Odoo <../../on_premise/source>`:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ./odoo-bin scaffold my_module ~/src/odoo-addons/
|
||||
|
||||
If you do not want to bother installing Odoo on your computer,
|
||||
you can also :download:`download this module structure template <first_module/my_module.zip>` in which you replace every occurrences of
|
||||
*my_module* to the name of your choice.
|
||||
you can also :download:`download this module structure template <first_module/my_module.zip>` in
|
||||
which you replace every occurrences of *my_module* to the name of your choice.
|
||||
|
||||
The below structure will be generated:
|
||||
|
||||
@ -119,11 +116,11 @@ The below structure will be generated:
|
||||
├── templates.xml
|
||||
└── views.xml
|
||||
|
||||
.. Warning::
|
||||
.. warning::
|
||||
|
||||
Do not use special characters other than the underscore ( _ ) for your module name, not even an hyphen ( - ).
|
||||
This name is used for the Python classes of your module,
|
||||
and having classes name with special characters other than the underscore is not valid in Python.
|
||||
Do not use special characters other than the underscore ( _ ) for your module name, not even an
|
||||
hyphen ( - ). This name is used for the Python classes of your module, and having classes name
|
||||
with special characters other than the underscore is not valid in Python.
|
||||
|
||||
Uncomment the content of the files:
|
||||
|
||||
@ -141,7 +138,7 @@ Uncomment the content of the files:
|
||||
the manifest of your module, including for instance its title, description and data files to load.
|
||||
You just need to uncomment the access control list data file:
|
||||
|
||||
.. code-block:: xml
|
||||
.. code-block:: python
|
||||
|
||||
# 'security/ir.model.access.csv',
|
||||
|
||||
@ -149,7 +146,7 @@ Manually
|
||||
--------
|
||||
|
||||
If you want to create your module structure manually,
|
||||
you can follow :doc:`Build an Odoo module </developer/howtos/backend>` to understand
|
||||
you can follow the :doc:`/developer/tutorials/getting_started` tutorial to understand
|
||||
the structure of a module and the content of each file.
|
||||
|
||||
Push the development branch
|
||||
@ -180,8 +177,8 @@ The above command is explained in the section
|
||||
<odoosh-gettingstarted-online-editor-push>` of the
|
||||
:ref:`Online Editor <odoosh-gettingstarted-online-editor>`
|
||||
chapter.
|
||||
It includes the explanation regarding the fact you will be prompted to type your username and password,
|
||||
and what to do if you use the two-factor authentication.
|
||||
It includes the explanation regarding the fact you will be prompted to type your username and
|
||||
password, and what to do if you use the two-factor authentication.
|
||||
|
||||
Or, from your computer terminal:
|
||||
|
||||
@ -217,11 +214,11 @@ Once the database ready, you can access it by clicking the *Connect* button.
|
||||
:align: center
|
||||
|
||||
If your Odoo.sh project is configured to install your module automatically,
|
||||
you will directly see it amongst the database apps. Otherwise, it will be available in the apps to install.
|
||||
you will directly see it amongst the database apps. Otherwise, it will be available in the apps to
|
||||
install.
|
||||
|
||||
You can then play around with your module, create new records and test your features and buttons.
|
||||
|
||||
|
||||
Test with the production data
|
||||
=============================
|
||||
|
||||
@ -232,23 +229,24 @@ you can test it with the production data using a staging branch.
|
||||
|
||||
You can either:
|
||||
|
||||
* Make your development branch a staging branch, by drag and dropping it onto the *staging* section title.
|
||||
* Make your development branch a staging branch, by drag and dropping it onto the *staging* section
|
||||
title.
|
||||
|
||||
.. image:: first_module/firstmodule-test-devtostaging.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
* Merge it in an existing staging branch, by drag and dropping it onto the given staging branch.
|
||||
|
||||
.. image:: first_module/firstmodule-test-devinstaging.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
You can also use the :code:`git merge` command to merge your branches.
|
||||
|
||||
This will create a new staging build, which will duplicate the production database and make it run using a server
|
||||
updated with your latest changes of your branch.
|
||||
This will create a new staging build, which will duplicate the production database and make it run
|
||||
using a server updated with your latest changes of your branch.
|
||||
|
||||
.. image:: first_module/firstmodule-test-mergedinstaging.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
Once the database ready, you can access it using the *Connect* button.
|
||||
|
||||
@ -257,11 +255,13 @@ Once the database ready, you can access it using the *Connect* button.
|
||||
Install your module
|
||||
-------------------
|
||||
|
||||
Your module will not be installed automatically, you have to install it from the apps menu.
|
||||
Indeed, the purpose of the staging build is to test the behavior of your changes as it would be on your production,
|
||||
and on your production you would not like your module to be installed automatically, but on demand.
|
||||
Your module will not be installed automatically, you have to install it from the apps menu. Indeed,
|
||||
the purpose of the staging build is to test the behavior of your changes as it would be on your
|
||||
production, and on your production you would not like your module to be installed automatically, but
|
||||
on demand.
|
||||
|
||||
Your module may not appear directly in your apps to install either, you need to update your apps list first:
|
||||
Your module may not appear directly in your apps to install either, you need to update your apps
|
||||
list first:
|
||||
|
||||
* Activate the :ref:`developer mode <developer-mode>`
|
||||
* in the apps menu, click the *Update Apps List* button,
|
||||
@ -307,14 +307,16 @@ you have to install it manually as explained in the
|
||||
Add a change
|
||||
============
|
||||
|
||||
This section explains how to add a change in your module by adding a new field in a model and deploy it.
|
||||
This section explains how to add a change in your module by adding a new field in a model and deploy
|
||||
it.
|
||||
|
||||
From the Odoo.sh editor,
|
||||
* browse to your module folder *~/src/user/my_module*,
|
||||
* then, open the file *models/models.py*.
|
||||
|
||||
Or, from your computer,
|
||||
* use the file browser of your choice to browse to your module folder *~/src/odoo-addons/my_module*,
|
||||
* use the file browser of your choice to browse to your module folder
|
||||
*~/src/odoo-addons/my_module*,
|
||||
* then, open the file *models/models.py* using the editor of your choice,
|
||||
such as *Atom*, *Sublime Text*, *PyCharm*, *vim*, ...
|
||||
|
||||
@ -350,8 +352,8 @@ and modify a view stored in database.
|
||||
In order to be applied in existing databases, such as your production database,
|
||||
these changes requires the module to be updated.
|
||||
|
||||
If you would like the update to be performed automatically by the Odoo.sh platform when you push your changes,
|
||||
increase your module version in its manifest.
|
||||
If you would like the update to be performed automatically by the Odoo.sh platform when you push
|
||||
your changes, increase your module version in its manifest.
|
||||
|
||||
Open the module manifest *__manifest__.py*.
|
||||
|
||||
@ -367,7 +369,8 @@ with
|
||||
|
||||
'version': '0.2',
|
||||
|
||||
The platform will detect the change of version and trigger the update of the module upon the new revision deployment.
|
||||
The platform will detect the change of version and trigger the update of the module upon the new
|
||||
revision deployment.
|
||||
|
||||
Browse to your Git folder.
|
||||
|
||||
@ -412,12 +415,12 @@ Or, from your computer terminal:
|
||||
The platform will then create a new build for the branch *feature-1*.
|
||||
|
||||
.. image:: first_module/firstmodule-test-addachange-build.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
||||
Once you tested your changes, you can merge your changes in the production branch, for instance by drag-and-dropping the
|
||||
branch on the production branch in the Odoo.sh interface. As you increased the module version in the manifest,
|
||||
the platform will update the module automatically and your new field will be directly available.
|
||||
Otherwise you can manually update the module within the apps list.
|
||||
Once you tested your changes, you can merge your changes in the production branch, for instance by
|
||||
drag-and-dropping the branch on the production branch in the Odoo.sh interface. As you increased the
|
||||
module version in the manifest, the platform will update the module automatically and your new field
|
||||
will be directly available. Otherwise you can manually update the module within the apps list.
|
||||
|
||||
Use an external Python library
|
||||
==============================
|
||||
@ -425,10 +428,18 @@ Use an external Python library
|
||||
If you would like to use an external Python library which is not installed by default,
|
||||
you can define a *requirements.txt* file listing the external libraries your modules depends on.
|
||||
|
||||
.. note::
|
||||
- It is not possible to install or upgrade system packages on an Odoo.sh database (e.g., apt
|
||||
packages). However, under specific conditions, packages can be considered for installation.
|
||||
This also applies to **Python modules** requiring system packages for their compilation, and
|
||||
**third-party Odoo modules**.
|
||||
- **PostgreSQL extensions** are not supported on Odoo.sh.
|
||||
- For more information, consult our `FAQ <https://www.odoo.sh/faq#install_dependencies>`_.
|
||||
|
||||
The platform will use this file to automatically install the Python libraries your project needs.
|
||||
|
||||
The feature is explained in this section by using the `Unidecode library <https://pypi.python.org/pypi/Unidecode>`_ in
|
||||
your module.
|
||||
The feature is explained in this section by using the `Unidecode library
|
||||
<https://pypi.python.org/pypi/Unidecode>`_ in your module.
|
||||
|
||||
Create a file *requirements.txt* in the root folder of your repository
|
||||
|
||||
@ -442,8 +453,8 @@ Add
|
||||
|
||||
unidecode
|
||||
|
||||
Then use the library in your module, for instance to remove accents from characters in the name field of your
|
||||
model.
|
||||
Then use the library in your module, for instance to remove accents from characters in the name
|
||||
field of your model.
|
||||
|
||||
Open the file *models/models.py*.
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
.. _odoosh-gettingstarted-online-editor:
|
||||
|
||||
==================================
|
||||
=============
|
||||
Online Editor
|
||||
==================================
|
||||
=============
|
||||
|
||||
Overview
|
||||
========
|
||||
@ -120,24 +120,23 @@ In this last command,
|
||||
.. image:: online-editor/interface-editor-commit-push.png
|
||||
:align: center
|
||||
|
||||
.. Note::
|
||||
The SSH Github remote is not used because your SSH private key
|
||||
is not hosted in your build containers (for obvious security concerns)
|
||||
nor forwarded through an SSH Agent (as you access this editor through a web browser)
|
||||
and you therefore cannot authenticate yourself to Github using SSH.
|
||||
You have to use the HTTPS remote of your Github repository to push your changes,
|
||||
which is added automatically named as *https* in your Git remotes.
|
||||
You will be prompted to enter your Github username and password.
|
||||
If you activated the two-factor authentication on Github,
|
||||
you can create a
|
||||
`personal access token <https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/>`_
|
||||
and use it as password. Granting the ``repo`` permission suffices.
|
||||
.. note::
|
||||
The SSH Github remote is not used because your SSH private key
|
||||
is not hosted in your build containers (for obvious security concerns)
|
||||
nor forwarded through an SSH Agent (as you access this editor through a web browser)
|
||||
and you therefore cannot authenticate yourself to Github using SSH.
|
||||
You have to use the HTTPS remote of your Github repository to push your changes,
|
||||
which is added automatically named as *https* in your Git remotes.
|
||||
You will be prompted to enter your Github username and password.
|
||||
If you activated the two-factor authentication on Github,
|
||||
you can create a `personal access token
|
||||
<https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/>`_
|
||||
and use it as password. Granting the ``repo`` permission suffices.
|
||||
|
||||
|
||||
.. Note::
|
||||
The Git source folder *~/src/user* is not checked out on a branch but rather on a detached revision:
|
||||
This is because builds work on specific revisions rather than branches.
|
||||
In other words, this means you can have multiple builds on the same branch, but on different revisions.
|
||||
.. note::
|
||||
The Git source folder *~/src/user* is not checked out on a branch but rather on a detached revision:
|
||||
This is because builds work on specific revisions rather than branches.
|
||||
In other words, this means you can have multiple builds on the same branch, but on different revisions.
|
||||
|
||||
Once your changes are pushed,
|
||||
according to your :ref:`branch push behavior <odoosh-gettingstarted-branches-tabs-settings>`,
|
||||
@ -166,12 +165,11 @@ You can also open an Odoo Shell console to play around
|
||||
with the Odoo registry and model methods of your database. You can also directly read or write
|
||||
on your records.
|
||||
|
||||
.. Warning::
|
||||
In an Odoo Console, transactions are automatically committed.
|
||||
This means, for instance, that changes in records are applied effectively in the database.
|
||||
If you change the name of a user, the name of the user is changed in your database
|
||||
as well.
|
||||
You therefore should use Odoo consoles carefully on production databases.
|
||||
.. warning::
|
||||
In an Odoo Console, transactions are automatically committed.
|
||||
This means, for instance, that changes in records are applied effectively in the database.
|
||||
If you change the name of a user, the name of the user is changed in your database as well.
|
||||
You therefore should use Odoo consoles carefully on production databases.
|
||||
|
||||
You can use *env* to invoke models of your database registry, e.g. :code:`env['res.users']`.
|
||||
|
||||
@ -196,4 +194,4 @@ You can also use
|
||||
to display graphs.
|
||||
|
||||
.. image:: online-editor/interface-editor-console-odoo-graph.png
|
||||
:align: center
|
||||
:align: center
|
||||
|
@ -1,7 +1,6 @@
|
||||
|
||||
==================================
|
||||
========
|
||||
Settings
|
||||
==================================
|
||||
========
|
||||
|
||||
Overview
|
||||
========
|
||||
@ -21,8 +20,8 @@ The name of your project.
|
||||
|
||||
This defines the address that will be used to access your production database.
|
||||
|
||||
Addresses of your staging and development builds are derived from this name and assigned automatically.
|
||||
However, when you change your project name, only future builds will use the new name.
|
||||
Addresses of your staging and development builds are derived from this name and assigned
|
||||
automatically. However, when you change your project name, only future builds will use the new name.
|
||||
|
||||
.. _odoosh-gettingstarted-settings-collaborators:
|
||||
|
||||
@ -34,53 +33,175 @@ Manage the Github users who can access your project.
|
||||
.. image:: settings/interface-settings-collaborators.png
|
||||
:align: center
|
||||
|
||||
There are two levels of users:
|
||||
There are three levels of users:
|
||||
|
||||
* Admin: has access to all features of Odoo.sh.
|
||||
* User: does not have access to the project settings nor to the production and staging databases.
|
||||
- :guilabel:`Admin`: has access to all features of an Odoo.sh project.
|
||||
|
||||
The user group is meant for developers who can make modifications in your code but are not allowed to access the
|
||||
production data.
|
||||
Users of this group cannot connect to the production and staging databases using the *1-click connect* feature,
|
||||
but they can of course use their regular account on these databases if they have one, using their regular credentials.
|
||||
- :guilabel:`Tester`: has access to the *Staging* and *Development* databases and their tooling.
|
||||
This role is for users conducting User Acceptance Tests. Testers can work with copies of
|
||||
production data but cannot access the production database through the Odoo.sh tooling.
|
||||
|
||||
In addition, they cannot use the webshell nor have access to the server logs.
|
||||
- :guilabel:`Developer`: has access only to the *Development* databases and their tooling. This
|
||||
role is for developers who propose code modifications but are not allowed to access production
|
||||
and staging databases through the Odoo.sh tooling.
|
||||
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | | User | Admin |
|
||||
+=====================+=================+===========+===========+
|
||||
|Development | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell/SSH | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Settings | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Production & Staging | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell/SSH | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Monitoring | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Backups | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Settings | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Status | | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Settings | | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* -
|
||||
-
|
||||
- Developer
|
||||
- Tester
|
||||
- Admin
|
||||
* - Development
|
||||
- History
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 1-click connect
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Logs
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Shell/SSH
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Mails
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Settings
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* - Staging
|
||||
- History
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 1-click connect
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Logs
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Shell/SSH
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Mails
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Monitoring
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Backups
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Upgrade
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Settings
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* - Production
|
||||
- History
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 1-click connect
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Logs
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Shell/SSH
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Mails
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Monitoring
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Backups
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Upgrade
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Settings
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
* - Status
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
* - Settings
|
||||
-
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
|
||||
.. warning::
|
||||
Those roles only apply to the usage of Odoo.sh. It is important to reflect the user roles
|
||||
attribution within the repository on GitHub. Please refer to the GitHub documentation section on
|
||||
`Managing a branch protection rule <https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule>`_
|
||||
for detailed guidance.
|
||||
|
||||
.. |green| raw:: html
|
||||
|
||||
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
.. |orange| raw:: html
|
||||
|
||||
<span class="text-warning" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
.. |red| raw:: html
|
||||
|
||||
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
Public Access
|
||||
=============
|
||||
@ -90,19 +211,37 @@ Allow public access to your development builds.
|
||||
.. image:: settings/interface-settings-public.png
|
||||
:align: center
|
||||
|
||||
If activated, this option exposes the Builds page publicly, allowing visitors to connect to your development builds.
|
||||
|
||||
In addition, visitors have access to the logs, shell and mails of your development builds.
|
||||
If activated, this option exposes the Builds page publicly, allowing visitors to view logs of development builds.
|
||||
|
||||
Production and staging builds are excluded, visitors can only see their status.
|
||||
|
||||
.. _odoosh-gettingstarted-settings-modules-installation:
|
||||
|
||||
GitHub commit statuses
|
||||
======================
|
||||
|
||||
This option enables Odoo.sh to push commit statuses to your GitHub repository when a build is
|
||||
created or updated. It requires a GitHub token with permissions to push commit statuses to the
|
||||
repository. Refer to `GitHub's documentation on personal access tokens <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens>`_
|
||||
for instructions to create yours.
|
||||
|
||||
.. note::
|
||||
GitHub's **fine-grained personal tokens** have an expiration date and will be disabled if they
|
||||
fail to update the commit status. You can replace the token at any time on Odoo.sh.
|
||||
|
||||
The commit statuses pushed to GitHub can have the following contexts:
|
||||
|
||||
- :guilabel:`ci/odoo.sh (dev)`: status of a development build
|
||||
- :guilabel:`ci/odoo.sh (staging)`: status of a staging build
|
||||
- :guilabel:`ci/odoo.sh (production)`: status of a production build
|
||||
- :guilabel:`ci/odoo.sh (test_ci)`: testing the token from the Settings page will push a test
|
||||
status on the last commit of your repository
|
||||
|
||||
Custom domains
|
||||
==============
|
||||
|
||||
To configure additional domains please refer to the corresponding branch's :ref:`settings tab <odoosh-gettingstarted-branches-tabs-settings>`.
|
||||
To configure additional domains please refer to the corresponding branch's :ref:`settings tab
|
||||
<odoosh-gettingstarted-branches-tabs-settings>`.
|
||||
|
||||
.. _odoosh-gettingstarted-settings-submodules:
|
||||
|
||||
@ -112,10 +251,10 @@ Submodules
|
||||
Configure the deploy keys for the private repositories you use
|
||||
as submodules in your branches to allow Odoo.sh to download them.
|
||||
|
||||
.. Warning::
|
||||
These settings are required for **private repositories** only.
|
||||
If you are looking on how to set up your submodules,
|
||||
instructions are available in the chapter :ref:`Submodules <odoosh-advanced-submodules>` of this documentation.
|
||||
.. warning::
|
||||
These settings are required for **private repositories** only. If you are looking on how to set
|
||||
up your submodules, instructions are available in the chapter :ref:`Submodules
|
||||
<odoosh-advanced-submodules>` of this documentation.
|
||||
|
||||
.. image:: settings/interface-settings-submodules.png
|
||||
:align: center
|
||||
@ -130,7 +269,8 @@ To configure the deploy key for a private repository, proceed as follows:
|
||||
* in the input, paste the SSH URL of your private sub-repository and click on *Add*,
|
||||
|
||||
* e.g. *git@github.com:USERNAME/REPOSITORY.git*
|
||||
* it can be another Git server than Github, such as Bitbucket, Gitlab or even your own self-hosted server
|
||||
* it can be another Git server than Github, such as Bitbucket, Gitlab or even your own self-hosted
|
||||
server
|
||||
|
||||
* copy the public key,
|
||||
|
||||
@ -157,8 +297,9 @@ Storage size is computed as follows:
|
||||
|
||||
* the size of the disk files available in your container: database filestore, sessions storage directory...
|
||||
|
||||
.. Warning::
|
||||
In case you want to analyze disk usage, you can run the tool `ncdu <https://dev.yorhel.nl/ncdu/man>`_ in your Web Shell.
|
||||
.. warning::
|
||||
In case you want to analyze disk usage, you can run the tool `ncdu
|
||||
<https://dev.yorhel.nl/ncdu/man>`_ in your Web Shell.
|
||||
|
||||
Should your production database size grow to exceed what's provisioned in your subscription, it
|
||||
will automatically be synchronized with it.
|
||||
@ -191,7 +332,8 @@ add more, it will automatically be synchronized with your subscription.
|
||||
Activation
|
||||
==========
|
||||
|
||||
Shows the status of the project's activation. You can change the project's activation code if needed.
|
||||
Shows the status of the project's activation. You can change the project's activation code if
|
||||
needed.
|
||||
|
||||
.. image:: settings/interface-settings-activation.png
|
||||
:align: center
|
||||
|
@ -1,12 +1,12 @@
|
||||
|
||||
==================================
|
||||
======
|
||||
Status
|
||||
==================================
|
||||
======
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
The status page shows statistics regarding the servers your project uses. It includes the servers availability.
|
||||
The status page shows statistics regarding the servers your project uses. It includes the servers
|
||||
availability.
|
||||
|
||||
.. image:: status/interface-status.png
|
||||
:align: center
|
||||
|
@ -1,8 +1,8 @@
|
||||
:nosearch:
|
||||
|
||||
=================
|
||||
========
|
||||
Overview
|
||||
=================
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
@ -1,7 +1,6 @@
|
||||
|
||||
==============================
|
||||
=======================
|
||||
Introduction to Odoo.sh
|
||||
==============================
|
||||
=======================
|
||||
|
||||
.. youtube:: QuNsa9n9PMg
|
||||
:align: right
|
||||
|
117
content/administration/on_premise.rst
Normal file
@ -0,0 +1,117 @@
|
||||
:show-content:
|
||||
|
||||
==========
|
||||
On-premise
|
||||
==========
|
||||
|
||||
Register a database
|
||||
===================
|
||||
|
||||
To register your database, enter your subscription code in the banner in the app dashboard. If the
|
||||
registration is successful, the banner will turn green and display the database expiration date.
|
||||
|
||||
.. tip::
|
||||
The expiration date is also displayed at the bottom of the Settings page.
|
||||
|
||||
.. _on-premise/duplicate:
|
||||
|
||||
Duplicate a database
|
||||
====================
|
||||
|
||||
Duplicate a database by accessing the database manager on your server
|
||||
(`<odoo-server>/web/database/manager`). Typically, you want to duplicate your production database
|
||||
into a neutralized testing database. It can be done by checking the neutralize box when prompted,
|
||||
which executes all :file:`neutralize.sql` scripts for every installed module.
|
||||
|
||||
Common error messages and solutions
|
||||
===================================
|
||||
|
||||
Registration error
|
||||
------------------
|
||||
|
||||
In case of a registration error, the following message should be displayed.
|
||||
|
||||
.. image:: on_premise/error-message-sub-code.png
|
||||
:alt: Database registration error message
|
||||
|
||||
To resolve the issue:
|
||||
|
||||
- Check the **validity of your Odoo Enterprise subscription** by verifying if your subscription
|
||||
details have the tag :guilabel:`In Progress` on your `Odoo Account
|
||||
<https://accounts.odoo.com/my/subscription>`_ or contact your Account Manager.
|
||||
|
||||
- Ensure that **no other database is linked** to the subscription code, as only one database can be
|
||||
linked per subscription.
|
||||
|
||||
.. tip::
|
||||
If a test or a development database is needed, you can :ref:`duplicate a database
|
||||
<on-premise/duplicate>`.
|
||||
|
||||
- Verify that **no databases share the same UUID** (Universally Unique Identifier) by opening your
|
||||
`Odoo Contract <https://accounts.odoo.com/my/subscription>`_. If two or more databases share the
|
||||
same UUID, their name will be displayed.
|
||||
|
||||
.. image:: on_premise/unlink-db-name-collision.png
|
||||
:alt: Database UUID error message
|
||||
|
||||
If that is the case, manually change the database(s) UUID or `send a support ticket
|
||||
<https://www.odoo.com/help>`_.
|
||||
|
||||
- As the update notification must be able to reach Odoo's subscription validation servers, ensure
|
||||
your **network and firewall settings** allow the Odoo server to open outgoing connections
|
||||
towards:
|
||||
|
||||
- Odoo 18.0 and above: `services.odoo.com` on port `80`
|
||||
- Odoo 17.0 and below: `services.openerp.com` on port `80`
|
||||
|
||||
These ports must be kept open even after registering a database, as the update notification runs
|
||||
once a week.
|
||||
|
||||
Too many users error
|
||||
--------------------
|
||||
|
||||
If you have more users in a local database than provisioned in your Odoo Enterprise subscription,
|
||||
the following message should be displayed.
|
||||
|
||||
.. image:: on_premise/add-more-users.png
|
||||
:alt: Too many users on a database error message
|
||||
|
||||
When the message appears, you have 30 days to act before the database expires. The countdown is
|
||||
updated every day.
|
||||
|
||||
To resolve the issue, either:
|
||||
|
||||
- **Add more users** to your subscription by clicking the :guilabel:`Upgrade your subscription` link
|
||||
displayed in the message to validate the upsell quotation and pay for the extra users.
|
||||
- :ref:`Deactivate users <users/deactivate>` and **reject** the upsell quotation.
|
||||
|
||||
Once your database has the correct number of users, the expiration message disappears automatically
|
||||
after a few days, when the next verification occurs.
|
||||
|
||||
Database expired error
|
||||
----------------------
|
||||
|
||||
If your database expires before you renew your subscription, the following message should be
|
||||
displayed.
|
||||
|
||||
.. image:: on_premise/database-expired.png
|
||||
:alt: Database expired error message
|
||||
|
||||
This message appears if you fail to act before the end of the 30-day countdown.
|
||||
|
||||
To resolve the issue, either:
|
||||
|
||||
- Click the :guilabel:`Renew your subscription` link displayed in the message and complete the
|
||||
process. If you pay by wire transfer, your subscription will be renewed when the payment arrives
|
||||
which can take a few days. Credit card payments are processed immediately.
|
||||
- `Send a support ticket <https://www.odoo.com/help>`_.
|
||||
|
||||
.. toctree::
|
||||
|
||||
on_premise/packages
|
||||
on_premise/source
|
||||
on_premise/update
|
||||
on_premise/deploy
|
||||
on_premise/email_gateway
|
||||
on_premise/geo_ip
|
||||
on_premise/community_to_enterprise
|
BIN
content/administration/on_premise/add-more-users.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
106
content/administration/on_premise/community_to_enterprise.rst
Normal file
@ -0,0 +1,106 @@
|
||||
|
||||
.. _setup/enterprise:
|
||||
|
||||
===================================
|
||||
Switch from Community to Enterprise
|
||||
===================================
|
||||
|
||||
Depending on your current installation, there are multiple ways to upgrade
|
||||
your community version.
|
||||
In any case the basic guidelines are:
|
||||
|
||||
* Backup your community database
|
||||
|
||||
.. image:: community_to_enterprise/db_manager.png
|
||||
:class: img-fluid
|
||||
|
||||
* Shutdown your server
|
||||
|
||||
* Install the web_enterprise module
|
||||
|
||||
* Restart your server
|
||||
|
||||
* Enter your Odoo Enterprise Subscription code
|
||||
|
||||
.. image:: community_to_enterprise/enterprise_code.png
|
||||
:class: img-fluid
|
||||
|
||||
On Linux, using an installer
|
||||
============================
|
||||
|
||||
* Backup your community database
|
||||
|
||||
* Stop the odoo service
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo service odoo stop
|
||||
|
||||
* Install the enterprise .deb (it should install over the community package)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dpkg -i <path_to_enterprise_deb>
|
||||
|
||||
* Update your database to the enterprise packages using
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 /usr/bin/odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
* You should be able to connect to your Odoo Enterprise instance using your usual mean of identification.
|
||||
You can then link your database with your Odoo Enterprise Subscription by entering the code you received
|
||||
by e-mail in the form input
|
||||
|
||||
|
||||
On Linux, using the source code
|
||||
===============================
|
||||
|
||||
There are many ways to launch your server when using sources, and you probably
|
||||
have your own favourite. You may need to adapt sections to your usual workflow.
|
||||
|
||||
* Shutdown your server
|
||||
* Backup your community database
|
||||
* Update the ``--addons-path`` parameter of your launch command (see :doc:`../on_premise/source`)
|
||||
* Install the web_enterprise module by using
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
Depending on the size of your database, this may take some time.
|
||||
|
||||
* Restart your server with the updated addons path of point 3.
|
||||
You should be able to connect to your instance. You can then link your database with your
|
||||
Odoo Enterprise Subscription by entering the code you received by e-mail in the form input
|
||||
|
||||
On Windows
|
||||
==========
|
||||
|
||||
* Backup your community database
|
||||
|
||||
* Uninstall Odoo Community (using the Uninstall executable in the installation folder) -
|
||||
PostgreSQL will remain installed
|
||||
|
||||
.. image:: community_to_enterprise/windows_uninstall.png
|
||||
:class: img-fluid
|
||||
|
||||
* Launch the Odoo Enterprise Installer and follow the steps normally. When choosing
|
||||
the installation path, you can set the folder of the Community installation
|
||||
(this folder still contains the PostgreSQL installation).
|
||||
Uncheck ``Start Odoo`` at the end of the installation
|
||||
|
||||
.. image:: community_to_enterprise/windows_setup.png
|
||||
:class: img-fluid
|
||||
|
||||
* Using a command window, update your Odoo Database using this command (from the Odoo
|
||||
installation path, in the server subfolder)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ ..\python\python.exe odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
* No need to manually launch the server, the service is running.
|
||||
You should be able to connect to your Odoo Enterprise instance using your usual
|
||||
mean of identification. You can then link your database with your Odoo Enterprise
|
||||
Subscription by entering the code you received by e-mail in the form input
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
930
content/administration/on_premise/deploy.rst
Normal file
@ -0,0 +1,930 @@
|
||||
====================
|
||||
System configuration
|
||||
====================
|
||||
|
||||
This document describes basic steps to set up Odoo in production or on an
|
||||
internet-facing server. It follows :doc:`installation <../on_premise>`, and is
|
||||
not generally necessary for a development systems that is not exposed on the
|
||||
internet.
|
||||
|
||||
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
||||
|
||||
.. _db_filter:
|
||||
|
||||
dbfilter
|
||||
========
|
||||
|
||||
Odoo is a multi-tenant system: a single Odoo system may run and serve a number
|
||||
of database instances. It is also highly customizable, with customizations
|
||||
(starting from the modules being loaded) depending on the "current database".
|
||||
|
||||
This is not an issue when working with the backend (web client) as a logged-in
|
||||
company user: the database can be selected when logging in, and customizations
|
||||
loaded afterwards.
|
||||
|
||||
However it is an issue for non-logged users (portal, website) which aren't
|
||||
bound to a database: Odoo needs to know which database should be used to load
|
||||
the website page or perform the operation. If multi-tenancy is not used that is not an
|
||||
issue, there's only one database to use, but if there are multiple databases
|
||||
accessible Odoo needs a rule to know which one it should use.
|
||||
|
||||
That is one of the purposes of :option:`--db-filter <odoo-bin --db-filter>`:
|
||||
it specifies how the database should be selected based on the hostname (domain)
|
||||
that is being requested. The value is a `regular expression`_, possibly
|
||||
including the dynamically injected hostname (``%h``) or the first subdomain
|
||||
(``%d``) through which the system is being accessed.
|
||||
|
||||
For servers hosting multiple databases in production, especially if ``website``
|
||||
is used, dbfilter **must** be set, otherwise a number of features will not work
|
||||
correctly.
|
||||
|
||||
Configuration samples
|
||||
---------------------
|
||||
|
||||
* Show only databases with names beginning with 'mycompany'
|
||||
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
dbfilter = ^mycompany.*$
|
||||
|
||||
* Show only databases matching the first subdomain after ``www``: for example
|
||||
the database "mycompany" will be shown if the incoming request
|
||||
was sent to ``www.mycompany.com`` or ``mycompany.co.uk``, but not
|
||||
for ``www2.mycompany.com`` or ``helpdesk.mycompany.com``.
|
||||
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
dbfilter = ^%d$
|
||||
|
||||
.. note::
|
||||
|
||||
Setting a proper :option:`--db-filter <odoo-bin --db-filter>` is an important part
|
||||
of securing your deployment.
|
||||
Once it is correctly working and only matching a single database per hostname, it
|
||||
is strongly recommended to block access to the database manager screens,
|
||||
and to use the ``--no-database-list`` startup parameter to prevent listing
|
||||
your databases, and to block access to the database management screens.
|
||||
See also security_.
|
||||
|
||||
PostgreSQL
|
||||
==========
|
||||
|
||||
By default, PostgreSQL only allows connection over UNIX sockets and loopback
|
||||
connections (from "localhost", the same machine the PostgreSQL server is
|
||||
installed on).
|
||||
|
||||
UNIX socket is fine if you want Odoo and PostgreSQL to execute on the same
|
||||
machine, and is the default when no host is provided, but if you want Odoo and
|
||||
PostgreSQL to execute on different machines [#different-machines]_ it will
|
||||
need to `listen to network interfaces`_ [#remote-socket]_, either:
|
||||
|
||||
* Only accept loopback connections and `use an SSH tunnel`_ between the
|
||||
machine on which Odoo runs and the one on which PostgreSQL runs, then
|
||||
configure Odoo to connect to its end of the tunnel
|
||||
* Accept connections to the machine on which Odoo is installed, possibly
|
||||
over ssl (see `PostgreSQL connection settings`_ for details), then configure
|
||||
Odoo to connect over the network
|
||||
|
||||
Configuration sample
|
||||
--------------------
|
||||
|
||||
* Allow tcp connection on localhost
|
||||
* Allow tcp connection from 192.168.1.x network
|
||||
|
||||
in ``/etc/postgresql/<YOUR POSTGRESQL VERSION>/main/pg_hba.conf`` set:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
# IPv4 local connections:
|
||||
host all all 127.0.0.1/32 md5
|
||||
host all all 192.168.1.0/24 md5
|
||||
|
||||
in ``/etc/postgresql/<YOUR POSTGRESQL VERSION>/main/postgresql.conf`` set:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
listen_addresses = 'localhost,192.168.1.2'
|
||||
port = 5432
|
||||
max_connections = 80
|
||||
|
||||
.. _setup/deploy/odoo:
|
||||
|
||||
Configuring Odoo
|
||||
----------------
|
||||
|
||||
Out of the box, Odoo connects to a local postgres over UNIX socket via port
|
||||
5432. This can be overridden using :ref:`the database options
|
||||
<reference/cmdline/server/database>` when your Postgres deployment is not
|
||||
local and/or does not use the installation defaults.
|
||||
|
||||
The :doc:`packaged installers <packages>` will automatically
|
||||
create a new user (``odoo``) and set it as the database user.
|
||||
|
||||
* The database management screens are protected by the ``admin_passwd``
|
||||
setting. This setting can only be set using configuration files, and is
|
||||
simply checked before performing database alterations. It should be set to
|
||||
a randomly generated value to ensure third parties can not use this
|
||||
interface.
|
||||
* All database operations use the :ref:`database options
|
||||
<reference/cmdline/server/database>`, including the database management
|
||||
screen. For the database management screen to work requires that the PostgreSQL user
|
||||
have ``createdb`` right.
|
||||
* Users can always drop databases they own. For the database management screen
|
||||
to be completely non-functional, the PostgreSQL user needs to be created with
|
||||
``no-createdb`` and the database must be owned by a different PostgreSQL user.
|
||||
|
||||
.. warning:: the PostgreSQL user *must not* be a superuser
|
||||
|
||||
Configuration sample
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* connect to a PostgreSQL server on 192.168.1.2
|
||||
* port 5432
|
||||
* using an 'odoo' user account,
|
||||
* with 'pwd' as a password
|
||||
* filtering only db with a name beginning with 'mycompany'
|
||||
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
admin_passwd = mysupersecretpassword
|
||||
db_host = 192.168.1.2
|
||||
db_port = 5432
|
||||
db_user = odoo
|
||||
db_password = pwd
|
||||
dbfilter = ^mycompany.*$
|
||||
|
||||
.. _postgresql_ssl_connect:
|
||||
|
||||
SSL Between Odoo and PostgreSQL
|
||||
-------------------------------
|
||||
|
||||
Since Odoo 11.0, you can enforce ssl connection between Odoo and PostgreSQL.
|
||||
in Odoo the db_sslmode control the ssl security of the connection
|
||||
with value chosen out of 'disable', 'allow', 'prefer', 'require', 'verify-ca'
|
||||
or 'verify-full'
|
||||
|
||||
`PostgreSQL Doc <https://www.postgresql.org/docs/12/static/libpq-ssl.html>`_
|
||||
|
||||
.. _builtin_server:
|
||||
|
||||
Builtin server
|
||||
==============
|
||||
|
||||
Odoo includes built-in HTTP, cron, and live-chat servers, using either multi-threading or
|
||||
multi-processing.
|
||||
|
||||
The **multi-threaded** server is a simpler server primarily used for development, demonstrations,
|
||||
and its compatibility with various operating systems (including Windows). A new thread is spawned
|
||||
for every new HTTP request, even for long-lived connections such as websocket. Extra daemonic cron
|
||||
threads are spawned too. Due to a Python limitation (GIL), it doesn't make the best use of the
|
||||
hardware.
|
||||
|
||||
The multi-threaded server is the default server, also for docker containers. It is selected by
|
||||
leaving the :option:`--workers <odoo-bin --workers>` option out or setting it to ``0``.
|
||||
|
||||
The **multi-processing** server is a full-blown server primarily used for production. It is not
|
||||
liable to the same Python limitation (GIL) on resource usage and hence makes the best use of the
|
||||
hardware. A pool of workers is created upon server startup. New HTTP requests are queued by the OS
|
||||
until there are workers ready to process them. An extra event-driven HTTP worker for the live chat
|
||||
is spawned on an alternative port. Extra cron workers are spawned too. A configurable process
|
||||
reaper monitors resource usage and can kill/restart failed workers.
|
||||
|
||||
The multi-processing server is opt-in. It is selected by setting the :option:`--workers
|
||||
<odoo-bin --workers>` option to a non-null integer.
|
||||
|
||||
.. note::
|
||||
Because it is highly customized for Linux servers, the multi-processing server is not available
|
||||
on Windows.
|
||||
|
||||
Worker number calculation
|
||||
-------------------------
|
||||
|
||||
* Rule of thumb : (#CPU * 2) + 1
|
||||
* Cron workers need CPU
|
||||
* 1 worker ~= 6 concurrent users
|
||||
|
||||
memory size calculation
|
||||
-----------------------
|
||||
|
||||
* We consider 20% of the requests are heavy requests, while 80% are simpler ones
|
||||
* A heavy worker, when all computed field are well designed, SQL requests are well designed, ... is estimated to consume around 1GB of RAM
|
||||
* A lighter worker, in the same scenario, is estimated to consume around 150MB of RAM
|
||||
|
||||
Needed RAM = #worker * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
|
||||
|
||||
LiveChat
|
||||
--------
|
||||
|
||||
In multi-processing, a dedicated LiveChat worker is automatically started and listens on
|
||||
the :option:`--gevent-port <odoo-bin --gevent-port>`. By default, the HTTP requests will keep
|
||||
accessing the normal HTTP workers instead of the LiveChat one. You must deploy a proxy in front of
|
||||
Odoo and redirect incoming requests whose path starts with ``/websocket/`` to the LiveChat worker.
|
||||
You must also start Odoo in :option:`--proxy-mode <odoo-bin --proxy-mode>` so it uses the real
|
||||
client headers (such as hostname, scheme, and IP) instead of the proxy ones.
|
||||
|
||||
Configuration sample
|
||||
--------------------
|
||||
|
||||
* Server with 4 CPU, 8 Thread
|
||||
* 60 concurrent users
|
||||
|
||||
* 60 users / 6 = 10 <- theoretical number of worker needed
|
||||
* (4 * 2) + 1 = 9 <- theoretical maximal number of worker
|
||||
* We'll use 8 workers + 1 for cron. We'll also use a monitoring system to measure cpu load, and check if it's between 7 and 7.5 .
|
||||
* RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo
|
||||
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>`:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options]
|
||||
limit_memory_hard = 1677721600
|
||||
limit_memory_soft = 629145600
|
||||
limit_request = 8192
|
||||
limit_time_cpu = 600
|
||||
limit_time_real = 1200
|
||||
max_cron_threads = 1
|
||||
workers = 8
|
||||
|
||||
.. _https_proxy:
|
||||
|
||||
HTTPS
|
||||
=====
|
||||
|
||||
Whether it's accessed via website/web client or web service, Odoo transmits
|
||||
authentication information in cleartext. This means a secure deployment of
|
||||
Odoo must use HTTPS\ [#switching]_. SSL termination can be implemented via
|
||||
just about any SSL termination proxy, but requires the following setup:
|
||||
|
||||
* Enable Odoo's :option:`proxy mode <odoo-bin --proxy-mode>`. This should only be enabled when Odoo is behind a reverse proxy
|
||||
* Set up the SSL termination proxy (`Nginx termination example`_)
|
||||
* Set up the proxying itself (`Nginx proxying example`_)
|
||||
* Your SSL termination proxy should also automatically redirect non-secure
|
||||
connections to the secure port
|
||||
|
||||
Configuration sample
|
||||
--------------------
|
||||
|
||||
* Redirect http requests to https
|
||||
* Proxy requests to odoo
|
||||
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
proxy_mode = True
|
||||
|
||||
in ``/etc/nginx/sites-enabled/odoo.conf`` set:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
#odoo server
|
||||
upstream odoo {
|
||||
server 127.0.0.1:8069;
|
||||
}
|
||||
upstream odoochat {
|
||||
server 127.0.0.1:8072;
|
||||
}
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
# http -> https
|
||||
server {
|
||||
listen 80;
|
||||
server_name odoo.mycompany.com;
|
||||
rewrite ^(.*) https://$host$1 permanent;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name odoo.mycompany.com;
|
||||
proxy_read_timeout 720s;
|
||||
proxy_connect_timeout 720s;
|
||||
proxy_send_timeout 720s;
|
||||
|
||||
# SSL parameters
|
||||
ssl_certificate /etc/ssl/nginx/server.crt;
|
||||
ssl_certificate_key /etc/ssl/nginx/server.key;
|
||||
ssl_session_timeout 30m;
|
||||
ssl_protocols TLSv1.2;
|
||||
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;
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
# log
|
||||
access_log /var/log/nginx/odoo.access.log;
|
||||
error_log /var/log/nginx/odoo.error.log;
|
||||
|
||||
# Redirect websocket requests to odoo gevent port
|
||||
location /websocket {
|
||||
proxy_pass http://odoochat;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
|
||||
}
|
||||
|
||||
# Redirect requests to odoo backend server
|
||||
location / {
|
||||
# Add Headers for odoo proxy mode
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_redirect off;
|
||||
proxy_pass http://odoo;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
|
||||
}
|
||||
|
||||
# common gzip
|
||||
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
|
||||
gzip on;
|
||||
}
|
||||
|
||||
HTTPS Hardening
|
||||
---------------
|
||||
|
||||
Add the `Strict-Transport-Security` header to all requests, in order to prevent
|
||||
browsers from ever sending a plain HTTP request to this domain. You will need
|
||||
to maintain a working HTTPS service with a valid certificate on this domain at
|
||||
all times, otherwise your users will see security alerts or be entirely unable
|
||||
to access it.
|
||||
|
||||
Force HTTPS connections during a year for every visitor in NGINX with the line:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||
|
||||
Additional configuration can be defined for the `session_id` cookie. The `Secure`
|
||||
flag can be added to ensure it is never transmitted over HTTP and `SameSite=Lax`
|
||||
to prevent authenticated `CSRF`_.
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
# requires nginx 1.19.8
|
||||
proxy_cookie_flags session_id samesite=lax secure;
|
||||
|
||||
|
||||
Odoo as a WSGI Application
|
||||
==========================
|
||||
|
||||
It is also possible to mount Odoo as a standard WSGI_ application. Odoo
|
||||
provides the base for a WSGI launcher script as ``odoo-wsgi.example.py``. That
|
||||
script should be customized (possibly after copying it from the setup directory) to correctly set the
|
||||
configuration directly in :mod:`odoo.tools.config` rather than through the
|
||||
command-line or a configuration file.
|
||||
|
||||
However the WSGI server will only expose the main HTTP endpoint for the web
|
||||
client, website and webservice API. Because Odoo does not control the creation
|
||||
of workers anymore it can not setup cron or livechat workers
|
||||
|
||||
Cron Workers
|
||||
------------
|
||||
|
||||
Starting one of the built-in Odoo servers next to the WSGI server is required to process cron jobs.
|
||||
That server must be configured to only process crons and not HTTP requests using the
|
||||
:option:`--no-http <odoo-bin --no-http>` cli option or the ``http_enable = False`` configuration
|
||||
file setting.
|
||||
|
||||
On Linux-like systems, using the multi-processing server over the multi-threading one is recommended
|
||||
to benefit from better hardware usage and increased stability, i.e., using
|
||||
the :option:`--workers=-1 <odoo-bin --workers>` and :option:`--max-cron-threads=n
|
||||
<odoo-bin --max-cron-threads>` cli options.
|
||||
|
||||
LiveChat
|
||||
--------
|
||||
|
||||
Using a gevent-compatible WSGI server is required for the correct operation of the live chat
|
||||
feature. That server should be able to handle many simultaneous long-lived connections but doesn't
|
||||
need a lot of processing power. All requests whose path starts with ``/websocket/`` should be
|
||||
directed to that server. A regular (thread/process-based) WSGI server should be used for all other
|
||||
requests.
|
||||
|
||||
The Odoo cron server can also be used to serve the live chat requests. Just drop
|
||||
the :option:`--no-http <odoo-bin --no-http>` cli option from the cron server and make sure requests
|
||||
whose path starts with ``/websocket/`` are directed to this server, either on
|
||||
the :option:`--http-port <odoo-bin --http-port>` (multi-threading server) or on
|
||||
the :option:`--gevent-port <odoo-bin --gevent-port>` (multi-processing server).
|
||||
|
||||
.. _deploy/streaming:
|
||||
|
||||
Serving static files and attachments
|
||||
====================================
|
||||
|
||||
For development convenience, Odoo directly serves all static files and attachments in its modules.
|
||||
This may not be ideal when it comes to performances, and static files should generally be served by
|
||||
a static HTTP server.
|
||||
|
||||
Serving static files
|
||||
--------------------
|
||||
|
||||
Odoo static files are located in each module's :file:`static/` folder, so static files can be served
|
||||
by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module
|
||||
(and file) in the various addons paths.
|
||||
|
||||
It is recommended to set the ``Content-Security-Policy: default-src 'none'`` header on all images
|
||||
delivered by the web server. It is not strictly necessary as users cannot modify/inject content
|
||||
inside of modules' :file:`static/` folder and existing images are final (they do not fetch new
|
||||
resources by themselves). However, it is good practice.
|
||||
|
||||
Using the above NGINX (https) configuration, the following ``map`` and ``location`` blocks should be
|
||||
added to serve static files via NGINX.
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
map $sent_http_content_type $content_type_csp {
|
||||
default "";
|
||||
~image/ "default-src 'none'";
|
||||
}
|
||||
|
||||
server {
|
||||
# the rest of the configuration
|
||||
|
||||
location @odoo {
|
||||
# copy-paste the content of the / location block
|
||||
}
|
||||
|
||||
# Serve static files right away
|
||||
location ~ ^/[^/]+/static/.+$ {
|
||||
# root and try_files both depend on your addons paths
|
||||
root ...;
|
||||
try_files ... @odoo;
|
||||
expires 24h;
|
||||
add_header Content-Security-Policy $content_type_csp;
|
||||
}
|
||||
}
|
||||
|
||||
The actual ``root`` and ``try_files`` directives are dependant on your installation, specifically on
|
||||
your :option:`--addons-path <odoo-bin --addons-path>`.
|
||||
|
||||
.. example::
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian package
|
||||
|
||||
Say Odoo has been installed via the **debian packages** for Community and Enterprise, and
|
||||
that the :option:`--addons-path <odoo-bin --addons-path>` is
|
||||
``'/usr/lib/python3/dist-packages/odoo/addons'``.
|
||||
|
||||
The ``root`` and ``try_files`` should be:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
root /usr/lib/python3/dist-packages/odoo/addons;
|
||||
try_files $uri @odoo;
|
||||
|
||||
.. group-tab:: Git sources
|
||||
|
||||
Say Odoo has been installed via the **sources**, that both the Community and Enterprise git
|
||||
repositories were cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise`
|
||||
respectively, and that the :option:`--addons-path <odoo-bin --addons-path>` is
|
||||
``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``.
|
||||
|
||||
The ``root`` and ``try_files`` should be:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
root /opt/odoo;
|
||||
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
|
||||
|
||||
Serving attachments
|
||||
-------------------
|
||||
|
||||
Attachments are files stored in the filestore which access is regulated by Odoo. They cannot be
|
||||
directly accessed via a static web server as accessing them requires multiple lookups in the
|
||||
database to determine where the files are stored and whether the current user can access them or
|
||||
not.
|
||||
|
||||
Nevertheless, once the file has been located and the access rights verified by Odoo, it is a good
|
||||
idea to serve the file using the static web server instead of Odoo. For Odoo to delegate serving
|
||||
files to the static web server, the `X-Sendfile <https://tn123.org/mod_xsendfile/>`_ (apache) or
|
||||
`X-Accel <https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/>`_ (nginx) extensions
|
||||
must be enabled and configured on the static web server. Once it is set up, start Odoo with the
|
||||
:option:`--x-sendfile <odoo-bin --x-sendfile>` CLI flag (this unique flag is used for both
|
||||
X-Sendfile and X-Accel).
|
||||
|
||||
|
||||
.. note::
|
||||
- The X-Sendfile extension for apache (and compatible web servers) does not require any
|
||||
supplementary configuration.
|
||||
- The X-Accel extension for NGINX **does** require the following additionnal configuration:
|
||||
|
||||
.. code-block:: nginx
|
||||
|
||||
location /web/filestore {
|
||||
internal;
|
||||
alias /path/to/odoo/data-dir/filestore;
|
||||
}
|
||||
|
||||
In case you don't know what is the path to your filestore, start Odoo with the
|
||||
:option:`--x-sendfile <odoo-bin --x-sendfile>` option and navigate to the ``/web/filestore`` URL
|
||||
directly via Odoo (don't navigate to the URL via NGINX). This logs a warnings, the message
|
||||
contains the configuration you need.
|
||||
|
||||
|
||||
.. _security:
|
||||
|
||||
Security
|
||||
========
|
||||
|
||||
For starters, keep in mind that securing an information system is a continuous process,
|
||||
not a one-shot operation. At any moment, you will only be as secure as the weakest link
|
||||
in your environment.
|
||||
|
||||
So please do not take this section as the ultimate list of measures that will prevent
|
||||
all security problems. It's only intended as a summary of the first important things
|
||||
you should be sure to include in your security action plan. The rest will come
|
||||
from best security practices for your operating system and distribution,
|
||||
best practices in terms of users, passwords, and access control management, etc.
|
||||
|
||||
When deploying an internet-facing server, please be sure to consider the following
|
||||
security-related topics:
|
||||
|
||||
- Always set a strong super-admin admin password, and restrict access to the database
|
||||
management pages as soon as the system is set up. See :ref:`db_manager_security`.
|
||||
|
||||
- Choose unique logins and strong passwords for all administrator accounts on all databases.
|
||||
Do not use 'admin' as the login. Do not use those logins for day-to-day operations,
|
||||
only for controlling/managing the installation.
|
||||
*Never* use any default passwords like admin/admin, even for test/staging databases.
|
||||
|
||||
- Do **not** install demo data on internet-facing servers. Databases with demo data contain
|
||||
default logins and passwords that can be used to get into your systems and cause significant
|
||||
trouble, even on staging/dev systems.
|
||||
|
||||
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
|
||||
to restrict the visibility of your databases according to the hostname.
|
||||
See :ref:`db_filter`.
|
||||
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
|
||||
list of available databases to filter from, instead of letting the system fetch
|
||||
them all from the database backend.
|
||||
|
||||
- Once your ``db_name`` and ``db_filter`` are configured and only match a single database
|
||||
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
|
||||
listing databases entirely, and to block access to the database management screens
|
||||
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
|
||||
command-line option)
|
||||
|
||||
- Make sure the PostgreSQL user (:option:`--db_user <odoo-bin --db_user>`) is *not* a super-user,
|
||||
and that your databases are owned by a different user. For example they could be owned by
|
||||
the ``postgres`` super-user if you are using a dedicated non-privileged ``db_user``.
|
||||
See also :ref:`setup/deploy/odoo`.
|
||||
|
||||
- Keep installations updated by regularly installing the latest builds,
|
||||
either via GitHub or by downloading the latest version from
|
||||
https://www.odoo.com/page/download or http://nightly.odoo.com
|
||||
|
||||
- Configure your server in multi-process mode with proper limits matching your typical
|
||||
usage (memory/CPU/timeouts). See also :ref:`builtin_server`.
|
||||
|
||||
- Run Odoo behind a web server providing HTTPS termination with a valid SSL certificate,
|
||||
in order to prevent eavesdropping on cleartext communications. SSL certificates are
|
||||
cheap, and many free options exist.
|
||||
Configure the web proxy to limit the size of requests, set appropriate timeouts,
|
||||
and then enable the :option:`proxy mode <odoo-bin --proxy-mode>` option.
|
||||
See also :ref:`https_proxy`.
|
||||
|
||||
- If you need to allow remote SSH access to your servers, make sure to set a strong password
|
||||
for **all** accounts, not just `root`. It is strongly recommended to entirely disable
|
||||
password-based authentication, and only allow public key authentication. Also consider
|
||||
restricting access via a VPN, allowing only trusted IPs in the firewall, and/or
|
||||
running a brute-force detection system such as `fail2ban` or equivalent.
|
||||
|
||||
- Consider installing appropriate rate-limiting on your proxy or firewall, to prevent
|
||||
brute-force attacks and denial of service attacks. See also :ref:`login_brute_force`
|
||||
for specific measures.
|
||||
|
||||
Many network providers provide automatic mitigation for Distributed Denial of
|
||||
Service attacks (DDOS), but this is often an optional service, so you should consult
|
||||
with them.
|
||||
|
||||
- Whenever possible, host your public-facing demo/test/staging instances on different
|
||||
machines than the production ones. And apply the same security precautions as for
|
||||
production.
|
||||
|
||||
- If your public-facing Odoo server has access to sensitive internal network resources
|
||||
or services (e.g. via a private VLAN), implement appropriate firewall rules to
|
||||
protect those internal resources. This will ensure that the Odoo server cannot
|
||||
be used accidentally (or as a result of malicious user actions) to access or disrupt
|
||||
those internal resources.
|
||||
Typically this can be done by applying an outbound default DENY rule on the firewall,
|
||||
then only explicitly authorizing access to internal resources that the Odoo server
|
||||
needs to access.
|
||||
`Systemd IP traffic access control <http://0pointer.net/blog/ip-accounting-and-access-lists-with-systemd.html>`_
|
||||
may also be useful to implement per-process network access control.
|
||||
|
||||
- If your public-facing Odoo server is behind a Web Application Firewall, a load-balancer,
|
||||
a transparent DDoS protection service (like CloudFlare) or a similar network-level
|
||||
device, you may wish to avoid direct access to the Odoo system. It is generally
|
||||
difficult to keep the endpoint IP addresses of your Odoo servers secret. For example
|
||||
they can appear in web server logs when querying public systems, or in the headers
|
||||
of emails posted from Odoo.
|
||||
In such a situation you may want to configure your firewall so that the endpoints
|
||||
are not accessible publicly except from the specific IP addresses of your WAF,
|
||||
load-balancer or proxy service. Service providers like CloudFlare usually maintain
|
||||
a public list of their IP address ranges for this purpose.
|
||||
|
||||
- If you are hosting multiple customers, isolate customer data and files from each other
|
||||
using containers or appropriate "jail" techniques.
|
||||
|
||||
- Setup daily backups of your databases and filestore data, and copy them to a remote
|
||||
archiving server that is not accessible from the server itself.
|
||||
|
||||
- Deploying Odoo on Linux is strongly recommended over Windows. Should you choose nevertheless
|
||||
to deploy on a Windows platform, a thorough security hardening review of the server should be
|
||||
conducted and is outside of the scope of this guide.
|
||||
|
||||
|
||||
.. _login_brute_force:
|
||||
|
||||
Blocking Brute Force Attacks
|
||||
----------------------------
|
||||
|
||||
For internet-facing deployments, brute force attacks on user passwords are very common, and this
|
||||
threat should not be neglected for Odoo servers. Odoo emits a log entry whenever a login attempt
|
||||
is performed, and reports the result: success or failure, along with the target login and source IP.
|
||||
|
||||
The log entries will have the following form.
|
||||
|
||||
Failed login::
|
||||
|
||||
2018-07-05 14:56:31,506 24849 INFO db_name odoo.addons.base.res.res_users: Login failed for db:db_name login:admin from 127.0.0.1
|
||||
|
||||
Successful login::
|
||||
|
||||
2018-07-05 14:56:31,506 24849 INFO db_name odoo.addons.base.res.res_users: Login successful for db:db_name login:admin from 127.0.0.1
|
||||
|
||||
|
||||
These logs can be easily analyzed by an intrusion prevention system such as `fail2ban`.
|
||||
|
||||
For example, the following fail2ban filter definition should match a
|
||||
failed login::
|
||||
|
||||
[Definition]
|
||||
failregex = ^ \d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from <HOST>
|
||||
ignoreregex =
|
||||
|
||||
This could be used with a jail definition to block the attacking IP on HTTP(S).
|
||||
|
||||
Here is what it could look like for blocking the IP for 15 minutes when
|
||||
10 failed login attempts are detected from the same IP within 1 minute::
|
||||
|
||||
[odoo-login]
|
||||
enabled = true
|
||||
port = http,https
|
||||
bantime = 900 ; 15 min ban
|
||||
maxretry = 10 ; if 10 attempts
|
||||
findtime = 60 ; within 1 min /!\ Should be adjusted with the TZ offset
|
||||
logpath = /var/log/odoo.log ; set the actual odoo log path here
|
||||
|
||||
.. _db_manager_security:
|
||||
|
||||
Database Manager Security
|
||||
-------------------------
|
||||
|
||||
:ref:`setup/deploy/odoo` mentioned ``admin_passwd`` in passing.
|
||||
|
||||
This setting is used on all database management screens (to create, delete,
|
||||
dump or restore databases).
|
||||
|
||||
If the management screens must not be accessible at all, you should set ``list_db``
|
||||
configuration option to ``False``, to block access to all the database selection and
|
||||
management screens.
|
||||
|
||||
.. warning::
|
||||
|
||||
It is strongly recommended to disable the Database Manager for any internet-facing
|
||||
system! It is meant as a development/demo tool, to make it easy to quickly create
|
||||
and manage databases. It is not designed for use in production, and may even expose
|
||||
dangerous features to attackers. It is also not designed to handle large databases,
|
||||
and may trigger memory limits.
|
||||
|
||||
On production systems, database management operations should always be performed by
|
||||
the system administrator, including provisioning of new databases and automated backups.
|
||||
|
||||
Be sure to setup an appropriate ``db_name`` parameter
|
||||
(and optionally, ``db_filter`` too) so that the system can determine the target database
|
||||
for each request, otherwise users will be blocked as they won't be allowed to choose the
|
||||
database themselves.
|
||||
|
||||
If the management screens must only be accessible from a selected set of machines,
|
||||
use the proxy server's features to block access to all routes starting with ``/web/database``
|
||||
except (maybe) ``/web/database/selector`` which displays the database-selection screen.
|
||||
|
||||
If the database-management screen should be left accessible, the
|
||||
``admin_passwd`` setting must be changed from its ``admin`` default: this
|
||||
password is checked before allowing database-alteration operations.
|
||||
|
||||
It should be stored securely, and should be generated randomly e.g.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
|
||||
|
||||
which generates a 32-character pseudorandom printable string.
|
||||
|
||||
Reset the master password
|
||||
-------------------------
|
||||
|
||||
There may be instances where the master password is misplaced, or compromised, and needs to be
|
||||
reset. The following process is for system administrators of an Odoo on-premise database detailing
|
||||
how to manually reset and re-encrypt the master password.
|
||||
|
||||
.. seealso::
|
||||
For more information about changing an Odoo.com account password, see this documentation:
|
||||
:ref:`odoocom/change_password`.
|
||||
|
||||
When creating a new on-premise database, a random master password is generated. Odoo recommends
|
||||
using this password to secure the database. This password is implemented by default, so there is a
|
||||
secure master password for any Odoo on-premise deployment.
|
||||
|
||||
.. warning::
|
||||
When creating an Odoo on-premise database the installation is accessible to anyone on the
|
||||
internet, until this password is set to secure the database.
|
||||
|
||||
The master password is specified in the Odoo configuration file (`odoo.conf` or `odoorc` (hidden
|
||||
file)). The Odoo master password is needed to modify, create, or delete a database through the
|
||||
graphical user interface (GUI).
|
||||
|
||||
Locate configuration file
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
First, open the Odoo configuration file (`odoo.conf` or `odoorc` (hidden file)).
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Windows
|
||||
|
||||
The configuration file is located at: `c:\\ProgramFiles\\Odoo{VERSION}\\server\\odoo.conf`
|
||||
|
||||
.. tab:: Linux
|
||||
|
||||
Depending on how Odoo is installed on the Linux machine, the configuration file is located in
|
||||
one of two different places:
|
||||
|
||||
- Package installation: `/etc/odoo.conf`
|
||||
- Source installation: `~/.odoorc`
|
||||
|
||||
Change old password
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Once the appropriate file has been opened, proceed to modify the old password in the configuration
|
||||
file to a temporary password.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Graphical user interface
|
||||
|
||||
After locating the configuration file, open it using a (:abbr:`GUI (graphical user
|
||||
interface)`). This can be achieved by simply double clicking on the file. Then, the device
|
||||
should have a default :abbr:`GUI (graphical user interface)` to open the file with.
|
||||
|
||||
Next, modify the master password line `admin_passwd = $pbkdf2-sha…` to `admin_passwd =
|
||||
newpassword1234`, for example. This password can be anything, as long as it is saved
|
||||
temporarily. Make sure to modify all characters after the `=`.
|
||||
|
||||
.. example::
|
||||
The line appears like this:
|
||||
`admin_passwd =
|
||||
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
|
||||
|
||||
The modified line appears like this: `admin_passwd = newpassword1234`
|
||||
|
||||
.. group-tab:: Command-line interface
|
||||
|
||||
Modify the master password line using the following Unix command detailed below.
|
||||
|
||||
Connect to the Odoo server's terminal via Secure Shell (SSH) protocol, and edit the
|
||||
configuration file. To modify the configuration file, enter the following command:
|
||||
:command:`sudo nano /etc/odoo.conf`
|
||||
|
||||
After opening the configuration file, modify the master password line `admin_passwd =
|
||||
$pbkdf2-sha…` to `admin_passwd = newpassword1234`. This password can be anything, as long as
|
||||
it is saved temporarily. Make sure to modify all characters after the `=`.
|
||||
|
||||
.. example::
|
||||
The line appears like this:
|
||||
`admin_passwd =
|
||||
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
|
||||
|
||||
The modified line appears like this: `admin_passwd = newpassword1234`
|
||||
|
||||
.. important::
|
||||
It is essential that the password is changed to something else, rather than triggering a new
|
||||
password reset by adding a semicolon `;` at the beginning of the line. This ensures the database
|
||||
is secure throughout the entire password reset process.
|
||||
|
||||
Restart Odoo server
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After setting the temporary password, a restart of the Odoo server is **required**.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Graphical user interface
|
||||
|
||||
To restart the Odoo server, first, type `services` into the Windows :guilabel:`Search` bar.
|
||||
Then, select the :guilabel:`Services` application, and scroll down to the :guilabel:`Odoo`
|
||||
service.
|
||||
|
||||
Next, right click on :guilabel:`Odoo`, and select :guilabel:`Start` or :guilabel:`Restart`.
|
||||
This action manually restarts the Odoo server.
|
||||
|
||||
.. group-tab:: Command-line interface
|
||||
|
||||
Restart the Odoo server by typing the command: :command:`sudo service odoo15 restart`
|
||||
|
||||
.. note::
|
||||
Change the number after `odoo` to fit the specific version the server is running on.
|
||||
|
||||
Use web interface to re-encrypt password
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
First, navigate to `/web/database/manager` or `http://server_ip:port/web/database/manager` in a
|
||||
browser.
|
||||
|
||||
.. note::
|
||||
Replace `server_ip` with the IP address of the database. Replace `port` with the numbered port
|
||||
the database is accessible from.
|
||||
|
||||
Next, click :guilabel:`Set Master Password`, and type in the previously-selected temporary password
|
||||
into the :guilabel:`Master Password` field. Following this step, type in a :guilabel:`New Master
|
||||
Password`. The :guilabel:`New Master Password` is hashed (or encrypted), once the
|
||||
:guilabel:`Continue` button is clicked.
|
||||
|
||||
At this point, the password has been successfully reset, and a hashed version of the new password
|
||||
now appears in the configuration file.
|
||||
|
||||
.. seealso::
|
||||
For more information on Odoo database security, see this documentation:
|
||||
:ref:`db_manager_security`.
|
||||
|
||||
Supported Browsers
|
||||
==================
|
||||
|
||||
Odoo supports all the major desktop and mobile browsers available on the market,
|
||||
as long as they are supported by their publishers.
|
||||
|
||||
Here are the supported browsers:
|
||||
|
||||
- Google Chrome
|
||||
- Mozilla Firefox
|
||||
- Microsoft Edge
|
||||
- Apple Safari
|
||||
|
||||
.. warning:: Please make sure your browser is up-to-date and still supported by
|
||||
its publisher before filing a bug report.
|
||||
|
||||
.. note::
|
||||
|
||||
Since Odoo 13.0, ES6 is supported. Therefore, IE support is dropped.
|
||||
|
||||
.. [#different-machines]
|
||||
to have multiple Odoo installations use the same PostgreSQL database,
|
||||
or to provide more computing resources to both software.
|
||||
.. [#remote-socket]
|
||||
technically a tool like socat_ can be used to proxy UNIX sockets across
|
||||
networks, but that is mostly for software which can only be used over
|
||||
UNIX sockets
|
||||
.. [#switching]
|
||||
or be accessible only over an internal packet-switched network, but that
|
||||
requires secured switches, protections against `ARP spoofing`_ and
|
||||
precludes usage of WiFi. Even over secure packet-switched networks,
|
||||
deployment over HTTPS is recommended, and possible costs are lowered as
|
||||
"self-signed" certificates are easier to deploy on a controlled
|
||||
environment than over the internet.
|
||||
|
||||
.. _regular expression: https://docs.python.org/3/library/re.html
|
||||
.. _CSRF: https://en.wikipedia.org/wiki/Cross-site_request_forgery
|
||||
.. _ARP spoofing: https://en.wikipedia.org/wiki/ARP_spoofing
|
||||
.. _Nginx termination example:
|
||||
https://nginx.com/resources/admin-guide/nginx-ssl-termination/
|
||||
.. _Nginx proxying example:
|
||||
https://nginx.com/resources/admin-guide/reverse-proxy/
|
||||
.. _socat: http://www.dest-unreach.org/socat/
|
||||
.. _PostgreSQL connection settings:
|
||||
.. _listen to network interfaces:
|
||||
https://www.postgresql.org/docs/12/static/runtime-config-connection.html
|
||||
.. _use an SSH tunnel:
|
||||
https://www.postgresql.org/docs/12/static/ssh-tunnels.html
|
||||
.. _WSGI: https://wsgi.readthedocs.org/
|
||||
.. _POSBox: https://www.odoo.com/page/point-of-sale-hardware#part_2
|
@ -4,19 +4,22 @@ Email gateway
|
||||
|
||||
The Odoo mail gateway allows you to inject directly all the received emails in Odoo.
|
||||
|
||||
Its principle is straightforward: your SMTP server executes the "mailgate" script for every new incoming email.
|
||||
Its principle is straightforward: your SMTP server executes the "mailgate" script for every new
|
||||
incoming email.
|
||||
|
||||
The script takes care of connecting to your Odoo database through XML-RPC, and send the emails via
|
||||
the `MailThread.message_process()` feature.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
- Administrator access to the Odoo database.
|
||||
- Your own mail server such as Postfix or Exim.
|
||||
- Technical knowledge on how to configure an email server.
|
||||
|
||||
For Postfix
|
||||
-----------
|
||||
|
||||
In you alias config (:file:`/etc/aliases`):
|
||||
|
||||
.. code-block:: text
|
||||
@ -33,6 +36,7 @@ In you alias config (:file:`/etc/aliases`):
|
||||
|
||||
For Exim
|
||||
--------
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
*: |/odoo-directory/addons/mail/static/scripts/odoo-mailgate.py -d <database-name> -u <userid> -p <password>
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
70
content/administration/on_premise/geo_ip.rst
Normal file
@ -0,0 +1,70 @@
|
||||
======
|
||||
Geo IP
|
||||
======
|
||||
|
||||
.. note::
|
||||
This documentation only applies to On-premise databases.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
.. warning::
|
||||
Please note that the installation depends on your computer's operating system and distribution.
|
||||
We will assume that a Linux operating system is being used.
|
||||
|
||||
#. Install `geoip2 <https://pypi.org/project/geoip2/>`__ Python library
|
||||
.. code-block:: bash
|
||||
|
||||
pip install geoip2
|
||||
|
||||
#. Download the `GeoLite2 City database <https://dev.maxmind.com/geoip/geoip2/geolite2/>`_. You
|
||||
should end up with a file called ``GeoLite2-City.mmdb``
|
||||
#. Move the file to the folder ``/usr/share/GeoIP/``
|
||||
.. code-block:: bash
|
||||
|
||||
mv ~/Downloads/GeoLite2-City.mmdb /usr/share/GeoIP/
|
||||
|
||||
#. Restart the server
|
||||
|
||||
.. note::
|
||||
If you can't/don't want to locate the geoip database in ``/usr/share/GeoIP/``, you can use the
|
||||
``--geoip-db`` option of the Odoo command line interface. This option takes the absolute path to
|
||||
the GeoIP database file and uses it as the GeoIP database. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
./odoo-bin --geoip-db= ~/Downloads/GeoLite2-City.mmdb
|
||||
|
||||
.. seealso::
|
||||
- :doc:`CLI documentation </developer/reference/cli>`.
|
||||
|
||||
.. warning::
|
||||
``GeoIP`` Python library can also be used. However this version is discontinued since January
|
||||
1. See `GeoLite Legacy databases are now discontinued
|
||||
<https://support.maxmind.com/geolite-legacy-discontinuation-notice/>`_
|
||||
|
||||
How to test GeoIP geolocation in your Odoo website
|
||||
==================================================
|
||||
|
||||
1. Go to your website. Open the web page that you want to test ``GeoIP``.
|
||||
2. Choose :menuselection:`Customize --> HTML/CSS/JS Editor`.
|
||||
3. Add the following piece of XML in the page :
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<h1 class="text-center" t-esc="request.session.get('geoip')"/>
|
||||
|
||||
You should end up with a dictionary indicating the location of the IP address.
|
||||
|
||||
.. image:: geo_ip/on-premise_geo-ip-installation01.png
|
||||
:align: center
|
||||
|
||||
.. note::
|
||||
If the curly braces are empty ``{}``, it can be for any of the following reasons :
|
||||
|
||||
- The browsing IP address is the localhost (``127.0.0.1``) or a local area network one
|
||||
(``192.168.*.*``)
|
||||
- If a reversed proxy is used, make sure to configure it correctly. See :option:`proxy mode
|
||||
<odoo-bin --proxy-mode>`
|
||||
- ``geoip2`` is not installed or the GeoIP database file wasn't found
|
||||
- The GeoIP database was unable to resolve the given IP address
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
167
content/administration/on_premise/packages.rst
Normal file
@ -0,0 +1,167 @@
|
||||
===================
|
||||
Packaged installers
|
||||
===================
|
||||
|
||||
Odoo provides packaged installers for Debian-based Linux distributions (Debian, Ubuntu, etc.),
|
||||
RPM-based Linux distributions (Fedora, CentOS, RHEL, etc.), and Windows for the Community and
|
||||
Enterprise editions.
|
||||
|
||||
Official **Community** nightly packages with all relevant dependency requirements are available on
|
||||
the `nightly server <https://nightly.odoo.com>`_.
|
||||
|
||||
.. note::
|
||||
Nightly packages may be difficult to keep up to date.
|
||||
|
||||
Official **Community** and **Enterprise** packages can be downloaded from the `Odoo download page
|
||||
<https://www.odoo.com/page/download>`_.
|
||||
|
||||
.. note::
|
||||
It is required to be logged in as a paying on-premise customer or partner to download the
|
||||
Enterprise packages.
|
||||
|
||||
.. _install/packages/linux:
|
||||
|
||||
Linux
|
||||
=====
|
||||
|
||||
Prepare
|
||||
-------
|
||||
|
||||
Odoo needs a `PostgreSQL <https://www.postgresql.org/>`_ server to run properly.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian/Ubuntu
|
||||
|
||||
The default configuration for the Odoo 'deb' package is to use the PostgreSQL server on the
|
||||
same host as the Odoo instance. Execute the following command to install the PostgreSQL
|
||||
server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install postgresql -y
|
||||
|
||||
.. group-tab:: Fedora
|
||||
|
||||
Make sure that the `sudo` command is available and well configured and, only then, execute the
|
||||
following command to install the PostgreSQL server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf install -y postgresql-server
|
||||
$ sudo postgresql-setup --initdb --unit postgresql
|
||||
$ sudo systemctl enable postgresql
|
||||
$ sudo systemctl start postgresql
|
||||
|
||||
.. warning::
|
||||
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
|
||||
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
|
||||
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
|
||||
for more details on the various versions.
|
||||
|
||||
Repository
|
||||
----------
|
||||
|
||||
Odoo S.A. provides a repository that can be used to install the **Community** edition by executing
|
||||
the following commands:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian/Ubuntu
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
|
||||
$ echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/{CURRENT_MAJOR_BRANCH}/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
|
||||
$ sudo apt-get update && sudo apt-get install odoo
|
||||
|
||||
Use the usual `apt-get upgrade` command to keep the installation up-to-date.
|
||||
|
||||
.. group-tab:: Fedora
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf config-manager --add-repo=https://nightly.odoo.com/{CURRENT_MAJOR_BRANCH}/nightly/rpm/odoo.repo
|
||||
$ sudo dnf install -y odoo
|
||||
$ sudo systemctl enable odoo
|
||||
$ sudo systemctl start odoo
|
||||
|
||||
.. note::
|
||||
Currently, there is no nightly repository for the Enterprise edition.
|
||||
|
||||
Distribution package
|
||||
--------------------
|
||||
|
||||
Instead of using the repository, packages for both the **Community** and **Enterprise** editions can
|
||||
be downloaded from the `Odoo download page <https://www.odoo.com/page/download>`_.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Debian/Ubuntu
|
||||
|
||||
.. note::
|
||||
Odoo {CURRENT_MAJOR_VERSION} 'deb' package currently supports `Debian Buster
|
||||
<https://www.debian.org/releases/buster/>`_ and `Ubuntu 18.04
|
||||
<https://releases.ubuntu.com/18.04>`_ or above.
|
||||
|
||||
Once downloaded, execute the following commands **as root** to install Odoo as a service,
|
||||
create the necessary PostgreSQL user, and automatically start the server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# dpkg -i <path_to_installation_package> # this probably fails with missing dependencies
|
||||
# apt-get install -f # should install the missing dependencies
|
||||
# dpkg -i <path_to_installation_package>
|
||||
|
||||
.. warning::
|
||||
- The `python3-xlwt` Debian package, needed to export into the XLS format, does not exist
|
||||
in Debian Buster nor Ubuntu 18.04. If needed, install it manually with the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo pip3 install xlwt
|
||||
|
||||
- The `num2words` Python package - needed to render textual amounts - does not exist in
|
||||
Debian Buster nor Ubuntu 18.04, which could cause problems with the `l10n_mx_edi` module.
|
||||
If needed, install it manually with the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo pip3 install num2words
|
||||
|
||||
.. group-tab:: Fedora
|
||||
|
||||
.. note::
|
||||
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 36.
|
||||
|
||||
Once downloaded, the package can be installed using the 'dnf' package manager:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf localinstall odoo_{CURRENT_MAJOR_BRANCH}.latest.noarch.rpm
|
||||
$ sudo systemctl enable odoo
|
||||
$ sudo systemctl start odoo
|
||||
|
||||
.. _install/packages/windows:
|
||||
|
||||
Windows
|
||||
=======
|
||||
|
||||
.. warning::
|
||||
Windows packaging is offered for the convenience of testing or running single-user local
|
||||
instances but production deployment is discouraged due to a number of limitations and risks
|
||||
associated with deploying Odoo on a Windows platform.
|
||||
|
||||
#. Download the installer from the `nightly server <https://nightly.odoo.com>`_ (Community only) or
|
||||
the Windows installer from the `Odoo download page <https://www.odoo.com/page/download>`_ (any
|
||||
edition.
|
||||
#. Execute the downloaded file.
|
||||
|
||||
.. warning::
|
||||
On Windows 8 and later, a warning titled *Windows protected your PC* may be displayed. Click
|
||||
**More Info** and then **Run anyway** to proceed.
|
||||
|
||||
#. Accept the `UAC <https://en.wikipedia.org/wiki/User_Account_Control>`_ prompt.
|
||||
#. Go through the installation steps.
|
||||
|
||||
Odoo launches automatically at the end of the installation.
|
488
content/administration/on_premise/source.rst
Normal file
@ -0,0 +1,488 @@
|
||||
==============
|
||||
Source install
|
||||
==============
|
||||
|
||||
The source 'installation' is not about installing Odoo but running it directly from the source
|
||||
instead.
|
||||
|
||||
Using the Odoo source can be more convenient for module developers as it is more easily accessible
|
||||
than using packaged installers.
|
||||
|
||||
It makes starting and stopping Odoo more flexible and explicit than the services set up by the
|
||||
packaged installers. Also, it allows overriding settings using :ref:`command-line parameters
|
||||
<reference/cmdline>` without needing to edit a configuration file.
|
||||
|
||||
Finally, it provides greater control over the system's setup and allows to more easily keep (and
|
||||
run) multiple versions of Odoo side-by-side.
|
||||
|
||||
Fetch the sources
|
||||
-----------------
|
||||
|
||||
There are two ways to obtain the source code of Odoo: as a ZIP **archive** or through **Git**.
|
||||
|
||||
Archive
|
||||
~~~~~~~
|
||||
|
||||
Community edition:
|
||||
|
||||
- `Odoo download page <https://www.odoo.com/page/download>`_
|
||||
- `GitHub Community repository <https://github.com/odoo/odoo>`_
|
||||
- `Nightly server <https://nightly.odoo.com>`_
|
||||
|
||||
Enterprise edition:
|
||||
|
||||
- `Odoo download page <https://www.odoo.com/page/download>`_
|
||||
- `GitHub Enterprise repository <https://github.com/odoo/enterprise>`_
|
||||
|
||||
.. _install/source/git:
|
||||
|
||||
Git
|
||||
~~~
|
||||
|
||||
.. note::
|
||||
It is required to have `Git <https://git-scm.com/>`_ installed, and it is recommended to have a
|
||||
basic knowledge of Git commands to proceed.
|
||||
|
||||
To clone a Git repository, choose between cloning with HTTPS or SSH. In most cases, the best option
|
||||
is HTTPS. However, choose SSH to contribute to Odoo source code or when following the :doc:`Getting
|
||||
Started developer tutorial </developer/tutorials/getting_started>`.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Clone with HTTPS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/odoo/odoo.git
|
||||
$ git clone https://github.com/odoo/enterprise.git
|
||||
|
||||
.. tab:: Clone with SSH
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone git@github.com:odoo/odoo.git
|
||||
$ git clone git@github.com:odoo/enterprise.git
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Clone with HTTPS
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> git clone https://github.com/odoo/odoo.git
|
||||
C:\> git clone https://github.com/odoo/enterprise.git
|
||||
|
||||
.. tab:: Clone with SSH
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> git clone git@github.com:odoo/odoo.git
|
||||
C:\> git clone git@github.com:odoo/enterprise.git
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Clone with HTTPS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/odoo/odoo.git
|
||||
$ git clone https://github.com/odoo/enterprise.git
|
||||
|
||||
.. tab:: Clone with SSH
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone git@github.com:odoo/odoo.git
|
||||
$ git clone git@github.com:odoo/enterprise.git
|
||||
|
||||
.. note::
|
||||
**The Enterprise git repository does not contain the full Odoo source code**. It is only a
|
||||
collection of extra add-ons. The main server code is in the Community edition. Running the
|
||||
Enterprise version means running the server from the Community version with the `addons-path`
|
||||
option set to the folder with the Enterprise edition. It is required to clone both the Community
|
||||
and Enterprise repositories to have a working Odoo Enterprise installation.
|
||||
|
||||
.. _install/source/prepare:
|
||||
|
||||
Prepare
|
||||
-------
|
||||
|
||||
Python
|
||||
~~~~~~
|
||||
|
||||
Odoo requires **Python 3.7** or later to run.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
Use a package manager to download and install Python 3 if needed.
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
`Download the latest version of Python 3 <https://www.python.org/downloads/windows/>`_ and
|
||||
install it.
|
||||
|
||||
During installation, check **Add Python 3 to PATH**, then click **Customize Installation** and
|
||||
make sure that **pip** is checked.
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
Use a package manager (`Homebrew <https://brew.sh/>`_, `MacPorts <https://www.macports.org>`_)
|
||||
to download and install Python 3 if needed.
|
||||
|
||||
.. note::
|
||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
||||
versions are not compatible with Odoo.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 --version
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> python --version
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python3 --version
|
||||
|
||||
Verify that `pip <https://pip.pypa.io>`_ is also installed for this version.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip3 --version
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> pip --version
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip3 --version
|
||||
|
||||
PostgreSQL
|
||||
~~~~~~~~~~
|
||||
|
||||
Odoo uses PostgreSQL as its database management system.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
Use a package manager to download and install PostgreSQL (supported versions: 12.0 or above).
|
||||
It can be achieved by executing the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install postgresql postgresql-client
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
`Download PostgreSQL <https://www.postgresql.org/download/windows>`_ (supported versions: 12.0
|
||||
or above) and install it.
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
Use `Postgres.app <https://postgresapp.com>`_ to download and install PostgreSQL (supported
|
||||
version: 12.0 or above).
|
||||
|
||||
.. tip::
|
||||
To make the command line tools bundled with Postgres.app available, make sure to set up the
|
||||
`$PATH` variable by following the `Postgres.app CLI tools instructions
|
||||
<https://postgresapp.com/documentation/cli-tools.html>`_.
|
||||
|
||||
By default, the only user is `postgres`. As Odoo forbids connecting as `postgres`, create a new
|
||||
PostgreSQL user.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo -u postgres createuser -d -R -S $USER
|
||||
$ createdb $USER
|
||||
|
||||
.. note::
|
||||
Because the PostgreSQL user has the same name as the Unix login, it is possible to connect
|
||||
to the database without a password.
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
#. Add PostgreSQL's `bin` directory (by default:
|
||||
:file:`C:\\Program Files\\PostgreSQL\\<version>\\bin`) to the `PATH`.
|
||||
#. Create a postgres user with a password using the pg admin gui:
|
||||
|
||||
#. Open **pgAdmin**.
|
||||
#. Double-click the server to create a connection.
|
||||
#. Select :menuselection:`Object --> Create --> Login/Group Role`.
|
||||
#. Enter the username in the **Role Name** field (e.g., `odoo`).
|
||||
#. Open the **Definition** tab, enter a password (e.g., `odoo`), and click **Save**.
|
||||
#. Open the **Privileges** tab and switch **Can login?** to `Yes` and **Create database?**
|
||||
to `Yes`.
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo -u postgres createuser -d -R -S $USER
|
||||
$ createdb $USER
|
||||
|
||||
.. note::
|
||||
Because the PostgreSQL user has the same name as the Unix login, it is possible to connect
|
||||
to the database without a password.
|
||||
|
||||
.. _install/dependencies:
|
||||
|
||||
Dependencies
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
Using **distribution packages** is the preferred way of installing dependencies.
|
||||
Alternatively, install the Python dependencies with **pip**.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Debian/Ubuntu
|
||||
|
||||
On Debian/Ubuntu, the following commands should install the required packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd odoo #CommunityPath
|
||||
$ sudo ./setup/debinstall.sh
|
||||
|
||||
The `setup/debinstall.sh` script will parse the `debian/control
|
||||
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
|
||||
|
||||
.. tab:: Install with pip
|
||||
|
||||
.. warning::
|
||||
|
||||
Using pip may lead to security issues and broken dependencies; only do this if you
|
||||
know what you are doing.
|
||||
|
||||
As some of the Python packages need a compilation step, they require system libraries to
|
||||
be installed.
|
||||
|
||||
On Debian/Ubuntu, the following command should install these required libraries:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install python3-pip libldap2-dev libpq-dev libsasl2-dev
|
||||
|
||||
Odoo dependencies are listed in the :file:`requirements.txt` file located at the root of
|
||||
the Odoo Community directory.
|
||||
|
||||
.. note::
|
||||
The Python packages in :file:`requirements.txt` are based on their stable/LTS
|
||||
Debian/Ubuntu corresponding version at the moment of the Odoo release. For example,
|
||||
for Odoo 15.0, the `python3-babel` package version is 2.8.0 in Debian Bullseye and
|
||||
2.6.0 in Ubuntu Focal. The lowest version is then chosen in the
|
||||
:file:`requirements.txt`.
|
||||
|
||||
.. tip::
|
||||
It can be preferable not to mix Python module packages between different instances of
|
||||
Odoo or with the system. However, it is possible to use `virtualenv
|
||||
<https://pypi.org/project/virtualenv/>`_ to create isolated Python environments.
|
||||
|
||||
Navigate to the path of the Odoo Community installation (:file:`CommunityPath`) and run
|
||||
**pip** on the requirements file to install the requirements for the current user.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ pip install -r requirements.txt
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
Before installing the dependencies, download and install the `Build Tools for Visual
|
||||
Studio <https://visualstudio.microsoft.com/downloads/>`_. Select **C++ build tools** in the
|
||||
**Workloads** tab and install them when prompted.
|
||||
|
||||
Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo
|
||||
Community directory.
|
||||
|
||||
.. tip::
|
||||
It can be preferable not to mix Python module packages between different instances of
|
||||
Odoo or with the system. However, it is possible to use `virtualenv
|
||||
<https://pypi.org/project/virtualenv/>`_ to create isolated Python environments.
|
||||
|
||||
Navigate to the path of the Odoo Community installation (`CommunityPath`) and run **pip** on
|
||||
the requirements file in a terminal **with Administrator privileges**:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> cd \CommunityPath
|
||||
C:\> pip install setuptools wheel
|
||||
C:\> pip install -r requirements.txt
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo
|
||||
Community directory.
|
||||
|
||||
.. tip::
|
||||
It can be preferable not to mix Python module packages between different instances of
|
||||
Odoo or with the system. However, it is possible to use `virtualenv
|
||||
<https://pypi.org/project/virtualenv/>`_ to create isolated Python environments.
|
||||
|
||||
Navigate to the path of the Odoo Community installation (`CommunityPath`) and run **pip** on
|
||||
the requirements file:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ pip3 install setuptools wheel
|
||||
$ pip3 install -r requirements.txt
|
||||
|
||||
.. warning::
|
||||
Non-Python dependencies must be installed with a package manager (`Homebrew
|
||||
<https://brew.sh/>`_, `MacPorts <https://www.macports.org>`_).
|
||||
|
||||
#. Download and install the **Command Line Tools**:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ xcode-select --install
|
||||
|
||||
#. Use the package manager to install non-Python dependencies.
|
||||
|
||||
.. note::
|
||||
For languages using a **right-to-left interface** (such as Arabic or Hebrew), the `rtlcss`
|
||||
package is required.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
#. Download and install **nodejs** and **npm** with a package manager.
|
||||
#. Install `rtlcss`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo npm install -g rtlcss
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
#. Download and install `nodejs <https://nodejs.org/en/download>`_.
|
||||
#. Install `rtlcss`:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> npm install -g rtlcss
|
||||
|
||||
#. Edit the system environment's variable `PATH` to add the folder where `rtlcss.cmd` is
|
||||
located (typically: :file:`C:\\Users\\<user>\\AppData\\Roaming\\npm\\`).
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
#. Download and install **nodejs** with a package manager (`Homebrew <https://brew.sh/>`_,
|
||||
`MacPorts <https://www.macports.org>`_).
|
||||
#. Install `rtlcss`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo npm install -g rtlcss
|
||||
|
||||
.. warning::
|
||||
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
|
||||
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
|
||||
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
|
||||
for more details on the various versions.
|
||||
|
||||
.. _install/source/running_odoo:
|
||||
|
||||
Running Odoo
|
||||
------------
|
||||
|
||||
Once all dependencies are set up, Odoo can be launched by running `odoo-bin`, the command-line
|
||||
interface of the server. It is located at the root of the Odoo Community directory.
|
||||
|
||||
To configure the server, either specify :ref:`command-line arguments <reference/cmdline/server>` or
|
||||
a :ref:`configuration file <reference/cmdline/config>`.
|
||||
|
||||
.. tip::
|
||||
For the Enterprise edition, add the path to the `enterprise` add-ons to the `addons-path`
|
||||
argument. Note that it must come before the other paths in `addons-path` for add-ons to be loaded
|
||||
correctly.
|
||||
|
||||
Common necessary configurations are:
|
||||
|
||||
- PostgreSQL user and password.
|
||||
- Custom addon paths beyond the defaults to load custom modules.
|
||||
|
||||
A typical way to run the server would be:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Linux
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ python3 odoo-bin --addons-path=addons -d mydb
|
||||
|
||||
Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name
|
||||
of the PostgreSQL database.
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> cd CommunityPath/
|
||||
C:\> python odoo-bin -r dbuser -w dbpassword --addons-path=addons -d mydb
|
||||
|
||||
Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the
|
||||
PostgreSQL login, `dbpassword` is the PostgreSQL password, and `mydb` is the name of the
|
||||
PostgreSQL database.
|
||||
|
||||
.. group-tab:: Mac OS
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ python3 odoo-bin --addons-path=addons -d mydb
|
||||
|
||||
Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name
|
||||
of the PostgreSQL database.
|
||||
|
||||
After the server has started (the INFO log `odoo.modules.loading: Modules loaded.` is printed), open
|
||||
http://localhost:8069 in a web browser and log into the Odoo database with the base administrator
|
||||
account: use `admin` as the email and, again, `admin` as the password.
|
||||
|
||||
.. tip::
|
||||
- From there, create and manage new :doc:`users <../../applications/general/users>`.
|
||||
- The user account used to log into Odoo's web interface differs from the :option:`--db_user
|
||||
<odoo-bin -r>` CLI argument.
|
||||
|
||||
.. seealso::
|
||||
:doc:`The list of CLI arguments for odoo-bin </developer/reference/cli>`
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@ -46,7 +46,7 @@ Updating Odoo is accomplished by simply reinstalling the latest version of your
|
||||
Edition on top of your current installation. This will preserve your data without any alteration,
|
||||
as long as you do not uninstall PostgreSQL (the database engine that comes with Odoo).
|
||||
|
||||
The main reference for updating is logically our :ref:`installation guide <setup/install>`,
|
||||
The main reference for updating is logically our :doc:`installation guide <../on_premise>`,
|
||||
which explains the common installation methods.
|
||||
|
||||
Updating is also most appropriately accomplished by the person who deployed Odoo initially,
|
||||
@ -104,12 +104,13 @@ and you're all set.
|
||||
|
||||
Source Install (Tarball)
|
||||
------------------------
|
||||
|
||||
If you have originally installed Odoo with the "tarball" version (source code archive), you have
|
||||
to replace the installation directory with a newer version. First download the latest tarball
|
||||
from Odoo.com. They are updated daily and include the latest security fixes (see step #1)
|
||||
After downloading the package, extract it to a temporary location on your server.
|
||||
|
||||
You will get a folder labelled with the version of the source code, for example "odoo-13.0+e.20190719",
|
||||
You will get a folder labeled with the version of the source code, for example "odoo-13.0+e.20190719",
|
||||
that contains a folder "odoo.egg-info" and the actual source code folder named "odoo" (for Odoo 10
|
||||
and later) or "openerp" for older versions.
|
||||
You can ignore the odoo.egg-info folder. Locate the folder where your current installation is deployed,
|
||||
@ -123,6 +124,7 @@ Finally, restart the Odoo service or reboot the machine, and you are all set.
|
||||
|
||||
Source Install (Github)
|
||||
-----------------------
|
||||
|
||||
If you have originally installed Odoo with a full Github clone of the official repositories, the
|
||||
update procedure requires you to pull the latest source code via git.
|
||||
Change into the directory for each repository (the main Odoo repository, and the Enterprise
|
101
content/administration/supported_versions.rst
Normal file
@ -0,0 +1,101 @@
|
||||
:hide-page-toc:
|
||||
|
||||
.. _supported_versions:
|
||||
|
||||
==================
|
||||
Supported versions
|
||||
==================
|
||||
|
||||
Odoo provides support and bug fixing **for the 3 last major versions** of Odoo.
|
||||
|
||||
.. note::
|
||||
Odoo releases intermediary versions called **Online versions** on the :doc:`Odoo Online
|
||||
<odoo_online>` hosting every two months. Odoo Online users can then benefit from the latest
|
||||
features of Odoo.
|
||||
|
||||
- Admins of Odoo Online databases are invited to :doc:`upgrade <upgrade>` them regularly.
|
||||
- Online versions are *not* released for Odoo.sh and On-Premise installations.
|
||||
- Online versions are listed below as *SaaS*.
|
||||
|
||||
This matrix shows the support status of every version.
|
||||
|
||||
**Major releases are in bold type.**
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* -
|
||||
- Odoo Online
|
||||
- Odoo.sh
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - **Odoo 18.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2024
|
||||
- October 2027 (planned)
|
||||
* - Odoo SaaS 17.4
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- July 2024
|
||||
-
|
||||
* - Odoo SaaS 17.2
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- April 2024
|
||||
-
|
||||
* - **Odoo 17.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- November 2023
|
||||
- October 2026 (planned)
|
||||
* - **Odoo 16.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2022
|
||||
- October 2025 (planned)
|
||||
* - **Odoo 15.0**
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- October 2021
|
||||
- October 2024
|
||||
* - **Odoo 14.0**
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- October 2020
|
||||
- November 2023
|
||||
* - Older versions
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- Before 2020
|
||||
- Before 2023
|
||||
|
||||
.. admonition:: Legend
|
||||
|
||||
|green| Supported version
|
||||
|
||||
|red| End-of-support
|
||||
|
||||
N/A Never released for this platform
|
||||
|
||||
.. important::
|
||||
Even though we don't support older versions, you can always `upgrade from any version
|
||||
<https://upgrade.odoo.com/>`_.
|
||||
|
||||
.. |green| raw:: html
|
||||
|
||||
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
.. |red| raw:: html
|
||||
|
||||
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
@ -1,257 +1,439 @@
|
||||
:show-content:
|
||||
|
||||
.. |assistance-contact| replace::
|
||||
If you need Odoo assistance on this matter, please get in touch with your Odoo Account Manager or
|
||||
our `Sales department`_.
|
||||
.. _Sales department: mailto:sales@odoo.com
|
||||
|
||||
=======
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
An upgrade involves moving a database from an older version to a newer supported version (e.g., from
|
||||
Odoo 16.0 to Odoo 18.0). Regular upgrades are crucial as each version offers new features, bug
|
||||
fixes, and security patches. Using a :doc:`supported version <supported_versions>` is strongly
|
||||
recommended. Each major version is supported for three years.
|
||||
|
||||
upgrade/online_hosting
|
||||
upgrade/odoo_sh
|
||||
upgrade/on_premise
|
||||
upgrade/faq
|
||||
Depending on the hosting type and Odoo version used, a database upgrade can be **mandatory**.
|
||||
|
||||
An upgrade is switching to a newer version of Odoo (e.g., Odoo 14.0 to Odoo 15.0).
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
- If a database is on a **major version** (e.g., 16.0, 17.0, 18.0), an upgrade is mandatory
|
||||
every two years.
|
||||
- If a database is on a **minor version** (e.g., 17.1, 17.2, 17.4), an upgrade is mandatory
|
||||
a few weeks after the next version is released. Minor versions are usually released every
|
||||
two months.
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
After the initial three years of support, you will have another two years to complete the
|
||||
upgrade. You will be notified when an upgrade is required.
|
||||
|
||||
.. image:: upgrade/odoo-sh-message.png
|
||||
:alt: The "unsupported version" popup on Odoo.sh.
|
||||
|
||||
.. group-tab:: On-premise
|
||||
|
||||
You can stay on the same version indefinitely, even if it is not recommended. Note that the
|
||||
smaller the version gap, the easier the upgrade should be.
|
||||
|
||||
.. spoiler:: Automatic upgrades: Odoo Online's Rolling Release process
|
||||
|
||||
You will receive a notification in your database a few weeks before a mandatory upgrade will be
|
||||
automatically carried out. You are in control of the process as long as the deadline is not
|
||||
reached.
|
||||
|
||||
.. image:: upgrade/rr-upgrade-message.png
|
||||
:alt: The upgrade message prompt on the top right of the database
|
||||
|
||||
Concretely, Odoo’s Upgrade Team performs a silent test upgrade of every database that should be
|
||||
upgraded. If the test is successful and lasts less than 20 minutes, you can directly trigger the
|
||||
upgrade from the database. If the test fails, you can test an upgrade using the `database manager
|
||||
<https://www.odoo.com/my/databases>`_.
|
||||
|
||||
When you are invited to upgrade, it is strongly recommended to :ref:`request an upgraded test
|
||||
database <upgrade-request-test>` first and spend time :ref:`testing <upgrade-testing>` it.
|
||||
|
||||
An automatic upgrade to the next version will be triggered if no action is taken before the
|
||||
specified due date.
|
||||
|
||||
An upgrade does not cover:
|
||||
|
||||
* Changing :ref:`editions <upgrade-faq/editions-change>` (i.e., Community to Enterprise edition)
|
||||
* Switching :ref:`hosting type <upgrade-faq/hosting-types-switch>` (i.e., On-Premise to Online or
|
||||
Odoo.sh)
|
||||
* Migration from another ERP to Odoo
|
||||
- Downgrading to a previous version of Odoo
|
||||
- :doc:`Switching editions <on_premise/community_to_enterprise>` (e.g., from Community to
|
||||
Enterprise)
|
||||
- :ref:`Changing hosting type <hosting/change-solution>` (e.g., from on-premise to Odoo Online)
|
||||
- Migrating from another ERP to Odoo
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
.. warning::
|
||||
If your database contains custom modules, it cannot be upgraded until a version of your custom
|
||||
modules is available for the target version of Odoo. For customers maintaining their own custom
|
||||
modules, we recommend to parallelize the process by :ref:`requesting an upgraded database
|
||||
<upgrade-request-test>` while also :doc:`upgrading the source code of your custom
|
||||
modules </developer/howtos/upgrade_custom_db>`.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`upgrade/sla`
|
||||
.. _upgrade-nutshell:
|
||||
|
||||
.. _upgrade/process-workflow:
|
||||
|
||||
Process workflow
|
||||
================
|
||||
|
||||
The upgrade process in a nutshell:
|
||||
|
||||
#. You create a test upgrade request.
|
||||
#. Odoo processes the request automatically by running the database through an upgrade script, which
|
||||
takes between 20 and 120 minutes.
|
||||
#. Odoo delivers a test database.
|
||||
#. You test your database for possible discrepancies (see :ref:`upgrade/test-guidance`).
|
||||
#. If there are any discrepancies, you report them to the Upgrade support team via the help portal
|
||||
(see :ref:`upgrade/test-assistance`).
|
||||
#. We fix the issues and send you a new test database.
|
||||
#. Once you have completed the testing and are happy with the result, you decide on a date and time
|
||||
when you stop users from accessing Odoo, freeze all data entries, and create an upgrade request
|
||||
for the production upgrade.
|
||||
#. Odoo delivers the production database through the automated process.
|
||||
#. You restore it in your Production environment a few short hours later and continue working on the
|
||||
newly upgraded database (this is done automatically on Odoo Online).
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Upgrade process for Odoo Online (SaaS) <upgrade/online_hosting>`
|
||||
- :doc:`Upgrade process for Odoo.sh <upgrade/odoo_sh>`
|
||||
- :doc:`Upgrade process for On-Premise <upgrade/on_premise>`
|
||||
|
||||
.. _upgrade/testing-phase:
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
This phase allows you to review an upgraded version of your database without affecting your
|
||||
production database in any way. We suggest that you run the test upgrade process at least once, but
|
||||
you can do it as many times as you need (one at a time).
|
||||
|
||||
Once you receive your upgraded test database, check that all data, processes, and functionality are
|
||||
still correct and working as expected.
|
||||
|
||||
If you do find discrepancies, :ref:`report your issues <upgrade/test-assistance>` and :ref:`request
|
||||
a new test database <upgrade/test-db-request>` when the reported issues are fixed in the upgrade
|
||||
script.
|
||||
|
||||
If you do not find any discrepancies, you can move on to the upgrade of your production database.
|
||||
|
||||
.. important::
|
||||
A test database is only intended for testing and remains completely unrelated to your present or
|
||||
future production database. Any data you add, or changes you make, will not be reflected in your
|
||||
upgraded production database.
|
||||
|
||||
.. note::
|
||||
Test databases are neutered and features are disabled to prevent them from having an impact on
|
||||
the production database:
|
||||
|
||||
#. The serial number of the database is modified (to prevent it from sending information as if it
|
||||
was the production database).
|
||||
#. The :ref:`base URL of the database <domain-name/web-base-url>` is reset to
|
||||
``http://localhost:8069`` and the email domain to ``localhost``.
|
||||
#. Scheduled actions are disabled (the calendar synchronization, the bank statement
|
||||
synchronization, the planned automated actions, the fetching of incoming mail servers, etc.).
|
||||
#. Outgoing mail servers are disabled by archiving the existing ones and adding a
|
||||
fake/non-working one.
|
||||
#. Payment providers and delivery carriers are reset to test environment.
|
||||
#. Accounting localization Electronic Data Interchange (EDI) services are disabled.
|
||||
#. A system parameter is set to tell the database has been neutered.
|
||||
|
||||
.. _upgrade/test-db-request:
|
||||
|
||||
Request a test database
|
||||
Upgrading in a nutshell
|
||||
=======================
|
||||
|
||||
Follow the instructions available per hosting type on the `website form
|
||||
<https://upgrade.odoo.com>`_ and select *Testing* purpose.
|
||||
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
|
||||
<upgrade-request-test>`).
|
||||
#. If applicable, upgrade the source code of your custom module to be compatible with the new
|
||||
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
|
||||
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
|
||||
<upgrade-testing>`).
|
||||
#. Report any issue encountered during the testing to Odoo by going to the `Support page and
|
||||
selecting "An issue related to my future upgrade (I am testing an upgrade)"
|
||||
<https://www.odoo.com/help?stage=migration>`_.
|
||||
#. Once all issues are resolved and you are confident that the upgraded database can be used as
|
||||
your main database without any issues, plan the upgrade of your production database.
|
||||
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
|
||||
to complete the process (see :ref:`upgrading the production database <upgrade-production>`).
|
||||
#. Report any issue encountered during the upgrade to Odoo by going to the `Support page and
|
||||
selecting "An issue related to my upgrade (production)"
|
||||
<https://www.odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. image:: upgrade/test-purpose.png
|
||||
:align: center
|
||||
:alt: Selection of the "Testing" purpose in the upgrade form on Odoo
|
||||
.. _upgrade-request-test:
|
||||
|
||||
.. _upgrade/test-guidance:
|
||||
Obtaining an upgraded test database
|
||||
===================================
|
||||
|
||||
Test guidance
|
||||
=============
|
||||
|
||||
Every business and organization has its own operational needs and has to test its specific Odoo
|
||||
database individually. We recommend you look at `the test scenario
|
||||
<https://docs.google.com/document/d/1ypNs7JKPOsjNbKpdiKFH7Al6g6whZ9jr7f7duAQ5E1w/>`_ for further
|
||||
information.
|
||||
|
||||
.. todo:: change link "test scenario" once the related doc is published
|
||||
|
||||
.. _upgrade/test-assistance:
|
||||
|
||||
Assistance
|
||||
----------
|
||||
|
||||
If you encounter an issue in the **test database**, please get in touch with Odoo Upgrade Support
|
||||
via the `Odoo Support page <https://www.odoo.com/help>`_.
|
||||
|
||||
Under the *Ticket Description* section, select *An issue related to my upgrade* ticket type.
|
||||
|
||||
.. image:: upgrade/test-assistance.png
|
||||
:align: center
|
||||
:alt: Selection of "An issue related to my upgrade" as Ticket Type in the support form on Odoo
|
||||
|
||||
.. warning::
|
||||
If you choose another *Ticket Description* type, the request will be redirected to another
|
||||
team. This will slow down the processing and response time.
|
||||
|
||||
Please provide as much detail as you can (i.e., videos and screenshots to illustrate your issue).
|
||||
This will avoid clarifying questions and speed up the resolution process significantly.
|
||||
The `Upgrade page <https://upgrade.odoo.com>`_ is the main platform for requesting an upgraded
|
||||
database. However, depending on the hosting type, you can upgrade from the command line
|
||||
(on-premise), the Odoo Online `database manager <https://www.odoo.com/my/databases>`_, or your
|
||||
`Odoo.sh project <https://www.odoo.sh/project>`_.
|
||||
|
||||
.. note::
|
||||
* The purpose of the test phase is not to correct existing data or configurations in your
|
||||
The Upgrade platform follows the same `Privacy Policy <https://www.odoo.com/privacy>`_ as the
|
||||
other Odoo.com services. Visit the `General Data Protection Regulation page
|
||||
<https://www.odoo.com/gdpr>`_ to learn more about how Odoo handles your data and privacy.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
Odoo Online databases can be manually upgraded via the `database manager
|
||||
<https://www.odoo.com/my/databases>`_.
|
||||
|
||||
The database manager displays all databases associated with the user's account. Databases
|
||||
not on the most recent version of Odoo display an arrow in a circle icon next to their name,
|
||||
indicating that they can be upgraded.
|
||||
|
||||
.. image:: upgrade/databases-page.png
|
||||
:alt: The database manager with an upgrade button next to the name of a database.
|
||||
|
||||
Click the **arrow in a circle** icon to start the upgrade process. In the popup, fill in:
|
||||
|
||||
- The **version** of Odoo you want to upgrade to, usually the latest version
|
||||
- The **email** address that should receive the link to the upgraded database
|
||||
- The :guilabel:`Purpose` of the upgrade, which is automatically set to :guilabel:`Test` for
|
||||
your first upgrade request
|
||||
|
||||
.. image:: upgrade/upgrade-popup.png
|
||||
:alt: The "Upgrade your database" popup.
|
||||
|
||||
The :guilabel:`Upgrade in progress` tag is displayed next to the database name until
|
||||
completion. Once the process succeeds, an email containing a link to the upgraded test
|
||||
database is sent to the address provided. The database can also be accessed from the database
|
||||
manager by clicking the dropdown arrow before the database name.
|
||||
|
||||
.. image:: upgrade/access-upgraded-db.png
|
||||
:alt: Clicking the menu arrow displays the upgraded test database.
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
Odoo.sh is integrated with the upgrade platform to simplify the upgrade process.
|
||||
|
||||
.. image:: upgrade/odoo-sh-staging.png
|
||||
:alt: Odoo.sh project and tabs
|
||||
|
||||
The **latest production daily automatic backup** is then sent to the Upgrade platform.
|
||||
|
||||
Once the upgrade platform is done upgrading the backup and uploading it on the branch, it is
|
||||
put in a **special mode**: each time a **commit is pushed** on the branch, a **restore
|
||||
operation** of the upgraded backup and an **update of all the custom modules** occur. This
|
||||
allows you to test your custom modules on a pristine copy of the upgraded database. The log
|
||||
file of the upgrade process can be found in your newly upgraded staging build by going to
|
||||
:file:`~/logs/upgrade.log`.
|
||||
|
||||
.. important::
|
||||
In databases where custom modules are installed, their source code must be up-to-date with
|
||||
the target version of Odoo before the upgrade can be performed. If there are none, the
|
||||
"update on commit" mode is skipped, the upgraded database is built as soon as it is
|
||||
transferred from the upgrade platform, and the upgrade mode is exited.
|
||||
|
||||
Check out the :doc:`/developer/howtos/upgrade_custom_db` page for more information.
|
||||
|
||||
.. group-tab:: On-premise
|
||||
|
||||
The standard upgrade process can be initiated by entering the following command line on the
|
||||
machine where the database is hosted:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t <target version>
|
||||
|
||||
.. note::
|
||||
This command has some requirements on the environment it runs in:
|
||||
|
||||
- Some external commands that must be provided by the operating system, normally found in
|
||||
any Linux distribution (including WSL). An error will be displayed if one or several of
|
||||
them are missing.
|
||||
- The system user that executes the command needs to be configured with access to the
|
||||
database. Please refer to the PostgreSQL documentation of the `client environment
|
||||
<https://www.postgresql.org/docs/current/libpq-envars.html>`_ or the `client password
|
||||
file <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_ for this requirement.
|
||||
- The script needs to be able to reach one or multiple servers of the upgrade platform
|
||||
both on TCP port 443 and to any random TCP port in the range between 32768 and 60999.
|
||||
This can be in conflict with your restrictive firewall and may need an exception added
|
||||
to the firewall configuration.
|
||||
|
||||
The following command can be used to display the general help and the main commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python <(curl -s https://upgrade.odoo.com/upgrade) --help
|
||||
|
||||
An upgraded test database can also be requested via the `Upgrade page
|
||||
<https://upgrade.odoo.com>`_.
|
||||
|
||||
.. important::
|
||||
In databases where custom modules are installed, their source code must be up-to-date with
|
||||
the target version of Odoo before the upgrade can be performed. Check out the
|
||||
:doc:`/developer/howtos/upgrade_custom_db` page for more information.
|
||||
|
||||
.. note::
|
||||
- For security reasons, only the person who submitted the upgrade request can download it.
|
||||
- For storage reasons, the database's copy is submitted without a filestore to the upgrade
|
||||
server. Therefore, the upgraded database does not contain the production filestore.
|
||||
- Before restoring the upgraded database, its filestore must be merged with the production
|
||||
filestore to be able to perform tests in the same conditions as it would be in the new
|
||||
version.
|
||||
- The upgraded database contains:
|
||||
|
||||
- A `dump.sql` file containing the upgraded database
|
||||
- A `filestore` folder containing files extracted from in-database records into
|
||||
attachments (if there are any) and new standard Odoo files from the targeted Odoo
|
||||
version (e.g., new images, icons, payment provider's logos, etc.).
|
||||
This is the folder that should be merged with the production filestore
|
||||
in order to get the full upgraded filestore.
|
||||
|
||||
.. note::
|
||||
You can request multiple test databases if you wish to test an upgrade more than once.
|
||||
|
||||
.. note::
|
||||
When an upgrade request is completed, an upgrade report is attached to the successful upgrade
|
||||
email, and it becomes available in the Discuss app for users who are part of the "Administration
|
||||
/ Settings" group. This report provides important information about the changes introduced by
|
||||
the new version.
|
||||
|
||||
.. _upgrade-testing:
|
||||
|
||||
Testing the new version of the database
|
||||
=======================================
|
||||
|
||||
It is essential to test the upgraded test database to ensure that you are not stuck in your
|
||||
day-to-day activities by a change in views, behavior, or an error message once the upgrade goes
|
||||
live.
|
||||
|
||||
.. note::
|
||||
Test databases are neutralized, and some features are disabled to prevent them from impacting the
|
||||
production database:
|
||||
|
||||
#. Scheduled actions are disabled.
|
||||
#. Outgoing mail servers are disabled by archiving the existing ones and adding a fake one.
|
||||
#. Payment providers and delivery carriers are reset to the test environment.
|
||||
#. Bank synchronization is disabled. Should you want to test the synchronization, contact your
|
||||
bank synchronization provider to get sandbox credentials.
|
||||
|
||||
Testing as many of your business flows as possible is strongly recommended to ensure they are
|
||||
working correctly and to get more familiar with the new version.
|
||||
|
||||
.. admonition:: Basic test checklist
|
||||
|
||||
- Are there views that are deactivated in your test database but active in your production
|
||||
database?
|
||||
- Are your usual views still displayed correctly?
|
||||
- Are your reports (invoice, sales order, etc.) correctly generated?
|
||||
- Are your website pages working correctly?
|
||||
- Are you able to create and modify records? (sales orders, invoices, purchases, users, contacts,
|
||||
companies, etc.)
|
||||
- Are there any issues with your mail templates?
|
||||
- Are there any issues with saved translations?
|
||||
- Are your search filters still present?
|
||||
- Can you export your data?
|
||||
|
||||
.. spoiler:: Example of end-to-end testing
|
||||
|
||||
- Checking a random product in your product catalog and comparing its test and production data to
|
||||
verify everything is the same (product category, selling price, cost price, vendor, accounts,
|
||||
routes, etc.).
|
||||
- Buying this product (Purchase app).
|
||||
- Confirming the reception of this product (Inventory app).
|
||||
- Checking if the route to receive this product is the same in your production database
|
||||
(Inventory app).
|
||||
- Selling this product (Sales app) to a random customer.
|
||||
- Opening your customer database (Contacts app), selecting a customer (or company), and checking
|
||||
its data.
|
||||
- Shipping this product (Inventory app).
|
||||
- Checking if the route to ship this product is the same as in your production database
|
||||
(Inventory app).
|
||||
- Validating a customer invoice (Invoicing or Accounting app).
|
||||
- Crediting the invoice (issuing a credit note) and checking if it behaves as in your production
|
||||
database.
|
||||
* |assistance-contact|
|
||||
- Checking your reports' results (Accounting app).
|
||||
- Randomly checking your taxes, currencies, bank accounts, and fiscal year (Accounting app).
|
||||
- Making an online order (Website apps) from the product selection in your shop until the
|
||||
checkout process and checking if everything behaves as in your production database.
|
||||
|
||||
.. _upgrade/steps-production:
|
||||
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
|
||||
|
||||
The production launch
|
||||
=====================
|
||||
If you face an issue while testing your upgraded test database, you can request the assistance of
|
||||
Odoo by going to the `Support page and selecting "An issue related to my future upgrade (I am
|
||||
testing an upgrade)" <https://www.odoo.com/help?stage=migration>`_. In any case, it is essential to
|
||||
report any problem encountered during the testing to fix it before upgrading your production
|
||||
database.
|
||||
|
||||
The production upgrade request is when you decide to upgrade your current database with all your
|
||||
production data (invoices, VAT returns, inventories, current orders) to a new version of your
|
||||
choice.
|
||||
You might encounter significant differences with standard views, features, fields, and models during
|
||||
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
|
||||
by a new version breaks a customization, it is the responsibility of the maintainer of your custom
|
||||
module to make it compatible with the new version of Odoo.
|
||||
|
||||
After your :ref:`tests <upgrade/testing-phase>` are completed to your satisfaction, submit the
|
||||
request to upgrade your production database via our `website form <https://upgrade.odoo.com>`_.
|
||||
Select *Production* purpose.
|
||||
.. tip::
|
||||
Do not forget to test:
|
||||
|
||||
- Integrations with external software (EDI, APIs, etc.)
|
||||
- Workflows between different apps (online sales with eCommerce, converting a lead all the way to
|
||||
a sales order, delivery of products, etc.)
|
||||
- Data exports
|
||||
- Automated actions
|
||||
- Server actions in the action menu on form views, as well as by selecting multiple records on
|
||||
list views
|
||||
|
||||
.. _upgrade-production:
|
||||
|
||||
Upgrading the production database
|
||||
=================================
|
||||
|
||||
Once the :ref:`tests <upgrade-testing>` are completed and you are confident that the upgraded
|
||||
database can be used as your main database without any issues, it is time to plan the go-live day.
|
||||
|
||||
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
|
||||
the upgrade at a time when the use of the database is minimal.
|
||||
|
||||
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
|
||||
to frequently request another upgraded test database to ensure that the upgrade process is still
|
||||
successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade process the
|
||||
day before upgrading the production database is also recommended.**
|
||||
|
||||
.. important::
|
||||
Going into production without first testing may lead to:
|
||||
|
||||
- business interruptions (e.g., no longer having the possibility to validate an action)
|
||||
- poor customer experiences (e.g., an eCommerce website that does not work correctly)
|
||||
- Users failing to adjust to the changes and new features
|
||||
- Business interruptions (e.g., no longer having the possibility to validate an action)
|
||||
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
|
||||
|
||||
.. _upgrade/production-assistance:
|
||||
The process of upgrading a production database is similar to upgrading a test database, but with a
|
||||
few exceptions.
|
||||
|
||||
Assistance
|
||||
----------
|
||||
.. tabs::
|
||||
|
||||
If you encounter issues or problems in the **production database**, please get in touch with **Odoo
|
||||
Support**:
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
#. Connect to our `Odoo Support page <https://www.odoo.com/help>`_.
|
||||
#. Under the *Ticket Description* section, select the appropriate type related to your issue but
|
||||
**do not select** the option *An issue related to my upgrade*.
|
||||
The process is similar to :ref:`obtaining an upgraded test database
|
||||
<upgrade-request-test>`, except for the purpose option, which must be set to
|
||||
:guilabel:`Production` instead of :guilabel:`Test`.
|
||||
|
||||
.. note::
|
||||
After upgrading to production, the support will be provided by the Support team instead of the
|
||||
Upgrade team.
|
||||
.. warning::
|
||||
Once the upgrade is requested, the database will be unavailable until the upgrade is
|
||||
finished. Once the process is completed, it is impossible to revert to the previous
|
||||
version.
|
||||
|
||||
#. Please provide as much detail as you can (i.e., videos and screenshots to illustrate your issue).
|
||||
This will avoid clarifying questions and speed up the resolution process significantly.
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
.. warning::
|
||||
If you choose *An issue related to my upgrade* as ticket type, the request will be redirected
|
||||
to another team than the support one and will slow down the processing and response time.
|
||||
The process is similar to :ref:`obtaining an upgraded test database <upgrade-request-test>` on
|
||||
the :guilabel:`Production` branch.
|
||||
|
||||
.. _upgrade/assistance:
|
||||
.. image:: upgrade/odoo-sh-prod.png
|
||||
:alt: View from the upgrade tab
|
||||
|
||||
Help
|
||||
====
|
||||
The process is **triggered as soon as a new commit is made** on the branch. This
|
||||
allows the upgrade process to be synchronized with the deployment of the custom modules'
|
||||
upgraded source code.
|
||||
If there are no custom modules, the upgrade process is triggered immediately.
|
||||
|
||||
.. _upgrade/contact:
|
||||
.. important::
|
||||
The database is unavailable throughout the process. If anything goes wrong, the platform
|
||||
automatically reverts the upgrade, as it would be for a regular update. In case of success,
|
||||
a backup of the database before the upgrade is created.
|
||||
|
||||
Contact our Upgrade service support
|
||||
The update of your custom modules must be successful to complete the entire upgrade process.
|
||||
Make sure the status of your staging upgrade is :guilabel:`successful` before trying it in
|
||||
production. More information on how to upgrade your custom modules can be found on
|
||||
:doc:`/developer/howtos/upgrade_custom_db`.
|
||||
|
||||
.. group-tab:: On-premise
|
||||
|
||||
The command to upgrade a database to production is similar to the one of upgrading a test
|
||||
database except for the argument `test`, which must be replaced by `production`:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python <(curl -s https://upgrade.odoo.com/upgrade) production -d <your db name> -t <target version>
|
||||
|
||||
An upgraded production database can also be requested via the `Upgrade page
|
||||
<https://upgrade.odoo.com>`_.
|
||||
|
||||
Once the database is uploaded, any modification to your production database will **not** be
|
||||
present on your upgraded database. This is why we recommend not using it during the upgrade
|
||||
process.
|
||||
|
||||
.. important::
|
||||
When requesting an upgraded database for production purposes, the copy is submitted without
|
||||
a filestore. Therefore, the upgraded database filestore must be merged with the production
|
||||
filestore before deploying the new version.
|
||||
|
||||
In case of an issue with your production database, you can request the assistance of Odoo by going
|
||||
to the `Support page and selecting "An issue related to my upgrade (production)"
|
||||
<https://www.odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. _upgrade-sla:
|
||||
|
||||
Service-level agreement (SLA)
|
||||
=============================
|
||||
|
||||
With Odoo Enterprise, upgrading a database to the most recent version of Odoo is **free**, including
|
||||
any support required to rectify potential discrepancies in the upgraded database.
|
||||
|
||||
Information about the upgrade services included in the Enterprise Licence is available in the
|
||||
:ref:`Odoo Enterprise Subscription Agreement <upgrade>`. However, this section clarifies what
|
||||
upgrade services you can expect.
|
||||
|
||||
.. _upgrade-sla-covered:
|
||||
|
||||
Upgrade services covered by the SLA
|
||||
-----------------------------------
|
||||
|
||||
Should you have any more questions about the upgrade, do not hesitate to send a message to `Odoo
|
||||
Upgrade Team <mailto:upgrade@odoo.com>`_. We will be happy to answer it as soon as possible.
|
||||
Databases hosted on Odoo's cloud platforms (Odoo Online and Odoo.sh) or self-hosted (On-Premise) can
|
||||
benefit from upgrade services at all times for:
|
||||
|
||||
.. _upgrade/supported-versions:
|
||||
- the upgrade of all **standard applications**;
|
||||
- the upgrade of all **customizations created with the Studio app**, as long as Studio is still
|
||||
installed and the respective subscription is still active; and
|
||||
- the upgrade of all **developments and customizations covered by a maintenance of customizations
|
||||
subscription**.
|
||||
|
||||
Supported versions
|
||||
------------------
|
||||
Upgrade services are limited to the technical conversion and adaptation of a database (standard
|
||||
modules and data) to make it compatible with the version targeted by the upgrade.
|
||||
|
||||
Please note that Odoo provides support and bug fixing only for the three last major versions of
|
||||
Odoo.
|
||||
.. _upgrade-sla-not-covered:
|
||||
|
||||
This is a factor to take into consideration before upgrading. If you are on an older version, we
|
||||
suggest you to prefer the most recent version to benefit from longer support (before having to
|
||||
upgrade again).
|
||||
Upgrade services not covered by the SLA
|
||||
---------------------------------------
|
||||
|
||||
The following upgrade-related services are **not** included:
|
||||
|
||||
- the **cleaning** of pre-existing data and configurations while upgrading;
|
||||
- the upgrade of **additional modules not covered by a maintenance contract** that are created
|
||||
in-house or by third parties, including Odoo partners; and
|
||||
- **training** on using the upgraded version's features and workflows.
|
||||
|
||||
.. seealso::
|
||||
:doc:`maintain/supported_versions`
|
||||
|
||||
.. _upgrade/sla:
|
||||
|
||||
Service Level Agreement
|
||||
=======================
|
||||
|
||||
What is covered by the Enterprise Licence?
|
||||
------------------------------------------
|
||||
|
||||
Databases hosted on Odoo’s Cloud platforms (Saas and Odoo.sh) or On-Premise (Self-Hosting) enjoy the
|
||||
following services at all times.
|
||||
|
||||
The upgrade of:
|
||||
|
||||
* standard applications
|
||||
* Studio customization (as long as the :guilabel:`Studio` app is still active)
|
||||
* customizations done by our consulting and developer services *if* they are covered by a
|
||||
‘Maintenance of Customisations’ subscription
|
||||
|
||||
The Upgrade Service is limited to your database's technical conversion and adaptation (standard
|
||||
modules and data) to make it compatible with the targeted version.
|
||||
|
||||
What upgrading does NOT cover
|
||||
-----------------------------
|
||||
|
||||
* The cleaning of pre-existing data & configuration while upgrading
|
||||
* Any new developments and/or upgrades of your own :ref:`custom modules
|
||||
<upgrade-faq/custom-modules>`
|
||||
* `Training <https://www.odoo.com/learn>`_ on the latest version
|
||||
|
||||
You can get more information about your Enterprise Licence on our :ref:`Odoo Enterprise Subscription
|
||||
Agreement <upgrade>` page.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. seealso::
|
||||
- :doc:`upgrade/faq`
|
||||
- :doc:`odoo_sh`
|
||||
- :doc:`maintain/supported_versions`
|
||||
- :doc:`Odoo.sh documentation <odoo_sh>`
|
||||
- :doc:`Supported Odoo versions <supported_versions>`
|
||||
|
BIN
content/administration/upgrade/access-upgraded-db.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
content/administration/upgrade/databases-page.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
@ -1,228 +0,0 @@
|
||||
.. |assistance-contact| replace::
|
||||
If you need Odoo assistance on this matter, please get in touch with your Odoo Account Manager or
|
||||
our `Sales department`_.
|
||||
.. _Sales department: mailto:sales@odoo.com
|
||||
|
||||
===
|
||||
FAQ
|
||||
===
|
||||
|
||||
.. _upgrade-faq/why:
|
||||
|
||||
Why upgrade
|
||||
===========
|
||||
|
||||
* You benefit from the latest features of the :ref:`new major version
|
||||
<upgrade-faq/release-notes>` released by Odoo.
|
||||
* If you are in an :ref:`unsupported version <upgrade/supported-versions>`, you get a new version
|
||||
with support.
|
||||
|
||||
.. _upgrade-faq/when:
|
||||
|
||||
When to upgrade
|
||||
===============
|
||||
|
||||
Whenever you want. You can make your upgrade request as soon as a new version is released or when
|
||||
your version turns unsupported, and you still wish to enjoy support.
|
||||
|
||||
.. _upgrade-faq/availability:
|
||||
|
||||
Availability of the new version
|
||||
===============================
|
||||
|
||||
As soon as Odoo announces the release of a new major version, you can create a test upgrade request
|
||||
to try the latest version. Please note that at this point, the upgrade scripts will only have been
|
||||
tested with demo data. Please report any issue you might encounter while testing via the `Odoo
|
||||
Support page <https://www.odoo.com/help>`_ and make sure to be happy with your test version before
|
||||
requesting the upgrade of your database in production.
|
||||
|
||||
.. _upgrade-faq/duration:
|
||||
|
||||
Duration of the upgrade
|
||||
=======================
|
||||
|
||||
It is impossible to give time estimates for every upgrade request.
|
||||
|
||||
In general, the "smaller" the database, the quickest the upgrade request is completed. A single-user
|
||||
database that uses only CRM will be processed faster than a multi-company, multi-user database that
|
||||
uses Accounting, Sales, Purchase, and Manufacturing.
|
||||
|
||||
You can expect the time it takes for the platform to upgrade the test database to be similar to the
|
||||
production upgrade.
|
||||
|
||||
.. _upgrade-faq/project:
|
||||
|
||||
Duration of the upgrade project
|
||||
-------------------------------
|
||||
|
||||
It depends on the user involvement (the time spent on testing, reporting problems, etc.) and the
|
||||
issues encountered that might need to be addressed by our technical team.
|
||||
|
||||
So, in a nutshell, what can impact your upgrade lead time?
|
||||
|
||||
* Source & targeted versions
|
||||
* Installed apps
|
||||
* Volume of data
|
||||
* Amount of customization (models, fields, methods, workflows, reports, website, etc.)
|
||||
* Installation of new apps or configuration changes after the start of the test phase
|
||||
* User commitment
|
||||
|
||||
.. _upgrade-faq/custom-modules:
|
||||
|
||||
Upgrade of the custom modules
|
||||
=============================
|
||||
|
||||
As stated in our :doc:`/legal/terms/enterprise`, section :ref:`charges_standard`, this optional
|
||||
service is subject to additional fees.
|
||||
|
||||
Depending on your situation, the custom code could be upgraded by our services, by one of our
|
||||
partners, or you can do it yourself.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _upgrade-faq/upgrade-or-migration:
|
||||
|
||||
Upgrade or Migration
|
||||
====================
|
||||
|
||||
An upgrade is switching to a newer version of Odoo, while a migration reflects the change of
|
||||
:ref:`editions <upgrade-faq/editions-change>` or change of :ref:`hosting type
|
||||
<upgrade-faq/hosting-types-switch>`.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _upgrade-faq/editions-change:
|
||||
|
||||
Editions change (from Community to Enterprise)
|
||||
==============================================
|
||||
|
||||
The upgrade always returns an Enterprise edition of Odoo, whether the database you sent was a
|
||||
community or enterprise edition. It is required to have an enterprise subscription to upgrade.
|
||||
|
||||
.. note::
|
||||
If you need assistance on this matter, please contact us via the `Odoo Support page
|
||||
<https://www.odoo.com/help>`_.
|
||||
|
||||
.. seealso::
|
||||
- `Editions <https://www.odoo.com/page/editions>`_
|
||||
|
||||
.. _upgrade-faq/hosting-types-switch:
|
||||
|
||||
Switching the hosting types (Self-Hosting vs. Online Hosting - SaaS vs. Cloud Platform - Odoo.sh)
|
||||
=================================================================================================
|
||||
|
||||
An upgrade does not cover a change of `Hosting types <https://www.odoo.com/page/hosting-types>`_.
|
||||
|
||||
Open the following link to get :doc:`more information about how to change your hosting type
|
||||
<../maintain/hosting_changes>`.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _upgrade-faq/upgrade-report:
|
||||
|
||||
The Upgrade Report
|
||||
==================
|
||||
|
||||
When an upgrade request completes successfully (test or production), you receive an email
|
||||
notification about it that includes an 'Upgrade Report'. This report is also sent to you via the
|
||||
Discuss app. It contains valuable information regarding changes that occurred during the upgrade.
|
||||
While it serves as a guide to possible issues to look out for, it is not an exhaustive list. It
|
||||
remains imperative that you test the upgraded database thoroughly and report any discrepancies you
|
||||
might find, before you decide to upgrade your production database.
|
||||
|
||||
.. _upgrade-faq/custom-views:
|
||||
|
||||
Custom views
|
||||
============
|
||||
|
||||
During the upgrade, some custom views might get disabled for technical reasons. Therefore they might
|
||||
have to be fixed after the upgrade. The :ref:`Upgrade Report <upgrade-faq/upgrade-report>` that is
|
||||
generated after the upgrade is available in the Discuss app, and lists all the custom views that
|
||||
might be impacted by this.
|
||||
|
||||
.. _upgrade-faq/release-notes:
|
||||
|
||||
Release Notes by version
|
||||
========================
|
||||
|
||||
Open our `Release Note <https://www.odoo.com/page/release-notes>`_ page to get a summary of the new
|
||||
features and improvements made in each version.
|
||||
|
||||
How long is my test available for
|
||||
=================================
|
||||
|
||||
An Odoo Online (SaaS) test database is available for one month by default. We can extend this trial
|
||||
period upon request. For Odoo.sh or on-premise, there is no restriction.
|
||||
|
||||
How many tests to perform before upgrading to production?
|
||||
=========================================================
|
||||
|
||||
As many as needed. When you are comfortable with the database, run a last test upgrade 48 hours
|
||||
before requesting your production upgrade and test your workflows one last time.
|
||||
|
||||
How to/Where to report upgrade issues?
|
||||
======================================
|
||||
|
||||
If you encounter issues during the upgrade process, please contact the Odoo Support through the
|
||||
`Odoo Support page <https://www.odoo.com/help>`_.
|
||||
|
||||
- To report an issue discovered during the testing phase, please select **An issue related to my
|
||||
upgrade (test phase)**.
|
||||
- To report an issue discovered post-upgrade, please select **An issue related to my upgrade
|
||||
(production)**.
|
||||
|
||||
Upgrading to production
|
||||
=======================
|
||||
|
||||
Once you have completed testing and are happy with the result, you decide on a date and time when
|
||||
you stop users from accessing Odoo, freeze all data entries, and create an upgrade request for the
|
||||
production upgrade.
|
||||
|
||||
How is my data handled in the Upgrade Platform?
|
||||
===============================================
|
||||
|
||||
The Odoo Upgrade platform uses the same Privacy Policy as the rest of Odoo.com services.
|
||||
|
||||
Your data is hosted on servers that follow our security guidelines, namely:
|
||||
|
||||
- SSL - All web connections to client instances are protected with 256-bit SSL encryption
|
||||
(HTTPS with a 2048-bit modulus SSL certificate), and running behind Grade A SSL stacks. All our
|
||||
certificate chains are using SHA-2 already.
|
||||
- Safe System - Our servers are running recent Linux distribution with up-to-date security patches,
|
||||
with firewall and intrusion countermeasures (not disclosed for obvious reasons).
|
||||
|
||||
Servers are located at the same locations as our Cloud providers with the following services:
|
||||
|
||||
- Restricted perimeter, physically accessed by authorized data center employees only
|
||||
- Physical access control with security badges or biometrical security
|
||||
- Security cameras monitoring the data center locations 24/7
|
||||
- Security personnel on-site 24/7
|
||||
|
||||
The uploaded and migrated databases uploaded to the Upgrade platform are kept for up to 3 months and
|
||||
are permanently deleted following that period.
|
||||
|
||||
You can learn more about privacy and data handling at Odoo by visiting our `General Data Protection
|
||||
Regulation page <https://www.odoo.com/gdpr>`_.
|
||||
|
||||
Rolling Release (applicable to Odoo Online databases)
|
||||
=====================================================
|
||||
|
||||
This feature allows customers to upgrade their database directly from a message prompt sent to the
|
||||
database administrator as soon as the new version is released. Odoo first tests the upgrade to the
|
||||
next version. The rolling release upgrade option is displayed if the automated tests are successful.
|
||||
The message offers two options:
|
||||
|
||||
#. To 'Upgrade Now', which immediately triggers the upgrade of your live production database.
|
||||
|
||||
#. To take you to your `database manager <https://www.odoo.com/my/databases/>`_ where you can
|
||||
`request an upgraded test database <https://upgrade.odoo.com/#online/>`_ and check the upgraded
|
||||
test database for any discrepancies.
|
||||
|
||||
When you choose to proceed with the production upgrade directly, make sure all users have saved
|
||||
their work and are logged out. The upgrade takes approximately 15 minutes. During this time your
|
||||
database is unreachable. If you notice any problem after the upgrade, please report it via the `Odoo
|
||||
Support page <https://www.odoo.com/help>`_.
|
||||
|
||||
.. note::
|
||||
If you are using the Website or Studio app, we recommend you always do a test upgrade before
|
||||
upgrading your production instance.
|
BIN
content/administration/upgrade/odoo-sh-message.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
content/administration/upgrade/odoo-sh-prod.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
content/administration/upgrade/odoo-sh-staging.png
Normal file
After Width: | Height: | Size: 24 KiB |
@ -1,132 +0,0 @@
|
||||
=======
|
||||
Odoo.sh
|
||||
=======
|
||||
|
||||
.. _upgrade/odoo_sh/overview:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Odoo.sh is integrated with the upgrade platform to make the upgrade process easier.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Upgrade` tab is available in the branches view. It is only available for valid
|
||||
projects with a valid production build.
|
||||
|
||||
.. image:: odoo_sh/odoo-sh-menu.png
|
||||
:align: center
|
||||
:alt: Click on the upgrade menu
|
||||
|
||||
The suggested upgrade steps on Odoo.sh are:
|
||||
|
||||
#. On a :guilabel:`Development` branch, upgrade your custom modules to keep them compatible with the
|
||||
new version and thoroughly **test them**.
|
||||
#. Switch that branch to the :guilabel:`Staging` branch, **upgrade** the last daily production
|
||||
backup and **test it**. Write upgrade scripts if necessary.
|
||||
#. Trigger the production upgrade from your :guilabel:`Production` branch and sit tight.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../administration/upgrade`
|
||||
- :doc:`Upgrade FAQ <../upgrade/faq>`
|
||||
- :doc:`Introduction to Odoo.sh <../odoo_sh/overview/introduction>`
|
||||
|
||||
.. _upgrade/odoo_sh/custom-modules:
|
||||
|
||||
Upgrade your custom modules
|
||||
===========================
|
||||
|
||||
The first step is to upgrade your custom modules to keep them compatible with the new version. Fork
|
||||
your :guilabel:`Production` branch in the :guilabel:`Development` stage, then go to the settings of
|
||||
your :guilabel:`Development` branch and select the Odoo version you target. If needed, modify your
|
||||
code to be compatible with the new version. Make sure to **test** your features are still working
|
||||
correctly.
|
||||
|
||||
.. note::
|
||||
Depending on your contract, the upgrade of your custom modules can be done by yourself, by your
|
||||
Partner or by Odoo (if you hold a subscription including maintenance of customizations).
|
||||
|
||||
.. _upgrade/odoo_sh/testing-phase:
|
||||
|
||||
Upgrade your database on a staging branch
|
||||
=========================================
|
||||
|
||||
Take the upgraded development branch and drag & drop it to :guilabel:`Staging`.
|
||||
|
||||
Go to the :guilabel:`Upgrade` tab and select the :guilabel:`target version`. Then, click on
|
||||
:guilabel:`Test Upgrade`.
|
||||
|
||||
.. image:: odoo_sh/odoo-sh-staging.png
|
||||
:align: center
|
||||
:alt: Odoo.sh project and tabs
|
||||
|
||||
The **latest production daily automatic backup** is sent to the
|
||||
`upgrade platform <https://www.upgrade.odoo.com>`_ to start the upgrade test process.
|
||||
|
||||
.. note::
|
||||
You can follow the upgrade process by going to the :guilabel:`Upgrade` menu of your
|
||||
:guilabel:`Production` branch.
|
||||
|
||||
When the upgraded backup is ready on the `upgrade platform <https://www.upgrade.odoo.com>`_, it is
|
||||
automatically downloaded back to your project.
|
||||
|
||||
The branch is now in a **special mode**: each time a **commit is pushed** on the branch, a
|
||||
**restore operation** of the upgraded backup occurs, and an **update of all the custom modules**
|
||||
happens. This allows you to quickly iterate on your custom modules upgrade scripts. The log file of
|
||||
the upgrade process can be found at :file:`~/logs/upgrade.log` in your newly upgraded staging build.
|
||||
|
||||
.. note::
|
||||
- The **special upgrade mode** is automatically closed after 30 days.
|
||||
- It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
|
||||
upgraded database are set to be updated. If the modules are missing in the code, the update
|
||||
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
|
||||
upgrade script are necessary to clean up the database. The complete removal of the module has
|
||||
to be handled afterwards.
|
||||
|
||||
Functionally test your upgraded database
|
||||
========================================
|
||||
|
||||
Now that the test upgraded database is available on your staging branch, **thoroughly test it** and
|
||||
make sure everything runs as it's supposed to. Once you are satisfied with the result, you are ready
|
||||
to upgrade your production database.
|
||||
|
||||
Production upgrade
|
||||
==================
|
||||
|
||||
Once you are happy with your testing, you can start the process on the :guilabel:`Production`
|
||||
branch.
|
||||
|
||||
On your :guilabel:`Production` branch, go to the :guilabel:`Upgrade` tab, select the
|
||||
:guilabel:`targeted version` and click on the :guilabel:`start Upgrade` button.
|
||||
|
||||
.. image:: odoo_sh/odoo-sh-prod.png
|
||||
:align: center
|
||||
:alt: View from the upgrade tab
|
||||
|
||||
The actual process is **triggered as soon as you push a new commit** in your branch. Make sure you
|
||||
are pushing code that is compatible with the new version. For example by merging the code from your
|
||||
upgraded staging branch.
|
||||
|
||||
.. note::
|
||||
You can see the progress of the upgrade by going to the :guilabel:`Upgrade` tab of the main
|
||||
branch.
|
||||
|
||||
.. image:: odoo_sh/odoo-sh-progress.png
|
||||
:align: center
|
||||
:alt: View showing the progress of the upgrade
|
||||
|
||||
.. important::
|
||||
Your database is unavailable throughout the process.
|
||||
|
||||
.. note::
|
||||
If anything goes wrong, the platform automatically reverts the upgrade, the same as it would be
|
||||
for a regular update. In case of success, a backup is always made.
|
||||
|
||||
The update of your custom modules must be successful to complete the entire upgrade process. Make
|
||||
sure the status of your staging upgrade is :guilabel:`successful` before trying it in production.
|
||||
|
||||
.. note::
|
||||
It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
|
||||
upgraded database are set to be updated. If the modules are missing in the code, the update
|
||||
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
|
||||
upgrade script are necessary to clean up the database. The complete removal of the module has to
|
||||
be handled afterwards.
|
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 31 KiB |
@ -1,59 +0,0 @@
|
||||
==========
|
||||
On-Premise
|
||||
==========
|
||||
|
||||
Test upgrade request
|
||||
====================
|
||||
|
||||
There are two ways to create your upgrade request.
|
||||
|
||||
Upgrade request via command line
|
||||
--------------------------------
|
||||
|
||||
For technically-advanced users and partners, the upgrade process can be initiated via the following
|
||||
command line on the server where the database is hosted:
|
||||
|
||||
:command:`python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t
|
||||
<target version>`
|
||||
|
||||
The above command creates the database dump, sends it to the upgrade platform, and initiates the
|
||||
automated upgrade process. During the upgrade, you can follow the live logs on your screen.
|
||||
Once the upgrade process is completed successfully, the upgraded database is restored onto the
|
||||
server (as a duplicate test database).
|
||||
|
||||
Upgrade request via the Odoo Upgrade Portal
|
||||
-------------------------------------------
|
||||
|
||||
#. Download a recent copy of your database and select the option :guilabel:`pg_dump custom format
|
||||
(without filestore)`.
|
||||
#. Upload this dump file at https://upgrade.odoo.com and select *Testing* as the aim.
|
||||
Odoo performs the automated upgrade process. Once it is completed, you receive an email with a
|
||||
link to download the upgrade database dump file.
|
||||
#. Import the upgraded database into your on-premise environment and manually test all processes and
|
||||
workflows.
|
||||
|
||||
.. note::
|
||||
- For security reasons, only the person who submitted the upgrade request is able to download it.
|
||||
- Any problem found during testing should be reported via the `helpdesk
|
||||
<https://odoo.com/help>`_.
|
||||
|
||||
Upgrade your production database
|
||||
================================
|
||||
|
||||
Once you have completed the testing successfully, you can proceed to upgrade your live database in
|
||||
production. Download your upgraded database from the link in the email and import it onto your live
|
||||
environment.
|
||||
|
||||
Custom modules (if applicable)
|
||||
==============================
|
||||
|
||||
The upgrade of a database that contains custom modules is a two-step process.
|
||||
|
||||
#. The standard upgrade is done when your upgrade request is completed.
|
||||
#. Your custom modules also need to be upgraded to keep them compatible with the new version.
|
||||
|
||||
Depending on your contract, the upgrade of your custom modules can be done
|
||||
|
||||
#. by yourself.
|
||||
#. by your Partner.
|
||||
#. by Odoo (if you hold a subscription to 'Maintenance of Customizations').
|
@ -1,28 +0,0 @@
|
||||
==================
|
||||
Odoo Online (SaaS)
|
||||
==================
|
||||
|
||||
Requesting a test upgrade
|
||||
=========================
|
||||
|
||||
#. Go to your `database manager <https://www.odoo.com/my/databases/>`_
|
||||
#. Click on your profile icon and select *My Databases*.
|
||||
|
||||
.. image:: online_hosting/accessing-my-databases.png
|
||||
:alt: Selecting My Databases under my profile
|
||||
|
||||
#. Click on the action settings icon next to your main database and select the *Upgrade* option.
|
||||
|
||||
.. image:: online_hosting/upgrade-option.png
|
||||
:alt: Selecting the action settings icon
|
||||
|
||||
#. In the pop-up message that will appear, select Test Upgrade.
|
||||
|
||||
.. image:: online_hosting/select-test-upgrade.png
|
||||
:alt: Selecting test upgrade
|
||||
|
||||
#. This triggers the automated upgrade process. A confirmation email is then sent to you with the
|
||||
the link to the upgraded database or to provide information if the upgrade failed.
|
||||
|
||||
.. note::
|
||||
You can also see and access your test database from your *My Databases* page.
|
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 5.4 KiB |