Compare commits
1026 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc7681af00 | |||
| 7e29da60b9 | |||
| 8edb63948c | |||
| 76c781226d | |||
| fd4065b3c6 | |||
| b755d0330e | |||
| b5dbf4779a | |||
| db05d69be6 | |||
| c795231f1c | |||
| 5114140efe | |||
| dd7ab18b9e | |||
| 32cb0d8244 | |||
| 80b4cd05d3 | |||
| 421e760581 | |||
| 3bd570ae64 | |||
| 3e199d9825 | |||
| ca475f8ad5 | |||
| ae0c4d809d | |||
| 3758cd5899 | |||
| 9514d7df55 | |||
| f704ee9cc1 | |||
| 0031e37c63 | |||
| 89b550252a | |||
| 27d8dc2acd | |||
| 4367502c08 | |||
| 9988d0b214 | |||
| 665bf423ec | |||
| 8bf5772a97 | |||
| 6462ed0112 | |||
| 1c2ce72416 | |||
| fb681d1305 | |||
| e005fa9896 | |||
| 7d70725925 | |||
| 4590a4c25a | |||
| 057a1c11d2 | |||
| 7d01392c9a | |||
| 35aae86dbd | |||
| a9c82ebb94 | |||
| 453284ba8e | |||
| 42115759bc | |||
| 94a6a0b204 | |||
| f51b991fd4 | |||
| c76f97777a | |||
| e80d7ae220 | |||
| f27df8f077 | |||
| 06d5e0b096 | |||
| 137e58719b | |||
| 9cac3b3d1a | |||
| 7dfd6421db | |||
| b0a042b928 | |||
| facb3f184e | |||
| 13544bca17 | |||
| 9e54525d61 | |||
| 1ed317ebd7 | |||
| 0df9068892 | |||
| 2161dd5acf | |||
| 9989131931 | |||
| f1d048fdff | |||
| 5cfd1623ae | |||
| 432d9bb10b | |||
| 1be31fda81 | |||
| 4d61833e46 | |||
| 46d85d4f00 | |||
| 5720cd2802 | |||
| 9fc59e3237 | |||
| 5b04581623 | |||
| 5c82ba7762 | |||
| b7316e2e2e | |||
| 4e61b3585e | |||
| 11401af3dd | |||
| 3d0a19f329 | |||
| 89bccb44ff | |||
| 899ee1c4c1 | |||
| ab4cfb431f | |||
| 9f65cba6dc | |||
| 3b50c7a565 | |||
| 4af52da507 | |||
| a7bb89ce47 | |||
| 532b6be429 | |||
| 80e8576263 | |||
| 75fd5255eb | |||
| 070ffa86c0 | |||
| 7b5ce24bba | |||
| 05a09da86a | |||
| d0ca9fbafe | |||
| c7713b218f | |||
| 978bebf93c | |||
| 388003e6f1 | |||
| 7a41103958 | |||
| 63a9962742 | |||
| 414bae03ec | |||
| bbd5b4da50 | |||
| 2954463d6e | |||
| 18280ab5da | |||
| 1fb6059a90 | |||
| ae506cb484 | |||
| 10683c03c7 | |||
| 898b0280db | |||
| 369aa4a662 | |||
| 8459cf4db8 | |||
| 885bf17e4c | |||
| 844c2ef62e | |||
| f2ce4374aa | |||
| 670f8bb76c | |||
| a4461a7ee4 | |||
| c30ecfb20d | |||
| 1eb2037c30 | |||
| e3a28d6cf1 | |||
| e99891c7b7 | |||
| ac0e703863 | |||
| 21b604e0db | |||
| 4566a8ec30 | |||
| 57e2f90924 | |||
| d7324b6950 | |||
| c2cfc63466 | |||
| 3894c41631 | |||
| 99c1636974 | |||
| 2a11aa8a82 | |||
| 76b013bbe3 | |||
| 9783721529 | |||
| e7dad58064 | |||
| 93b9d802e7 | |||
| a01bd25041 | |||
| 9fcd175e58 | |||
| 863a04708c | |||
| 8553f68bb8 | |||
| 36d1e577fe | |||
| 70b69857e9 | |||
| b4ebef7d20 | |||
| 1491cce9d6 | |||
| 16224865de | |||
| 38b1d8c153 | |||
| 129a8f33ed | |||
| f8bcfcb83a | |||
| f71915e945 | |||
| 9556b85133 | |||
| 26f00581c4 | |||
| 8460cbc372 | |||
| fd933208d3 | |||
| bf294f37cc | |||
| b29ced49c5 | |||
| 76904fe8fa | |||
| 60133f01dd | |||
| 5736d332d2 | |||
| d30c04ba6a | |||
| 2472f29e32 | |||
| 64ca4e915c | |||
| 92110f5948 | |||
| e10b927f08 | |||
| 2d87962b37 | |||
| da79ee1c06 | |||
| 5683287892 | |||
| 09ce44f314 | |||
| 819864f0c2 | |||
| 8c29d1fd6a | |||
| b1a76aec63 | |||
| 08f472ef28 | |||
| d90e09c8b7 | |||
| 446ecbfc39 | |||
| 1f50e937d5 | |||
| 918766abe1 | |||
| 3a124f000c | |||
| adb845eb17 | |||
| fe2111ccbf | |||
| 27647fcb38 | |||
| 6d25f69513 | |||
| ef4c3555bc | |||
| 56cf4288c7 | |||
| 1fddd2cd67 | |||
| 584e44396b | |||
| f4bc10e4b0 | |||
| 67ddab9fbc | |||
| 53aa00c871 | |||
| d69383d7ae | |||
| f9e15dffd5 | |||
| 4b15e67358 | |||
| f9f2785d9c | |||
| 0f0144abf8 | |||
| 3117592e26 | |||
| e4ab323e9e | |||
| 62a362f30a | |||
| 9fb8c5c354 | |||
| 1e39949363 | |||
| afe0282420 | |||
| 74f4204857 | |||
| 81d1f2d21b | |||
| 9dc32cdd4e | |||
| febf7c4188 | |||
| 71f3ea88bd | |||
| ad4e8e649a | |||
| 5cfec84463 | |||
| 59066fed29 | |||
| eabb865415 | |||
| e4624b9fdb | |||
| b5140e2d22 | |||
| 4314b73e2c | |||
| 46881ee8fb | |||
| e445c1117b | |||
| 6b4bc0b680 | |||
| cd55555d79 | |||
| c44801c718 | |||
| 2eafd205de | |||
| 2c819a05c2 | |||
| 6a597e2e94 | |||
| 03dc488290 | |||
| 5c2e78c8a5 | |||
| ab1563e7c7 | |||
| e18b24a176 | |||
| 56a5b0480e | |||
| 931920bc31 | |||
| 2b784e9ec1 | |||
| 5e248b7017 | |||
| ff846cc48d | |||
| 41e1bda1cc | |||
| ae399fc411 | |||
| d70bd0b773 | |||
| ddb34dd21c | |||
| 39d5455110 | |||
| 59bf54b668 | |||
| d097e51578 | |||
| 4f3531f81b | |||
| 679504a05c | |||
| 5f8faeac1d | |||
| f581e7a1d7 | |||
| 283fa65ac2 | |||
| 3ab7232f8e | |||
| 71d75c9d76 | |||
| b5de4f8bb5 | |||
| c26a1dafeb | |||
| 7e37798280 | |||
| 6273085492 | |||
| 4600151605 | |||
| 46a6b90110 | |||
| ad3ef5bfba | |||
| bce9e4b57b | |||
| 8bdca172c4 | |||
| b02e24397f | |||
| aa1771b34b | |||
| f4d032ecbc | |||
| e6e609be76 | |||
| 04c732f89e | |||
| 5114d766e4 | |||
| 33f99d03dc | |||
| b3aa636f5b | |||
| f6ce2b9904 | |||
| 2c45872c57 | |||
| d5fc577b0b | |||
| 716699782a | |||
| d044ac2b59 | |||
| 3c338ea041 | |||
| 74d5d52874 | |||
| 7b9abb3bef | |||
| 5f60c80baa | |||
| 830ec0c321 | |||
| 66024b841e | |||
| d56d5a5af2 | |||
| c0b0457de5 | |||
| 40d3785ddf | |||
| 75a102323b | |||
| 497f7660f3 | |||
| 5c89f63fb9 | |||
| 24f6c4c55e | |||
| 64fa68e188 | |||
| 0da8718bf7 | |||
| 097c247449 | |||
| 8a07f95e43 | |||
| d85715a176 | |||
| a6fb221a75 | |||
| de72e6cdfa | |||
| 22c5ae8905 | |||
| eb72280e1d | |||
| 18b6872d88 | |||
| 9ce0d967b2 | |||
| 4efaa8ccff | |||
| 707bc15352 | |||
| f5326fa593 | |||
| 3327711e25 | |||
| 009ae8ffde | |||
| 0fb94a128e | |||
| 987aef16ec | |||
| 8260880d6f | |||
| 657e6a0cce | |||
| 2b40e9103e | |||
| f0814df058 | |||
| ed4b8c1320 | |||
| 6d50ac96de | |||
| 518db8b02a | |||
| cc3ca497f3 | |||
| b75a798ae6 | |||
| ba7a47e03e | |||
| d783dd375a | |||
| c2d7f03b8b | |||
| 1292abc9e7 | |||
| 899960a66d | |||
| c3a66c28a0 | |||
| 018d708b44 | |||
| 286ae4a7b7 | |||
| 5cd64c158f | |||
| 1b8da9b0a9 | |||
| 26b45abb9e | |||
| ffa10a9b0a | |||
| cb122ad068 | |||
| edaa9773f9 | |||
| 82a778ef23 | |||
| a49d1b7c9c | |||
| 655f923d11 | |||
| cd81a97399 | |||
| e297b6254e | |||
| 8c6175f77d | |||
| ea6b25aba8 | |||
| f90bc13ade | |||
| 60095ca6e4 | |||
| 65d71dd7be | |||
| f4c8a0f929 | |||
| aafa593c6a | |||
| 7b7e87c33e | |||
| 528a9c26a1 | |||
| a844c0aa12 | |||
| ae33eaad60 | |||
| 5f45c6aff8 | |||
| a39f2d4421 | |||
| aaac56f2f4 | |||
| 080835be2b | |||
| fd25400847 | |||
| 772a56a693 | |||
| 5d0b31a508 | |||
| 2e92bea4da | |||
| a1b17b9f31 | |||
| f7d9f58b25 | |||
| 478fdc07b1 | |||
| 128bc1786c | |||
| 67dff9aa43 | |||
| 4aba55b1fe | |||
| aec7a8aaed | |||
| 4eab939d67 | |||
| 4ccae58e6f | |||
| a51a8ad9fc | |||
| 5fb8de203d | |||
| c61c65da47 | |||
| a74be8db2f | |||
| 55ccf597ef | |||
| 7cec0db05f | |||
| 847f47bcc3 | |||
| 2d1d9d773a | |||
| f2b39b8e64 | |||
| c450c8f5c4 | |||
| e08338a4f4 | |||
| 2cd2b864a7 | |||
| 92851b1bb4 | |||
| 1141780b6c | |||
| afcf02cb30 | |||
| b5efab7201 | |||
| aef4f46c59 | |||
| 1d6c78a006 | |||
| 2ceaa3ef1d | |||
| ff7c86c91c | |||
| 73be78f25e | |||
| ecf2e4f94a | |||
| b8ffda3c07 | |||
| e9f6ddb7c3 | |||
| b37ca22bb0 | |||
| 86dd91f009 | |||
| f842fc850f | |||
| ab1cb5d515 | |||
| d5f642d3c6 | |||
| 0f1be083b5 | |||
| 3690bba092 | |||
| 37146744a0 | |||
| 5457a07a4e | |||
| f02080d755 | |||
| 10c7b5cbae | |||
| 71f055f27d | |||
| 9571a32131 | |||
| 8a30786495 | |||
| cc13f28fd2 | |||
| ee5a4d74c9 | |||
| f8e1df2c8f | |||
| ad08d78593 | |||
| d8c9f6afa4 | |||
| b909a21d1f | |||
| ad6cde3181 | |||
| bca9ac151f | |||
| 5045aecce2 | |||
| 9966e8771a | |||
| 9af7a4ca01 | |||
| 0ef10a1606 | |||
| 076534b1f0 | |||
| 49eb51b5d8 | |||
| da9c9aa1ab | |||
| d4f4e8684e | |||
| 68a35753c6 | |||
| e74a893812 | |||
| 35230f0fc5 | |||
| 11aa498ed5 | |||
| fef7820521 | |||
| 6d09d506b9 | |||
| d52966b147 | |||
| 530774b60b | |||
| ba0c7f42ba | |||
| b65f74055f | |||
| 93e7ee9673 | |||
| 8d6d1a7b3c | |||
| 21b1bf81b9 | |||
| f2c8501d8f | |||
| 699fdc0ceb | |||
| 61e5bf08b5 | |||
| 6dbff460fb | |||
| 60ad2bdb7d | |||
| 35aaad62c9 | |||
| 9cd2ec28f7 | |||
| bed5b9edb7 | |||
| 5c931f7ec8 | |||
| b85a92be63 | |||
| e4afa7c177 | |||
| a9d1450111 | |||
| 001fe6bd1e | |||
| 33cccf063f | |||
| 4eab217696 | |||
| a85cb3bc92 | |||
| 1e0b95df13 | |||
| 778fbc37a6 | |||
| 2ef1219109 | |||
| 1a95d1cd6f | |||
| 14be609d38 | |||
| a63621dc7a | |||
| 5c8abb54b9 | |||
| 4d51aecd95 | |||
| 872bee0033 | |||
| f778ba89af | |||
| ca445c86c8 | |||
| 26364227a6 | |||
| 49e02a9097 | |||
| 03573426e1 | |||
| 520cd5fb9e | |||
| a88ce0cb9e | |||
| 88a6ef872a | |||
| 90d76fabf7 | |||
| f1e601a3a2 | |||
| e045da51b3 | |||
| c619a6fca8 | |||
| 992223a284 | |||
| 90313bc380 | |||
| cafdb815e3 | |||
| b0ad5ac69e | |||
| eb8184542b | |||
| 2ce56e4fb1 | |||
| b3a1f27461 | |||
| 8a0df31fc5 | |||
| 124021800d | |||
| 2035a0b878 | |||
| 52d7d84edb | |||
| 10bf041900 | |||
| 882123671b | |||
| 7aef470156 | |||
| 2aa3b2d89a | |||
| b4a1a4a0d0 | |||
| d0ae1cbce0 | |||
| 339b5dbfb6 | |||
| 914e339b37 | |||
| c58a06bede | |||
| b3b20ef355 | |||
| 9b57df9a8d | |||
| 90bc7cba78 | |||
| 77a70dc8bf | |||
| 0e22a3c582 | |||
| fc663c9a8c | |||
| 2110671090 | |||
| 3289d1a1c7 | |||
| 7062012490 | |||
| 9491605213 | |||
| 6be97f3219 | |||
| 6f9ee7b414 | |||
| bfadc58fbc | |||
| 2d1361c026 | |||
| 2b75fb4bbb | |||
| aef7d05dc5 | |||
| 6c7ee83bc4 | |||
| 963de80d3e | |||
| c2959cefce | |||
| dc6c4986d6 | |||
| efe7cbcd26 | |||
| 7b7f79073a | |||
| f6ac437b68 | |||
| 17fa2e0333 | |||
| 197dbea3d2 | |||
| c2f8d4bd44 | |||
| c60bc5f919 | |||
| 31aacc1791 | |||
| b208529745 | |||
| 5e3d4d0414 | |||
| 73730b3cf5 | |||
| cab1a56722 | |||
| aced62f4b3 | |||
| 68b2aa6df4 | |||
| ce9072f27a | |||
| 35e09b26c1 | |||
| c69596bebc | |||
| 87facd654d | |||
| 6725754169 | |||
| cabd6e7f85 | |||
| d4923d6350 | |||
| 8db94fe7fe | |||
| 5d7209d635 | |||
| a154e01cee | |||
| ece2d4c081 | |||
| 57f447e302 | |||
| 7858ac6c68 | |||
| e56bc8a5b9 | |||
| 18c2c74848 | |||
| e63b92a718 | |||
| ac813f2b5b | |||
| 6419980663 | |||
| 894e1be9c6 | |||
| 59db0ca18c | |||
| ab1a7d0a69 | |||
| 06d0ff6ca8 | |||
| 219a7cc82f | |||
| b9217c292a | |||
| 814917793a | |||
| 7423cfa8f8 | |||
| 9d9548da4a | |||
| c1bc6ddf6e | |||
| f42bf525e9 | |||
| ade054b752 | |||
| 9a5b5b0614 | |||
| 4fe6fbee12 | |||
| cd549cb386 | |||
| d41a66758f | |||
| 3a7be7730d | |||
| c8ab0c1535 | |||
| 0e567a08de | |||
| 9baab389c9 | |||
| 46a80f60c5 | |||
| aab2d6615a | |||
| 991b8142fe | |||
| f4bbbcb6c1 | |||
| 768ab1b586 | |||
| 7424e4176c | |||
| 8287c88bd4 | |||
| 53e7277b6a | |||
| 2c7d61f938 | |||
| cdb71bb807 | |||
| 455f4a9359 | |||
| fa5dcc6940 | |||
| 33196968df | |||
| 8e4dedc9a1 | |||
| c260ecd39d | |||
| 10eee0fe7c | |||
| b2b6ec698a | |||
| 0e6a41d6d5 | |||
| db65871c39 | |||
| ae172a8520 | |||
| 8f4c884f5f | |||
| a83d44239a | |||
| 1b8754a67a | |||
| 7de62ec00e | |||
| 89cf77f760 | |||
| d157b18959 | |||
| eaa3e69e51 | |||
| e47b0379c3 | |||
| 624048c891 | |||
| df35905d72 | |||
| 1b7408bf19 | |||
| f54dde63a5 | |||
| 119ecffb45 | |||
| d7ba0a6660 | |||
| 3a3e61af73 | |||
| d719a63b5d | |||
| 9d1e6157bc | |||
| 62d454875a | |||
| bb128030a2 | |||
| 28b25b876e | |||
| 5ce8981fb8 | |||
| 642968bfd8 | |||
| 6ec20abc53 | |||
| 667da8bcff | |||
| 2f283d72f5 | |||
| 390126a28a | |||
| ab03f8a9f3 | |||
| cd9657c3da | |||
| ba60d5a207 | |||
| 0f113316ec | |||
| 3b69390a11 | |||
| 29b1539201 | |||
| 29f725955d | |||
| 187c0cbb00 | |||
| 02bf1dc5f5 | |||
| 825048b2be | |||
| b1a958006f | |||
| 6050a2bb00 | |||
| d508e02871 | |||
| 4e889021ce | |||
| 0fa4d26c19 | |||
| f1e3c2d81d | |||
| 588772b9a3 | |||
| 92f4743b83 | |||
| be801ed80e | |||
| 0866b08510 | |||
| b0509d1c95 | |||
| a1d7e430c7 | |||
| fb149f3cb3 | |||
| 449898e39c | |||
| 9f764682c3 | |||
| 0d6bfc4a57 | |||
| c0d71b7664 | |||
| 61e94177f6 | |||
| 9b54acbee1 | |||
| f12d8cecbb | |||
| 18efd44da0 | |||
| 49387a9557 | |||
| 27b89ed651 | |||
| 4249e50049 | |||
| d136ce28ce | |||
| 178f97f0e7 | |||
| 3f2334fda3 | |||
| b2233bb7e3 | |||
| c86d8c8a13 | |||
| 24ec474354 | |||
| 9d419b67ae | |||
| cb8d65d5e3 | |||
| 5244bd6e23 | |||
| 11996a97bc | |||
| 84b6213eec | |||
| 51dd489f62 | |||
| c24673d532 | |||
| b64b758bb5 | |||
| 94e60e9460 | |||
| 37cdf3f8db | |||
| 19f90800c3 | |||
| 5c344d726f | |||
| 3be8b18bee | |||
| 52ee4a7a9c | |||
| 974bc9624a | |||
| 7c37474507 | |||
| b103c3fbbd | |||
| cc61e7ff93 | |||
| aee958b1ff | |||
| c366745863 | |||
| 568b75790b | |||
| cfa9494c33 | |||
| fe0211c1ed | |||
| 6f76ff407f | |||
| d58407e75a | |||
| e9a724958c | |||
| e32f9d8eab | |||
| c949a732c9 | |||
| 302b5307fa | |||
| 239fc190a0 | |||
| bc91b1d06c | |||
| b3f26c2914 | |||
| 06d259b93d | |||
| bf128be2f7 | |||
| 0dbc665113 | |||
| b741ad3b4e | |||
| f47fda5471 | |||
| 6c3c3855b3 | |||
| c952b418f2 | |||
| 311752091d | |||
| 522f684b9a | |||
| 7fe67ec854 | |||
| b49110f30e | |||
| 1b8d66916a | |||
| e0a4defc84 | |||
| 0cbc1228ea | |||
| 98c6f414c0 | |||
| 24cef029dc | |||
| 55885be534 | |||
| 17185f0c99 | |||
| 4ba7190ffd | |||
| bcc8498c0b | |||
| c0d32996f4 | |||
| 7c4656f0c4 | |||
| f477cf5f1c | |||
| 4837aa7eef | |||
| 75368f52e8 | |||
| 646fc412d0 | |||
| 235bcf85f2 | |||
| e8e75d4175 | |||
| 869d8d1961 | |||
| 0f2b82cb37 | |||
| 121be6a81e | |||
| 978e4b3bac | |||
| e9943acebe | |||
| e7aac2eed3 | |||
| 8ffc93b3c1 | |||
| 3da237343f | |||
| a0a4a2da98 | |||
| f93aeec22f | |||
| 3d145e7759 | |||
| 7aae398cf7 | |||
| 404b954a0e | |||
| 4887907ef7 | |||
| 8722ea902e | |||
| 3901e3b241 | |||
| a81e0623b0 | |||
| d5d232bb50 | |||
| 5ddc402467 | |||
| 79e3055ff4 | |||
| 55a8c391c4 | |||
| eb28322572 | |||
| ded1e69553 | |||
| 951e47708d | |||
| 6191b57da3 | |||
| 9e902c7a7e | |||
| 6073895598 | |||
| 835d77f3cf | |||
| 889c9cf0f9 | |||
| 28fe18157e | |||
| 026d6a76be | |||
| f559ec5939 | |||
| d12773b496 | |||
| a7a0db9ca3 | |||
| 8b5db69cae | |||
| 663157179f | |||
| 35da831350 | |||
| ee64b99c07 | |||
| 9a5c4e5a40 | |||
| 74840c9223 | |||
| eee614be25 | |||
| cee726d01d | |||
| 7f2829f6c6 | |||
| f3a541ad73 | |||
| ed4a7be19b | |||
| f6b60c1010 | |||
| 7277af11d1 | |||
| e588d900c9 | |||
| 9e71bb2a7b | |||
| 78f66a5298 | |||
| 84ecfaa4a8 | |||
| 27e9c1b2f2 | |||
| 1ae7cfa506 | |||
| dec529af18 | |||
| 493d45d687 | |||
| f997758e12 | |||
| b4bbc63478 | |||
| 4e1cfeb606 | |||
| fc268ae277 | |||
| 214fba8896 | |||
| 58be362009 | |||
| ba4f9d6354 | |||
| 4eb09d95f2 | |||
| fa70e54d1a | |||
| 1aa28868e4 | |||
| cb825e247d | |||
| c8a1814007 | |||
| c57decd8b0 | |||
| e6d9a9dac2 | |||
| 8c1a7ae400 | |||
| 22e6fcc760 | |||
| 0c0a7086ac | |||
| cadf860b42 | |||
| 17b5636645 | |||
| df991cb75d | |||
| 279dc5a623 | |||
| bad60e1fa8 | |||
| 7316152764 | |||
| 7b9bb78801 | |||
| 4721c7291f | |||
| 990ca4f7ca | |||
| 31df0a841a | |||
| 2a96d2c969 | |||
| 8036fd51b5 | |||
| 9ecc73df71 | |||
| 66d3bf35d0 | |||
| f0707ad049 | |||
| 9c56734a3a | |||
| f47c3db3bb | |||
| 3c552336da | |||
| ee52601986 | |||
| d4367c4d9a | |||
| a75c78e9d4 | |||
| 617fc00c52 | |||
| 71c45a1525 | |||
| cdf5c7eda4 | |||
| d530c8e566 | |||
| b49da1df09 | |||
| 0e89b54be2 | |||
| be8e8f0579 | |||
| 1c2ea73923 | |||
| 9f179bd49d | |||
| dce73864eb | |||
| d8e4894f5b | |||
| e133c53f52 | |||
| 8d032bae61 | |||
| d827ce586c | |||
| 53b921d934 | |||
| 2269ee51e8 | |||
| 484d245556 | |||
| 0754e169dc | |||
| 6172c98159 | |||
| cf6ca0fbb2 | |||
| b71cf50f9e | |||
| f2179ad8a0 | |||
| c40fbdbe0d | |||
| 1e7fe12478 | |||
| 42bef26a5d | |||
| 8966e001c2 | |||
| ce9cc2f48b | |||
| 64fd4bbd0a | |||
| e4c963d7b6 | |||
| c0ac2a7e13 | |||
| df35d8a093 | |||
| 172d2e6e1b | |||
| 4e0c62ae03 | |||
| 0222285869 | |||
| 3d74c4584b | |||
| 41b6e71d1d | |||
| fd6589cf50 | |||
| aa5e03bf89 | |||
| d2b44d2c7d | |||
| adf0d83180 | |||
| 5db4c36e43 | |||
| 2c72491158 | |||
| 194f215662 | |||
| 2e869a32e5 | |||
| b8f59ad24f | |||
| 331b7b6285 | |||
| 9a5518bd2c | |||
| aa1c6b3f07 | |||
| e410776f24 | |||
| 4dc1223caf | |||
| c1e85cb5f0 | |||
| 2c4bfb12c2 | |||
| 915f1805fd | |||
| e5516517b4 | |||
| 83a3eb5648 | |||
| 4335271352 | |||
| 888fbb5c50 | |||
| dccdca0f41 | |||
| 3ed9b8d435 | |||
| 07f5559efe | |||
| c858f1e095 | |||
| af7d5c277c | |||
| 90546aa2cd | |||
| 55c0c63835 | |||
| 28534dce88 | |||
| e6002983e6 | |||
| f99ac93e72 | |||
| fed107e9a6 | |||
| 6b8372ccda | |||
| b47ecb25a9 | |||
| 881aecbe59 | |||
| 6fb8dd6b09 | |||
| 32b506457a | |||
| 44a134850b | |||
| cf5b0d71ca | |||
| 7c1dc39d03 | |||
| 4233250b82 | |||
| 2d93b03dd0 | |||
| 24d0a9f71d | |||
| c48359e77c | |||
| 1086e0a9cf | |||
| 9989c83fd9 | |||
| eb9cd7558c | |||
| d015bc03fa | |||
| 172c4490ef | |||
| e6db26a654 | |||
| 81261e3c9d | |||
| 7b4879a06c | |||
| 3dd71a4817 | |||
| a826ed027d | |||
| 8db85a0caa | |||
| d16c2472f5 | |||
| 3af790ba8e | |||
| 992fbc6ece | |||
| 772e0945a9 | |||
| efb327479f | |||
| aec3e2d9d9 | |||
| 3e674f3178 | |||
| 27fe4b06a5 | |||
| 5327f9ece9 | |||
| f0b550fa16 | |||
| 85fc0b6063 | |||
| 54203049fa | |||
| 431839da7d | |||
| f0f9023062 | |||
| 075894d56b | |||
| edf4c45c3b | |||
| 0c5ceef042 | |||
| 9bd739b36f | |||
| 2b2611e462 | |||
| 0bdc750700 | |||
| bbaa1856c5 | |||
| 7ea917988c | |||
| 71a5d15df4 | |||
| 35e77b69bb | |||
| adf90f60c4 | |||
| 334483cf78 | |||
| b5e78103b5 | |||
| 0cb3072c0e | |||
| 2dfdf8600f | |||
| e9a6934319 | |||
| 642f68cad1 | |||
| 6f550c494e | |||
| 7e466dd686 | |||
| c80f8ee403 | |||
| 3235a7e612 | |||
| 7fc45f6e68 | |||
| 32de28100e | |||
| 34565a1608 | |||
| a9d7bf46a6 | |||
| 9075b02cb7 | |||
| c580e3db4e | |||
| f29549b144 | |||
| 5e91babfb0 | |||
| 2503b1249a | |||
| f553a6b744 | |||
| a1707b2eb1 | |||
| 533e11c19e | |||
| efdff9f6e5 | |||
| 678eca0721 | |||
| b8ff49a6f1 | |||
| 06688f4dc7 | |||
| fc60cda6e5 | |||
| 32a7b54872 | |||
| a67e991124 | |||
| 9195e02602 | |||
| c0aba501da | |||
| c1b8e7f7a1 | |||
| 7d9e8af153 | |||
| 3ac968915b | |||
| 217b8d0542 | |||
| 76b8472e3b | |||
| 7dbb57f87a | |||
| 2e0efb46e7 | |||
| 697df5e5ae | |||
| 33d4bdaf29 | |||
| fe1065b044 | |||
| 7bbfcd10ec | |||
| ffd7ef57ab | |||
| efbb1a6fc3 | |||
| f0550c30c6 | |||
| 667524fe71 | |||
| b65e2e7848 | |||
| 61b6fe53e1 | |||
| 17880034b4 | |||
| 310eff87de | |||
| d1da272f21 | |||
| 55255072de | |||
| 97524ccda0 | |||
| 2be02aec24 | |||
| 666e7324bc | |||
| 28359b6bd6 | |||
| 098b5c5485 | |||
| d9620d54e7 | |||
| 6594686062 | |||
| 5f29b23c70 | |||
| 9a31ed8f67 | |||
| afdd438818 | |||
| ef2443f2fa | |||
| ec10063ab9 | |||
| 69364e7ddb | |||
| bc257a8f5e | |||
| 0ccf35c29a | |||
| 2b076ce94f | |||
| d30cb941c5 | |||
| e528bbcfb5 | |||
| 76cfe25774 | |||
| 5ae6578b83 | |||
| 6c2e3e099e | |||
| 4e070ab14c | |||
| 4bd0353e2f | |||
| 2c9ce286d7 | |||
| 64784c41ed | |||
| f8f784c0b0 | |||
| be1653cc51 | |||
| 16418c020b | |||
| bf061f6d56 | |||
| cc8c33c848 | |||
| b4ef20a970 | |||
| 7548209ed1 | |||
| bfe6f805a8 | |||
| ebd932134d | |||
| f63e7e77d1 | |||
| b152653337 | |||
| 8467404116 | |||
| 2fafbc1b15 | |||
| 197dc14e78 | |||
| 8752e14dee | |||
| a5ab764c04 | |||
| 1e520cbbfc | |||
| 46643653bf | |||
| 3355500414 | |||
| 94e033c5e8 | |||
| 245dd60bb4 | |||
| 7faf5ff926 | |||
| 8831e33e53 | |||
| 65ece5951e | |||
| 3687dc5d1e | |||
| 819d1d7332 | |||
| c84ac0f7e4 | |||
| b423c066f9 | |||
| e55138742f | |||
| 5583691ae2 | |||
| 5b59088a71 | |||
| ce9e496873 | |||
| c34e7eea30 | |||
| d8a669e6fc | |||
| 889ff02027 | |||
| d4f3830eba | |||
| bba648dc66 | |||
| 99511bb2d7 | |||
| db02edc371 | |||
| d59bc40f4a | |||
| c3eb3f015e | |||
| 457008fab7 | |||
| f6d3c5628d | |||
| 79f8baadd3 | |||
| f3bf048221 | |||
| ead1b9a533 | |||
| 131f48bc38 | |||
| 78ffc619ea | |||
| d9bd94ed3c | |||
| b96c1338c9 | |||
| ee0083cdc7 | |||
| b88c9ef6a9 | |||
| 2ded74bbd6 | |||
| 106f9fa99a | |||
| b97c0bd230 | |||
| e76e1f41b6 | |||
| e09beafe99 | |||
| 903e80a756 | |||
| 5cc85f00c5 | |||
| aecd62eb9a | |||
| 337e9c8df0 | |||
| b5274bdd95 |
@@ -0,0 +1,2 @@
|
||||
# Include RST files in language statistics on GitHub.
|
||||
*.rst linguist-detectable
|
||||
@@ -1,11 +0,0 @@
|
||||
# All changes to technical files (build environment and Sphinx extensions) have to be approved
|
||||
/extensions/ @odoo/doc-review
|
||||
.gitignore @odoo/doc-review
|
||||
commit_template.txt @odoo/doc-review
|
||||
conf.py @odoo/doc-review
|
||||
Makefile @odoo/doc-review
|
||||
requirements.txt @odoo/doc-review
|
||||
|
||||
# All changes to legal material have to be approved
|
||||
/content/legal/ @odoo/legal
|
||||
/content/legal.rst @odoo/legal
|
||||
@@ -1,10 +1,10 @@
|
||||
*.pyc
|
||||
.*
|
||||
*.mo
|
||||
.*
|
||||
!.gitattributes
|
||||
|
||||
# Sphinx build files
|
||||
_build/
|
||||
extensions/odoo_theme/static/style.css
|
||||
|
||||
# Dependencies
|
||||
odoo
|
||||
|
||||
@@ -1,63 +1,63 @@
|
||||
[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: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: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:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
source_lang = en
|
||||
source_lang = en
|
||||
|
||||
|
||||
@@ -5,19 +5,28 @@ ifndef WORKERS
|
||||
WORKERS = auto
|
||||
endif
|
||||
|
||||
ifndef BUILD_DIR
|
||||
BUILD_DIR = _build
|
||||
endif
|
||||
|
||||
ifndef CURRENT_LANG
|
||||
CURRENT_LANG = en
|
||||
endif
|
||||
|
||||
SPHINX_BUILD = sphinx-build
|
||||
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) \
|
||||
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
|
||||
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
|
||||
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
|
||||
-j $(WORKERS)
|
||||
SOURCE_DIR = content
|
||||
BUILD_DIR = _build
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/14.0
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
@@ -33,21 +42,21 @@ 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..."
|
||||
rm -rf $(BUILD_DIR)/*
|
||||
rm extensions/odoo_theme/static/style.css
|
||||
@echo "Cleaning finished."
|
||||
|
||||
html: extensions/odoo_theme/static/style.css
|
||||
html: $(HTML_BUILD_DIR)/_static/style.css
|
||||
@echo "Starting build..."
|
||||
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b html $(SPHINXOPTS) $(SOURCE_DIR) $(HTML_BUILD_DIR)
|
||||
@echo "Build finished."
|
||||
|
||||
# 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
|
||||
@@ -60,9 +69,10 @@ gettext:
|
||||
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) locale/sources
|
||||
@echo "Generation finished."
|
||||
|
||||
extensions/odoo_theme/static/style.css: extensions/odoo_theme/static/style.scss extensions/odoo_theme/static/scss/*.scss
|
||||
$(HTML_BUILD_DIR)/_static/style.css: extensions/odoo_theme/static/style.scss extensions/odoo_theme/static/scss/*.scss
|
||||
@echo "Compiling stylesheets..."
|
||||
pysassc $(subst .css,.scss,$@) $@
|
||||
mkdir -p $(HTML_BUILD_DIR)/_static
|
||||
python3 -m pysassc extensions/odoo_theme/static/style.scss $(HTML_BUILD_DIR)/_static/style.css
|
||||
@echo "Compilation finished."
|
||||
|
||||
#=== Development and debugging rules ===#
|
||||
@@ -70,6 +80,9 @@ extensions/odoo_theme/static/style.css: extensions/odoo_theme/static/style.scss
|
||||
fast: SPHINXOPTS += -A collapse_menu=True
|
||||
fast: html
|
||||
|
||||
static: extensions/odoo_theme/static/style.css
|
||||
cp -r extensions/odoo_theme/static/* _build/html/_static/
|
||||
cp -r static/* _build/html/_static/
|
||||
static: $(HTML_BUILD_DIR)/_static/style.css
|
||||
cp -r extensions/odoo_theme/static/* $(HTML_BUILD_DIR)/_static/
|
||||
cp -r static/* $(HTML_BUILD_DIR)/_static/
|
||||
|
||||
test:
|
||||
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer $(SOURCE_DIR)/services redirects
|
||||
|
||||
@@ -4,47 +4,33 @@
|
||||
|
||||
### Requirements
|
||||
|
||||
- [Git](https://www.odoo.com/documentation/14.0/contributing/documentation.html#install-git)
|
||||
- [Python 3.6, 3.7, or 3.8](https://www.odoo.com/documentation/14.0/contributing/documentation.html#python)
|
||||
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/14.0/requirements.txt).
|
||||
- [Make](https://www.odoo.com/documentation/14.0/contributing/documentation.html#make)
|
||||
- A local copy of the [odoo/odoo repository in 14.0](https://github.com/odoo/odoo/tree/14.0) (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)
|
||||
|
||||
### 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/14.0/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` repository 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/14.0/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.
|
||||
|
||||
If you have a pull request that is ready for review, request one from the
|
||||
[odoo/doc-review](https://github.com/orgs/odoo/teams/doc-review) team.
|
||||
|
||||
[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
|
||||
#
|
||||
#
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import re
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from pygments.lexers import JsonLexer, XmlLexer
|
||||
from sphinx.util import logging
|
||||
import docutils
|
||||
import sphinx
|
||||
from pygments.lexers import JsonLexer, XmlLexer
|
||||
from sphinx.ext import graphviz
|
||||
from sphinx.util import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -16,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 = '14.0'
|
||||
version = release = 'master'
|
||||
|
||||
# `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'
|
||||
@@ -48,47 +65,86 @@ exclude_patterns = [
|
||||
# See https://docutils.sourceforge.io/docs/ref/rst/roles.html#standard-roles for other roles.
|
||||
default_role = 'literal'
|
||||
|
||||
|
||||
# Whether scaled down images should be be wrapped in a `<a/>` tag linking to the image file or not.
|
||||
html_scaled_image_link = False
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text
|
||||
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
|
||||
extension_dir = Path('extensions')
|
||||
sys.path.insert(0, str(extension_dir.absolute()))
|
||||
|
||||
# Search for the directory of odoo sources to know whether autodoc should be used on the dev doc
|
||||
odoo_dir = Path('odoo')
|
||||
odoo_sources_candidate_dirs = (Path('odoo'), Path('../odoo'))
|
||||
odoo_sources_dirs = [
|
||||
d for d in odoo_sources_candidate_dirs if d.is_dir() and (d / 'odoo-bin').exists()
|
||||
]
|
||||
odoo_dir_in_path = False
|
||||
if not odoo_dir.is_dir():
|
||||
|
||||
if not odoo_sources_dirs:
|
||||
_logger.warning(
|
||||
f"Could not find Odoo sources directory at {odoo_dir.absolute()}.\n"
|
||||
f"The 'Developer' documentation will be built but autodoc directives will be skipped.\n"
|
||||
f"In order to fully build the 'Developer' documentation, clone the repository with "
|
||||
f"`git clone https://github.com/odoo/odoo` or create a symbolink link."
|
||||
"Could not find Odoo sources directory in neither of the following folders:\n"
|
||||
"%(dir_list)s\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/odoo` or create a symbolic link.",
|
||||
{'dir_list': '\n'.join([f'\t- {d.resolve()}' for d in odoo_sources_candidate_dirs])},
|
||||
)
|
||||
else:
|
||||
sys.path.insert(0, str(odoo_dir.absolute()))
|
||||
if (3, 6) < sys.version_info < (3, 7):
|
||||
# Running odoo needs python 3.7 min but monkey patch version_info to be compatible with 3.6.
|
||||
sys.version_info = (3, 7, 0)
|
||||
odoo_dir = odoo_sources_dirs[0].resolve()
|
||||
source_read_replace_vals['ODOO_RELPATH'] = '/../' + str(odoo_sources_dirs[0])
|
||||
sys.path.insert(0, str(odoo_dir))
|
||||
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 if 'alpha' not in odoo_release.version else 'master'
|
||||
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(
|
||||
f"Found Odoo sources directory but with version '{odoo_version}' incompatible with "
|
||||
f"documentation version '{version}'.\n"
|
||||
f"The 'Developer' documentation will be built but autodoc directives will be skipped.\n"
|
||||
f"In order to fully build the 'Developer' documentation, checkout the matching branch"
|
||||
f" with `cd odoo && git checkout {version}`."
|
||||
"Found Odoo sources in %(directory)s but with version '%(odoo_version)s' incompatible "
|
||||
"with documentation version '%(doc_version)s'.\n"
|
||||
"The 'Developer' documentation will be built but autodoc directives will be skipped.\n"
|
||||
"In order to fully build the 'Developer' documentation, checkout the matching branch"
|
||||
" with `cd odoo && git checkout %(doc_version)s`.",
|
||||
{'directory': odoo_dir, 'odoo_version': odoo_version, 'doc_version': version},
|
||||
)
|
||||
else:
|
||||
_logger.info(f"Found Odoo sources directory matching documentation version {release}.")
|
||||
_logger.info(
|
||||
"Found Odoo sources in %(directory)s matching documentation version '%(version)s'.",
|
||||
{'directory': odoo_dir, 'version': release},
|
||||
)
|
||||
odoo_dir_in_path = True
|
||||
|
||||
# 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.
|
||||
model_references = {
|
||||
'account.account.type': 'addons/account/data/data_account_type.xml',
|
||||
'res.country': 'odoo/addons/base/data/res_country_data.xml',
|
||||
'res.currency': 'odoo/addons/base/data/res_currency_data.xml',
|
||||
}
|
||||
|
||||
# The Sphinx extensions to use, as module names.
|
||||
# They can be extensions coming with Sphinx (named 'sphinx.ext.*') or custom ones.
|
||||
extensions = [
|
||||
# Parse Python docstrings (autodoc, automodule, autoattribute directives)
|
||||
'sphinx.ext.autodoc' if odoo_dir_in_path else 'autodoc_placeholder',
|
||||
|
||||
# Link sources in other projects (used to build the reference doc)
|
||||
'sphinx.ext.intersphinx',
|
||||
|
||||
@@ -101,29 +157,45 @@ extensions = [
|
||||
# Youtube and Vimeo videos integration (youtube, vimeo directives)
|
||||
'embedded_video',
|
||||
|
||||
'exercise_admonition',
|
||||
'custom_admonitions',
|
||||
|
||||
# Redirection generator
|
||||
'redirects',
|
||||
|
||||
# Code switcher (switcher and case directives)
|
||||
'switcher',
|
||||
# Content tabs
|
||||
'sphinx_tabs.tabs',
|
||||
|
||||
# Cards
|
||||
'cards',
|
||||
|
||||
# Spoilers
|
||||
'spoilers',
|
||||
|
||||
# Strange html domain logic used in memento pages
|
||||
'html_domain',
|
||||
]
|
||||
|
||||
if odoo_dir_in_path:
|
||||
# GitHub links generation
|
||||
extensions += [
|
||||
'sphinx.ext.linkcode',
|
||||
'github_link',
|
||||
# Parse Python docstrings (autodoc, automodule, autoattribute directives)
|
||||
'sphinx.ext.autodoc',
|
||||
'autodoc_field',
|
||||
]
|
||||
else:
|
||||
extensions += [
|
||||
'autodoc_placeholder',
|
||||
]
|
||||
extensions.append('sphinx.ext.graphviz' if shutil.which('dot') else 'graphviz_placeholder')
|
||||
|
||||
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'
|
||||
@@ -137,19 +209,40 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
sphinx.util.i18n.docname_to_domain
|
||||
) = lambda docname, compact: docname.split('/')[1 if docname.startswith('applications/') else 0]
|
||||
|
||||
supported_languages = {
|
||||
'de': 'Deutsch',
|
||||
'en': 'English',
|
||||
'es': 'Español',
|
||||
'fr': 'Français',
|
||||
'nl': 'Nederlands',
|
||||
'pt_BR': 'Português (BR)',
|
||||
'uk': 'українська',
|
||||
'zh_CN': '简体中文',
|
||||
# The version names that should be shown in the version switcher, if the config option `versions`
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-16.3': "Odoo Online",
|
||||
'saas-16.2': "Odoo Online",
|
||||
'saas-16.1': "Odoo Online",
|
||||
'16.0': "Odoo 16",
|
||||
'saas-15.2': "Odoo Online",
|
||||
'15.0': "Odoo 15",
|
||||
'14.0': "Odoo 14",
|
||||
'13.0': "Odoo 13",
|
||||
}
|
||||
|
||||
# The specifications of redirect rules used by the redirects extension.
|
||||
redirects_file = 'redirects.txt'
|
||||
# The language names that should be shown in the language switcher, if the config option `languages`
|
||||
# is populated. If a language is passed to `languages` but is not listed here, it will not be shown.
|
||||
languages_names = {
|
||||
'de': 'DE',
|
||||
'en': 'EN',
|
||||
'es': 'ES',
|
||||
'fr': 'FR',
|
||||
'it': 'IT',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'uk': 'UA',
|
||||
'zh_CN': 'ZH (CN)',
|
||||
'zh_TW': 'ZH (TW)'
|
||||
}
|
||||
|
||||
# The directory in which files holding redirect rules used by the 'redirects' extension are listed.
|
||||
redirects_dir = 'redirects/'
|
||||
|
||||
sphinx_tabs_disable_tab_closing = True
|
||||
sphinx_tabs_disable_css_loading = True
|
||||
|
||||
#=== Options for HTML output ===#
|
||||
|
||||
@@ -170,8 +263,8 @@ html_favicon = os.path.join(html_theme_path[0], html_theme, 'static', 'img', 'fa
|
||||
# They are copied after the builtin static files, so a file named "default.css" will overwrite the
|
||||
# builtin "default.css".
|
||||
html_static_path = ['static']
|
||||
html_add_permalinks = '¶' # Sphinx < 3.5
|
||||
html_permalinks = True # Sphinx >= 3.5
|
||||
html_permalinks = True
|
||||
|
||||
# Additional JS & CSS files that can be imported with the 'custom-js' and 'custom-css' metadata.
|
||||
# Lists are empty because the files are specified in extensions/themes.
|
||||
html_js_files = []
|
||||
@@ -193,7 +286,7 @@ latex_elements = {
|
||||
'tableofcontents': '', # no TOC
|
||||
|
||||
# Output manually in latex docs
|
||||
'releasename': '14.0',
|
||||
'releasename': release,
|
||||
}
|
||||
|
||||
latex_additional_files = ['static/latex/odoo.sty']
|
||||
@@ -213,7 +306,7 @@ 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'),
|
||||
@@ -225,14 +318,38 @@ latex_documents = [
|
||||
'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/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'
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
latex_show_urls = 'True'
|
||||
|
||||
# https://github.com/sphinx-doc/sphinx/issues/4054#issuecomment-329097229
|
||||
def source_read_replace(app, docname, source):
|
||||
"""Substitute parts of strings with computed values.
|
||||
|
||||
Since the RST substitution is not working everywhere, i.e. in directives'
|
||||
options, we need to be able to input those values when reading the sources.
|
||||
This is using the config `source_read_replace_vals`, mapping a name to its
|
||||
replacement. This will look for the name surrounded by curly braces in the source.
|
||||
|
||||
Meant to be connected to the `source-read` event.
|
||||
"""
|
||||
result = source[0]
|
||||
for key in app.config.source_read_replace_vals:
|
||||
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
|
||||
@@ -241,12 +358,34 @@ def setup(app):
|
||||
app.add_config_value('versions', None, 'env')
|
||||
app.add_config_value('languages', None, 'env')
|
||||
app.add_config_value('is_remote_build', None, 'env') # Whether the build is remotely deployed
|
||||
app.add_config_value('source_read_replace_vals', {}, 'env')
|
||||
app.connect('source-read', source_read_replace)
|
||||
|
||||
app.add_lexer('json', JsonLexer)
|
||||
app.add_lexer('xml', XmlLexer)
|
||||
|
||||
app.connect('html-page-context', _generate_alternate_urls)
|
||||
|
||||
# Add a `condition` option on directives to ignore them based on config values
|
||||
app.add_config_value('odoo_dir_in_path', None, 'env')
|
||||
def context_eval(expr):
|
||||
return eval(expr, {confval.name: confval.value for confval in app.config})
|
||||
|
||||
def patch(to_patch):
|
||||
to_patch.option_spec['condition'] = context_eval
|
||||
original_run = to_patch.run
|
||||
def new_run(self):
|
||||
if not self.options.get('condition', True):
|
||||
return []
|
||||
return original_run(self)
|
||||
to_patch.run = new_run
|
||||
|
||||
for to_patch in (
|
||||
sphinx.directives.code.LiteralInclude,
|
||||
docutils.parsers.rst.directives.tables.CSVTable,
|
||||
):
|
||||
patch(to_patch)
|
||||
|
||||
|
||||
def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
""" Add keys of required alternate URLs for the current document in the rendering context.
|
||||
@@ -278,15 +417,18 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
|
||||
The entry 'version' is added by Sphinx in the rendering context.
|
||||
"""
|
||||
# If the list of versions is not set, assume that the project has no alternate version
|
||||
_alternate_versions = app.config.versions and app.config.versions.split(',') or []
|
||||
context['alternate_versions'] = [
|
||||
(_alternate_version, _build_url(_version=_alternate_version))
|
||||
for _alternate_version in sorted(_alternate_versions, reverse=True)
|
||||
if _alternate_version != version and (
|
||||
_alternate_version != 'master' or pagename.startswith('developer')
|
||||
)
|
||||
]
|
||||
context['version_display_name'] = versions_names[version]
|
||||
|
||||
# If the list of versions is not set, assume the project has no alternate version
|
||||
_provided_versions = app.config.versions and app.config.versions.split(',') or []
|
||||
|
||||
# Map alternate versions to their display names and URLs.
|
||||
context['alternate_versions'] = []
|
||||
for _alternate_version, _display_name in versions_names.items():
|
||||
if _alternate_version in _provided_versions and _alternate_version != version:
|
||||
context['alternate_versions'].append(
|
||||
(_display_name, _build_url(_alternate_version))
|
||||
)
|
||||
|
||||
def _localize():
|
||||
""" Add the pairs of (lang, code, url) for the current document in the rendering context.
|
||||
@@ -296,20 +438,28 @@ 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'] = supported_languages.get(_current_lang)
|
||||
# Replace the context value by its upper-cased value ("FR" instead of "fr")
|
||||
context['language'] = languages_names.get(_current_lang)
|
||||
context['language_code'] = _current_lang
|
||||
|
||||
# If the list of languages is not set, assume that the project has no alternate language
|
||||
_alternate_languages = app.config.languages and app.config.languages.split(',') or []
|
||||
context['alternate_languages'] = [
|
||||
(
|
||||
supported_languages.get(_alternate_lang),
|
||||
_alternate_lang.split('_')[0] if _alternate_lang != 'en' else 'x-default',
|
||||
_build_url(_lang=_alternate_lang),
|
||||
)
|
||||
for _alternate_lang in _alternate_languages
|
||||
if _alternate_lang in supported_languages and _alternate_lang != _current_lang
|
||||
]
|
||||
_provided_languages = app.config.languages and app.config.languages.split(',') or []
|
||||
|
||||
# Map alternate languages to their display names and URLs.
|
||||
context['alternate_languages'] = []
|
||||
for _alternate_lang, _display_name in languages_names.items():
|
||||
if _alternate_lang in _provided_languages and _alternate_lang != _current_lang:
|
||||
context['alternate_languages'].append(
|
||||
(
|
||||
_display_name,
|
||||
_alternate_lang.split('_')[0] if _alternate_lang != 'en' else 'x-default',
|
||||
_build_url(_lang=_alternate_lang),
|
||||
)
|
||||
)
|
||||
|
||||
# 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:
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
==============
|
||||
Administration
|
||||
==============
|
||||
====================
|
||||
Install and Maintain
|
||||
====================
|
||||
|
||||
These guides provide instructions on how to install, maintain and upgrade Odoo databases.
|
||||
|
||||
.. seealso::
|
||||
:doc:`History of Versions <administration/maintain/supported_versions>`
|
||||
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
administration/install
|
||||
administration/deployment
|
||||
administration/update
|
||||
administration/db_upgrade
|
||||
administration/maintain
|
||||
administration/upgrade
|
||||
administration/odoo_sh
|
||||
administration/db_management
|
||||
administration/enterprise
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
===================
|
||||
Database Management
|
||||
===================
|
||||
|
||||
|
||||
.. toctree::
|
||||
|
||||
db_management/db_online
|
||||
db_management/db_premise
|
||||
db_management/hosting_changes
|
||||
@@ -1,233 +0,0 @@
|
||||
|
||||
.. _db_online:
|
||||
|
||||
==========================
|
||||
Online Database management
|
||||
==========================
|
||||
|
||||
To manage your databases, access the `database management page
|
||||
<https://www.odoo.com/my/databases>`__ (you will have to sign in). Then click
|
||||
on the `Manage Your Databases <https://www.odoo.com/my/databases/manage>`__
|
||||
button.
|
||||
|
||||
.. image:: media/databases.png
|
||||
:align: center
|
||||
|
||||
Make sure you are connected as the administrator of the database you
|
||||
want to manage - many operations depends on identifying you remotely to that
|
||||
database.
|
||||
|
||||
Several actions are available:
|
||||
|
||||
.. image:: media/db_buttons.png
|
||||
:align: center
|
||||
|
||||
* :ref:`Upgrade <upgrade_button>`
|
||||
Upgrade your database to the latest Odoo version to enjoy cutting-edge
|
||||
features
|
||||
* :ref:`Duplicate <duplicate_online>`
|
||||
Make an exact copy of your database, if you want
|
||||
to try out new apps or new flows without compromising
|
||||
your daily operations
|
||||
* :ref:`Rename <rename_online_database>`
|
||||
Rename your database (and its URL)
|
||||
* **Backup**
|
||||
Download an instant backup of your database; note that we
|
||||
back up databases daily according to our Odoo Cloud SLA
|
||||
* :ref:`Domains <custom_domain>`
|
||||
Configure custom domains to access your
|
||||
database via another URL
|
||||
* :ref:`Delete <delete_online_database>`
|
||||
Delete a database instantly
|
||||
* Contact Support
|
||||
Access our `support page <https://www.odoo.com/help>`__
|
||||
with the correct database already selected
|
||||
|
||||
.. _upgrade_button:
|
||||
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
.. warning:: Upgrading your database to a newer version of Odoo is a complex operation
|
||||
that require time and caution. It is extremely important that you
|
||||
fully test the process before upgrading your production database.
|
||||
|
||||
Odoo releases new versions regularly (at least once a year), and upgrading your
|
||||
database to enjoy new Odoo features is part of the Odoo Online experience.
|
||||
|
||||
The upgrade process can take some time, especially if you use multiple apps or
|
||||
apps that manage sensitive data (e.g. Accounting, Inventory, etc.). In general,
|
||||
the 'smaller' the database, the quickest the upgrade. 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.
|
||||
|
||||
Unfortunately, it is impossible to give time estimates for every upgrade request,
|
||||
since Odoo.com will test manually every database upgrade at least once and will
|
||||
need to correct/adapt changes made to the standard Odoo Apps (e.g. through Studio
|
||||
or through a Success Pack) on a case-by-case basis. This can make the process
|
||||
slower, since requests are treated in the order they arrive. This is especially
|
||||
true in the months following the release of a new major version, which can lengthen
|
||||
the upgrade delay significantly.
|
||||
|
||||
The upgrade process is quite simple from your point of view:
|
||||
|
||||
1. You request a test upgrade
|
||||
2. Once all tests have been validated **by you**, you upgrade your actual database
|
||||
|
||||
The process to request a test or a production (*actual*) upgrade is the same.
|
||||
|
||||
First, make sure to be connected to the database you want to upgrade and access the
|
||||
`database management page <https://www.odoo.com/my/databases>`__.
|
||||
|
||||
.. note:: You have to have an active session with access to the Settings app
|
||||
in the database you want to upgrade for the button to be visible.
|
||||
|
||||
On the line of the database you want to upgrade, click
|
||||
on the "Cog" menu. If an newer version of Odoo is available, you will see an 'Upgrade'
|
||||
button.
|
||||
|
||||
.. image:: media/upgrade1.png
|
||||
:align: center
|
||||
|
||||
You have the possibility to choose the target version of the upgrade. By default,
|
||||
we select the highest available version available for your database; if you were
|
||||
already in the process of testing an upgrade, we will automatically select the
|
||||
version you were already testing (even if we released a more recent version during
|
||||
your tests).
|
||||
|
||||
.. image:: media/upgrade_test.png
|
||||
:align: center
|
||||
|
||||
By clicking on the "Test upgrade" button, an upgrade request will be generated.
|
||||
Only one request can be made at time for each database; if a request has already
|
||||
been made, you will see an 'Upgrade Queued' note instead and asking another
|
||||
request will not be possible.
|
||||
|
||||
A test upgrade will create a copy of your database, upgrade it and make it
|
||||
available to you automatically once successful. If this is the first test you
|
||||
request for this particular database, a manual testing phase will be done by
|
||||
Odoo.com - this could take time (up to several weeks). Subsequent requests
|
||||
will not go through that manual testing step and will usually be made
|
||||
available in a few hours. Once the test database is available, you should
|
||||
receive an e-mail with the URL of the test database.
|
||||
|
||||
**Testing your database is the most important step of the upgrade process!**
|
||||
Even though we test all upgrades manually, we do not know your work processes.
|
||||
A change in standard workflows of Odoo in new versions might require you to
|
||||
change internal processes, or some of the customizations you made through Odoo
|
||||
Studio might not work properly. *It is up to you to make sure that everything
|
||||
works as it should!* You can report issues with your test database through our
|
||||
`Support page <https://www.odoo.com/help>`__.
|
||||
|
||||
Make sure to do one last test of your upgrade right before the final upgrade
|
||||
(e.g. the day before) to ensure everything will run smoothly. Downgrading is
|
||||
not possible and post-poning an upgrade is always easier than being prevented
|
||||
to work by an upgrade issue after the fact!
|
||||
|
||||
Once you are ready and you have validated all your tests, you can click
|
||||
again on the Upgrade button and confirm by clicking on Upgrade (the button
|
||||
with the little rocket!) to switch your production database to the new version.
|
||||
Your database will then be taken offline within the next 10 minutes and will be
|
||||
upgraded automatically; you receive a confirmation
|
||||
e-mail once the process is completed.
|
||||
|
||||
.. image:: media/upgrade_prod.png
|
||||
:align: center
|
||||
|
||||
.. warning::
|
||||
Your database will be taken offline during the upgrade (usually between 30min up to several hours
|
||||
for big databases), so make sure to plan your migration during non-business hours.
|
||||
|
||||
.. _duplicate_online:
|
||||
|
||||
Duplicating a database
|
||||
======================
|
||||
|
||||
.. note:: Database duplication, renaming, custom DNS, etc. is not available
|
||||
for trial databases on our Online platform. Paid Databases and "One App
|
||||
Free" database can duplicate without problem.
|
||||
|
||||
|
||||
In the line of the database you want to duplicate, you will have a few
|
||||
buttons. To duplicate your database, just click **Duplicate**. You will
|
||||
have to give a name to your duplicate, then click **Duplicate Database**.
|
||||
|
||||
.. image:: media/db_duplicate.png
|
||||
:align: center
|
||||
|
||||
.. danger:: If you do not check the "For testing purposes" checkbox when
|
||||
duplicating a database, all external communication will remain active:
|
||||
|
||||
* Emails are sent
|
||||
|
||||
* Payments are processed (in the e-commerce or Subscriptions apps, for
|
||||
example)
|
||||
|
||||
* Delivery orders (shipping providers) are sent
|
||||
|
||||
* Etc.
|
||||
|
||||
Make sure to check the checkbox "For testing purposes" if you want these
|
||||
behaviours to be disabled.
|
||||
|
||||
After a few seconds, you will be logged in your duplicated database.
|
||||
Notice that the url uses the name you chose for your duplicated
|
||||
database.
|
||||
|
||||
.. note::
|
||||
Duplicate databases expire automatically after 15 days.
|
||||
|
||||
.. image:: media/dup_expires.png
|
||||
:align: center
|
||||
|
||||
.. _rename_online_database:
|
||||
|
||||
Rename a Database
|
||||
===================
|
||||
|
||||
To rename your database, make sure you are connected to the database you want
|
||||
to rename, access the `database management page <https://www.odoo.com/my/databases>`__
|
||||
and click **Rename**. You will have to give a new name to your database,
|
||||
then click **Rename Database**.
|
||||
|
||||
.. image:: media/rename.png
|
||||
:align: center
|
||||
|
||||
.. _delete_online_database:
|
||||
|
||||
Deleting a Database
|
||||
===================
|
||||
|
||||
You can only delete databases of which you are the administrator.
|
||||
|
||||
.. danger:: When you delete your database all the data will be permanently lost.
|
||||
The deletion is instant and for all the Users. We advise you to do an
|
||||
instant backup of your database before deleting it, since the last automated
|
||||
daily backup may be several hours old at that point.
|
||||
|
||||
|
||||
From the `database management page <https://www.odoo.com/my/databases>`__,
|
||||
on the line of the database you want to delete, click on the "Delete" button.
|
||||
|
||||
.. image:: media/delete_button.png
|
||||
:align: center
|
||||
|
||||
|
||||
Read carefully the warning message that will appear and proceed only if you
|
||||
fully understand the implications of deleting a database:
|
||||
|
||||
.. image:: media/delete_warning.png
|
||||
:align: center
|
||||
|
||||
After a few seconds, the database will be deleted and the page will
|
||||
reload automatically.
|
||||
|
||||
.. note::
|
||||
* If you need to re-use this database name, it will be immediately available.
|
||||
|
||||
* It is not possible to delete a database if it is expired or linked
|
||||
to a Subscription. In these cases contact
|
||||
`Odoo Support <https://www.odoo.com/help>`__
|
||||
|
||||
* If you want to delete your Account, please contact
|
||||
`Odoo Support <https://www.odoo.com/help>`__
|
||||
@@ -1,179 +0,0 @@
|
||||
|
||||
.. _db_premise:
|
||||
|
||||
===============================
|
||||
On-premises 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 Epiration 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:: media/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:: media/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:: media/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:: media/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:: media/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:: media/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:: media/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:: media/db_uuid.png
|
||||
:align: center
|
||||
@@ -1,62 +0,0 @@
|
||||
|
||||
.. _db_management/hosting_changes:
|
||||
|
||||
===============
|
||||
Hosting Changes
|
||||
===============
|
||||
|
||||
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
|
||||
===============================
|
||||
|
||||
.. warning:: Odoo Online is not compatible with **non-standard apps**.
|
||||
|
||||
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!
|
||||
|
||||
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
|
||||
===========================
|
||||
|
||||
.. warning:: Odoo Online is not compatible with **non-standard apps**.
|
||||
|
||||
1. Uninstall all the **non-standard apps**: test it in a staging build first, then do it in your production build.
|
||||
2. **If you have time constraints, contact us earlier to schedule the transfer.**
|
||||
3. `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).
|
||||
4. 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.
|
||||
5. It's done!
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 35 KiB |
@@ -1,415 +0,0 @@
|
||||
|
||||
.. |assistance-contact| replace::
|
||||
If you need Odoo assistance on this matter, please contact your Odoo Account Manager or contact
|
||||
our `Sales department`_.
|
||||
.. _Sales department: mailto:sales@odoo.com
|
||||
|
||||
.. _db-upgrade:
|
||||
|
||||
=======
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
.. _db-upgrade/overview:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
.. _db-upgrade/process:
|
||||
|
||||
The upgrade process
|
||||
-------------------
|
||||
|
||||
This documentation is for our *On-Premise* (self-hosted) and *Odoo.sh* customers. If you are hosted
|
||||
Online, please check our :ref:`instruction page for our Online (SaaS) customers <upgrade_button>`.
|
||||
|
||||
.. _db-upgrade/definition:
|
||||
|
||||
Definition
|
||||
~~~~~~~~~~
|
||||
|
||||
An upgrade is switching to a newer version of Odoo (e.g., Odoo 13.0 to Odoo 14.0)
|
||||
|
||||
An upgrade does not cover:
|
||||
|
||||
* changing :ref:`Editions <db-upgrade/faq/editions-change>` (i.e., Community to Enterprise edition)
|
||||
* switching :ref:`hosting type <db-upgrade/faq/hosting-types-switch>` (i.e., On-Premise to Online or
|
||||
Odoo.sh)
|
||||
* migration from another ERP to Odoo
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _db-upgrade/process-workflow:
|
||||
|
||||
Process workflow
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The upgrade process in a nutshell:
|
||||
|
||||
#. You create a test upgrade request.
|
||||
#. | The request is processed by Odoo:
|
||||
| This happens via an automated process that runs the database through an upgrade script and
|
||||
takes between 20 and 120 minutes. Only if an issue(s) arises will we have to intervene
|
||||
manually and adjust the script specifically to your database until the upgrade succeeds.
|
||||
#. Odoo delivers a test database.
|
||||
#. You test your database for possible discrepancies (see :ref:`db-upgrade/test-guidance`)
|
||||
#. If there are any discrepancies, you report them to the Upgrade support team via the
|
||||
:ref:`Help portal <db-upgrade/test-assistance>`.
|
||||
#. We will fix the issues and send you a new test database.
|
||||
#. Once you 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.
|
||||
|
||||
.. _db-upgrade/service-level:
|
||||
|
||||
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 service at all times.
|
||||
|
||||
The upgrade of:
|
||||
|
||||
* standard applications
|
||||
* Studio customization (as long as the 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 the technical conversion and adaptation of your database (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 upgrade of your own :ref:`custom modules
|
||||
<db-upgrade/faq/custom-modules>`
|
||||
* `Training <https://www.odoo.com/learn>`_ on the new version
|
||||
|
||||
You can get more information about your Enterprise Licence on our :ref:`Odoo Enterprise Subscription
|
||||
Agreement <upgrade>` page.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _db-upgrade/get-started:
|
||||
|
||||
Get started
|
||||
===========
|
||||
|
||||
The upgrade process varies depending on where your database is hosted.
|
||||
|
||||
.. _db-upgrade/online:
|
||||
|
||||
Online (SaaS)
|
||||
-------------
|
||||
|
||||
If you are hosted Online, please check our :ref:`instruction page for our Online (SaaS) customers
|
||||
<upgrade_button>`.
|
||||
|
||||
.. _db-upgrade/odoo-sh:
|
||||
|
||||
Odoo.sh
|
||||
-------
|
||||
|
||||
If you are Odoo.sh hosted, check our :doc:`specific instructions to be able to upgrade
|
||||
<odoo_sh/advanced/upgrade_your_database>`.
|
||||
|
||||
.. _db-upgrade/on-premise:
|
||||
|
||||
On-Premise
|
||||
----------
|
||||
|
||||
There are two possibilities:
|
||||
|
||||
#. Via the interface of our `website form <https://upgrade.odoo.com>`_
|
||||
#. | For technically-advanced users and partners, via the following command line (to be used on the
|
||||
machine where your database is hosted):
|
||||
| ``python <(curl -s beta.upgrade.odoo.com/upgrade) test -d <your db name> -t 14.0``
|
||||
|
||||
What does it do?
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The above command will dump your database to a file, then send it to the upgrade platform for
|
||||
upgrade, displaying you the live logs, then restore the upgraded database back on your server as a
|
||||
duplicate test database.
|
||||
|
||||
.. _db-upgrade/steps:
|
||||
|
||||
Steps
|
||||
=====
|
||||
|
||||
.. _db-upgrade/steps-test:
|
||||
|
||||
The testing phase
|
||||
-----------------
|
||||
|
||||
.. _db-upgrade/test-process:
|
||||
|
||||
Test process
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Also referred to as the pre-production phase, the test 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 often as you
|
||||
want (one at a time).
|
||||
|
||||
Once you receive your upgraded test database, you should check that all data, processes and
|
||||
functionality are still correct and working as expected.
|
||||
|
||||
If you do find discrepancies, you'll be able to:
|
||||
|
||||
* | :ref:`Report your issues <db-upgrade/test-assistance>`
|
||||
| and/or
|
||||
* Ask for a new :ref:`test request <db-upgrade/test-db-request>` after the reported issues have
|
||||
been fixed in the upgrade script.
|
||||
|
||||
When you do not find any discrepancies, you'll be able to:
|
||||
|
||||
* Move on to the upgrade of your :ref:`production database <db-upgrade/production-live>`.
|
||||
|
||||
.. _db-upgrade/test-db-request:
|
||||
|
||||
Request a test database
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
When filling the `website form <https://upgrade.odoo.com>`_, select *Testing* purpose.
|
||||
|
||||
.. image:: media/db-upgrade-test-purpose.png
|
||||
:align: center
|
||||
:alt: Selection of the "Testing" purpose in the upgrade form on Odoo
|
||||
|
||||
.. _db-upgrade/test-guidance:
|
||||
|
||||
Test guidance
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Every business and organization has its own operational needs and will have to test its specific
|
||||
Odoo instance respectively. However, we recommend you look at `the test scenario
|
||||
<https://drive.google.com/open?id=1Lm4JqbsHBirB1wMi14UChoz_YHLjx5ec>`_ we created, a high-level idea
|
||||
of what you should test and look out for.
|
||||
|
||||
.. todo:: change link "test scenario" once the related doc is published
|
||||
|
||||
.. _db-upgrade/test-assistance:
|
||||
|
||||
Assistance
|
||||
~~~~~~~~~~
|
||||
|
||||
If you encounter issues or problems in the **test database**, please contact the Odoo Upgrade
|
||||
Support:
|
||||
|
||||
#. Connect to our `Odoo Support page <https://www.odoo.com/help>`_.
|
||||
#. Under the *Ticket Description* section, select *An issue related to my upgrade* ticket type.
|
||||
|
||||
.. image:: media/db-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 than the upgrade one and will slow down the processing and response time.
|
||||
|
||||
#. Please provide as much detail as you can. Where applicable, illustrate the current and previous
|
||||
flows with videos and/or screenshots. This will avoid clarifying questions and speed up the
|
||||
resolution process significantly.
|
||||
|
||||
.. image:: media/db-upgrade-test-assistance-details.png
|
||||
:align: center
|
||||
:alt: "Detailed Description" field in the support form on Odoo
|
||||
|
||||
.. note::
|
||||
* The purpose of the test phase is not to correct existing data or configurations in your
|
||||
database.
|
||||
* |assistance-contact|
|
||||
|
||||
.. _db-upgrade/steps-production:
|
||||
|
||||
The production launch
|
||||
---------------------
|
||||
|
||||
.. _db-upgrade/production-live:
|
||||
|
||||
Production goes live
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
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.
|
||||
|
||||
After your :ref:`tests <db-upgrade/steps-test>` are completed to your satisfaction, submit the
|
||||
request to upgrade your production database via our `website form <https://upgrade.odoo.com>`_.
|
||||
Select *Production* purpose.
|
||||
|
||||
.. image:: media/db-upgrade-production-purpose.png
|
||||
:align: center
|
||||
:alt: Selection of the "Production" purpose in the upgrade form on Odoo
|
||||
|
||||
.. danger::
|
||||
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)
|
||||
|
||||
.. _db-upgrade/production-assistance:
|
||||
|
||||
Assistance
|
||||
~~~~~~~~~~
|
||||
|
||||
If you encounter issues or problems in the **production database**, please contact the **Odoo
|
||||
Support**:
|
||||
|
||||
#. 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*.
|
||||
|
||||
.. note::
|
||||
After upgrading to production, the support will be provided by the Support team instead of the
|
||||
Upgrade team.
|
||||
|
||||
#. Please provide as much detail as you can. Where applicable, illustrate the current and previous
|
||||
flows with videos and/or screenshots. This will avoid clarifying questions and speed up the
|
||||
resolution process significantly.
|
||||
|
||||
.. image:: media/db-upgrade-production-assistance-details.png
|
||||
:align: center
|
||||
:alt: "Detailed Description" field in the support form on Odoo
|
||||
|
||||
.. 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.
|
||||
|
||||
.. _db-upgrade/faq:
|
||||
|
||||
FAQ
|
||||
===
|
||||
|
||||
.. _db-upgrade/faq/why:
|
||||
|
||||
Why upgrade?
|
||||
------------
|
||||
|
||||
* You benefit from the latest features of the :ref:`new major version
|
||||
<db-upgrade/faq/release-notes>` released by Odoo.
|
||||
* If you are in an :ref:`unsupported version <db-upgrade/supported-versions>`, you get a new version
|
||||
with support.
|
||||
|
||||
.. _db-upgrade/faq/when:
|
||||
|
||||
When to upgrade?
|
||||
----------------
|
||||
|
||||
Whenever you want. You can make your upgrade request as soon as a new version is released on our
|
||||
`website form <https://upgrade.odoo.com>`_.
|
||||
|
||||
.. _db-upgrade/faq/availability:
|
||||
|
||||
Availability of the new version
|
||||
-------------------------------
|
||||
|
||||
Please kindly note that as soon as we announce the release of a new major version (usually at the
|
||||
end of year), the Upgrade Service team needs to adapt the upgrade scripts to it, which is why the
|
||||
new version is not immediately available for existing databases.
|
||||
|
||||
.. _db-upgrade/faq/finalization:
|
||||
|
||||
Finalization of the upgrade (:abbr:`ETA (Estimated Time of Arrival)`)
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Unfortunately, it is impossible to give time estimates for every upgrade request. Odoo offers so
|
||||
many possibilities (e.g. branding, workflows, customization, etc) that it can get tricky to upgrade,
|
||||
and translate to the new structure. If you use multiple apps managing sensitive data (e.g.,
|
||||
Accounting, Inventory, etc.), some cases may still require a human intervention, making the process
|
||||
slower.
|
||||
|
||||
This is especially true during the first months following the release of a new major version, which
|
||||
can significantly lengthen the upgrade delay.
|
||||
|
||||
In general, the ‘smaller’ the database, the quickest the upgrade. 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.
|
||||
|
||||
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
|
||||
|
||||
Usually, the delays experienced during the first request (waiting time between the time you
|
||||
submitted your first request for a test upgrade) can generally give you an idea of the time to wait
|
||||
for the production request.
|
||||
|
||||
.. _db-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.
|
||||
|
||||
If you have a custom code, you can choose to have it upgraded by our services, by one of our
|
||||
`partners <https://www.odoo.com/partners>`_ or you can do it yourself.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _db-upgrade/faq/editions-change:
|
||||
|
||||
Editions change (from Community to Enterprise)
|
||||
----------------------------------------------
|
||||
|
||||
An upgrade does not cover a change of `Editions <https://www.odoo.com/page/editions>`_
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _db-upgrade/faq/hosting-types-switch:
|
||||
|
||||
Switching the hosting types (Self-hosted vs Online vs 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
|
||||
<db_management/hosting_changes>`.
|
||||
|
||||
.. note:: |assistance-contact|
|
||||
|
||||
.. _db-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.
|
||||
|
||||
.. _db-upgrade/assistance:
|
||||
|
||||
Assistance
|
||||
==========
|
||||
|
||||
.. _db-upgrade/contact:
|
||||
|
||||
Contact our Upgrade service support
|
||||
-----------------------------------
|
||||
|
||||
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 very pleased to answer it as soon as possible.
|
||||
|
||||
.. _db-upgrade/supported-versions:
|
||||
|
||||
Supported versions
|
||||
------------------
|
||||
|
||||
Please note that Odoo provides support and bug fixing only for the three last major versions of Odoo.
|
||||
|
||||
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 a longer support (before having to
|
||||
upgrade again).
|
||||
|
||||
You can get more information about our :doc:`supported versions <../services/support/supported_versions>`.
|
||||
@@ -1,12 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
==========
|
||||
Deployment
|
||||
==========
|
||||
|
||||
|
||||
.. toctree::
|
||||
|
||||
deployment/deploy
|
||||
deployment/cdn
|
||||
deployment/email_gateway
|
||||
@@ -1,81 +0,0 @@
|
||||
|
||||
========================================
|
||||
Deploying with Content Delivery Networks
|
||||
========================================
|
||||
|
||||
.. _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 |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 27 KiB |
@@ -1,756 +1,14 @@
|
||||
:nosearch:
|
||||
|
||||
.. _setup/install:
|
||||
=======
|
||||
Install
|
||||
=======
|
||||
|
||||
===============
|
||||
Installing Odoo
|
||||
===============
|
||||
.. If you add content on this page, remove the redirect rule 'install -> install/install'
|
||||
|
||||
There are multiple ways to install Odoo, or not install it at all, depending
|
||||
on the intended use case.
|
||||
.. toctree::
|
||||
|
||||
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 Communtiy 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
|
||||
-----
|
||||
|
||||
Debian/Ubuntu
|
||||
'''''''''''''
|
||||
|
||||
Odoo 14.0 'deb' package currently supports `Debian Buster`_, `Ubuntu 20.04`_ or above.
|
||||
|
||||
.. 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
|
||||
^^^^^^^^^^
|
||||
|
||||
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:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ wget -O - https://nightly.odoo.com/odoo.key | sudo apt-key add -
|
||||
$ sudo sh -c 'echo "deb http://nightly.odoo.com/14.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list'
|
||||
$ sudo apt-get update && sudo apt-get install odoo
|
||||
|
||||
You can then use the usual `apt-get upgrade` command to keep your installation up-to-date.
|
||||
|
||||
At this moment, there is no nightly repository for the Enterprise Edition.
|
||||
|
||||
Deb Package
|
||||
^^^^^^^^^^^
|
||||
|
||||
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_>`_.
|
||||
|
||||
Next, execute the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt-get install <path_to_installation_package>
|
||||
|
||||
This will install Odoo as a service, create the necessary PostgreSQL_ user
|
||||
and automatically start the server.
|
||||
|
||||
.. note:: The recommended `postgresql-server` package will be installed by the Debian Odoo package.
|
||||
The `--no-install-recommends` argument of the `apt-get` tool should be used if you plan
|
||||
to install the Postgresql server on another machine.
|
||||
|
||||
Fedora
|
||||
''''''
|
||||
|
||||
Odoo 14.0 'rpm' package supports Fedora 32.
|
||||
|
||||
.. warning:: The Odoo 14.0 rpm package does not support Fedora 33 or above.
|
||||
|
||||
Prepare
|
||||
^^^^^^^
|
||||
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
|
||||
^^^^^^^^^^
|
||||
|
||||
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/14.0/nightly/rpm/odoo.repo
|
||||
$ sudo dnf install -y odoo
|
||||
$ sudo systemctl enable odoo
|
||||
$ sudo systemctl start odoo
|
||||
|
||||
RPM package
|
||||
^^^^^^^^^^^
|
||||
|
||||
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_>`_.
|
||||
|
||||
Once downloaded, the package can be installed using the 'dnf' package manager:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dnf localinstall odoo_14.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.
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
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_>`_
|
||||
|
||||
Git
|
||||
^^^
|
||||
|
||||
The following requires git_ to be installed on your machine and that you have basic knowledge of
|
||||
git commands.
|
||||
|
||||
Community Edition:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> git clone https://github.com/odoo/odoo.git
|
||||
|
||||
|
||||
Enterprise Edition: (see :ref:`setup/install/editions` to get access)
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
C:\> git clone https://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.
|
||||
|
||||
Prepare
|
||||
'''''''
|
||||
|
||||
Python
|
||||
^^^^^^
|
||||
|
||||
Odoo requires Python 3.6 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.6 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
|
||||
|
||||
PostgreSQL
|
||||
^^^^^^^^^^
|
||||
|
||||
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: `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`.
|
||||
|
||||
Dependencies
|
||||
^^^^^^^^^^^^
|
||||
|
||||
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
|
||||
|
||||
.. 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.
|
||||
|
||||
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: `C:\\Users\\<user>\\AppData\\Roaming\\npm\\`).
|
||||
|
||||
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:
|
||||
|
||||
.. 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 default database to serve on `localhost:8069`. You can add other
|
||||
directory paths separated by a comma to ``addons`` at the end of the addons-path option.
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
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_>`_
|
||||
|
||||
Git
|
||||
^^^
|
||||
|
||||
The following requires git_ to be installed on your machine and that you have basic knowledge of
|
||||
git commands.
|
||||
|
||||
Community Edition:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/odoo/odoo.git
|
||||
|
||||
|
||||
Enterprise Edition: (see :ref:`setup/install/editions` to get access)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://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.
|
||||
|
||||
Prepare
|
||||
'''''''
|
||||
|
||||
Python
|
||||
^^^^^^
|
||||
|
||||
Odoo requires Python 3.6 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.6 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
|
||||
^^^^^^^^^^
|
||||
|
||||
Odoo uses PostgreSQL as database management system. Use your package manager to download and install
|
||||
PostgreSQL (supported version: 10.0 and later).
|
||||
|
||||
On Debian/Unbuntu, 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.
|
||||
|
||||
Dependencies
|
||||
^^^^^^^^^^^^
|
||||
|
||||
For libraries using native code, it is necessary to install development tools and native
|
||||
dependencies before the Python dependencies of Odoo. They are available in `-dev` or `-devel`
|
||||
packages for Python, PostgreSQL, libxml2, libxslt1, libevent, libsasl2 and libldap2.
|
||||
|
||||
On Debian/Unbuntu, the following command should install all the required libraries:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt install python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
|
||||
libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev libfreetype6-dev \
|
||||
liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev libpq-dev
|
||||
|
||||
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:: `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.
|
||||
|
||||
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
|
||||
|
||||
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. Odoo has no defaults beyond
|
||||
`psycopg2's defaults <http://initd.org/psycopg/docs/module.html>`_: connects over a UNIX socket on
|
||||
port `5432` with the current user and no password.
|
||||
* Custom addon paths beyond the defaults, to load your own modules.
|
||||
|
||||
A typical way to run the server would be:
|
||||
|
||||
.. 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 default database to serve on `localhost:8069`. You can add other
|
||||
directory paths separated by a comma to ``addons`` at the end of the addons-path option.
|
||||
|
||||
Mac OS
|
||||
------
|
||||
|
||||
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_>`_
|
||||
|
||||
Git
|
||||
^^^
|
||||
|
||||
The following requires git_ to be installed on your machine and that you have basic knowledge of
|
||||
git commands.
|
||||
|
||||
Community Edition:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/odoo/odoo.git
|
||||
|
||||
|
||||
Enterprise Edition: (see :ref:`setup/install/editions` to get access)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://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.
|
||||
|
||||
Prepare
|
||||
'''''''
|
||||
|
||||
Python
|
||||
^^^^^^
|
||||
|
||||
Odoo requires Python 3.6 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.6 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
|
||||
^^^^^^^^^^
|
||||
|
||||
Odoo uses PostgreSQL as database management system. Use `postgres.app <https://postgresapp.com>`_
|
||||
to download and install PostgreSQL (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:
|
||||
|
||||
.. 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.
|
||||
|
||||
Dependencies
|
||||
^^^^^^^^^^^^
|
||||
|
||||
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.
|
||||
|
||||
.. 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.
|
||||
|
||||
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
|
||||
|
||||
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. Odoo has no defaults beyond
|
||||
`psycopg2's defaults <http://initd.org/psycopg/docs/module.html>`_: connects over a UNIX socket on
|
||||
port `5432` with the current user and no password.
|
||||
* Custom addon paths beyond the defaults, to load your own modules.
|
||||
|
||||
A typical way to run the server would be:
|
||||
|
||||
.. 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 default database to serve on `localhost:8069`. You can add other
|
||||
directory paths separated by a comma to ``addons`` at the end of the addons-path option.
|
||||
|
||||
|
||||
.. _setup/install/docker:
|
||||
|
||||
Docker
|
||||
======
|
||||
|
||||
The full documentation on how to use Odoo with Docker can be found on the
|
||||
official Odoo `docker image <https://registry.hub.docker.com/_/odoo/>`_ page.
|
||||
|
||||
.. _Debian Buster: https://www.debian.org/releases/buster/
|
||||
.. _demo: https://demo.odoo.com
|
||||
.. _docker: https://www.docker.com
|
||||
.. _download: https://www.odoo.com/page/download
|
||||
.. _Ubuntu 20.04: 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
|
||||
.. _git: https://git-scm.com/
|
||||
.. _Editions: https://www.odoo.com/pricing#pricing_table_features
|
||||
.. _nightly: https://nightly.odoo.com/
|
||||
.. _extra: https://nightly.odoo.com/extra/
|
||||
install/install
|
||||
install/deploy
|
||||
install/cdn
|
||||
install/email_gateway
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
=======================================
|
||||
Set up a content delivery network (CDN)
|
||||
=======================================
|
||||
|
||||
.. _reference/cdn/keycdn:
|
||||
|
||||
Deploying with KeyCDN
|
||||
=====================
|
||||
|
||||
A :abbr:`CDN (Content Delivery Network)` or *content distribution network*, is a geographically
|
||||
distributed network of servers that provides high speed internet content. The :abbr:`CDN (Content
|
||||
Delivery Network)` provides quick, high-quality content delivery for content-heavy websites.
|
||||
|
||||
This document will guide you through the setup of a KeyCDN_ account with an Odoo powered website.
|
||||
|
||||
Create a pull zone in the KeyCDN dashboard
|
||||
------------------------------------------
|
||||
|
||||
On the KeyCDN dashboard, start by navigating to the :menuselection:`Zones` menu item on the left. On
|
||||
the form, give a value to the :guilabel:`Zone Name`, which will appear as part of the :abbr:`CDN
|
||||
(Content Delivery Network)`'s :abbr:`URL (Uniform Resource Locator)`. Then, set the :guilabel:`Zone
|
||||
Status` to :guilabel:`active` to engage the zone. For the :guilabel:`Zone Type` set the value to
|
||||
:guilabel:`Pull`, and then, finally, under the :guilabel:`Pull Settings`, enter the
|
||||
:guilabel:`Origin URL`— this address should be the full Odoo database :abbr:`URL (Uniform Resource
|
||||
Locator)`.
|
||||
|
||||
.. example::
|
||||
Use ``https://yourdatabase.odoo.com`` and replace the *yourdatabase* subdomain prefix with the
|
||||
actual name of the database. A custom :abbr:`URL (Uniform Resource Locator)` can be used, as
|
||||
well, in place of the Odoo subdomain that was provided to the database.
|
||||
|
||||
.. image:: cdn/keycdn-zone.png
|
||||
:align: center
|
||||
:alt: KeyCDN's Zone configuration page.
|
||||
|
||||
Under the :guilabel:`General Settings` heading below the zone form, click the :guilabel:`Show all
|
||||
settings` button to expand the zone options. This should be the last option on the page. After
|
||||
expanding the :guilabel:`General Settings` ensure that the :guilabel:`CORS` option is
|
||||
:guilabel:`enabled`.
|
||||
|
||||
Next, scroll to the bottom of the zone configuration page and :guilabel:`Save` the changes. KeyCDN
|
||||
will indicate that the new zone will be deployed. This can take about 10 minutes.
|
||||
|
||||
.. image:: cdn/zone-url.png
|
||||
:align: center
|
||||
:alt: KeyCDN deploying the new Zone.
|
||||
|
||||
.. note::
|
||||
A new :guilabel:`Zone URL` has been generated for your Zone, in this example it is
|
||||
``pulltest-xxxxx.kxcdn.com``. This value will differ for each database.
|
||||
|
||||
Copy this :guilabel:`Zone URL` to a text editor for later, as it will be used in the next steps.
|
||||
|
||||
Configure the Odoo instance with the new zone
|
||||
---------------------------------------------
|
||||
|
||||
In the Odoo :guilabel:`Website` app, go to the :menuselection:`Settings` and then activate the
|
||||
:guilabel:`Content Delivery Network (CDN)` setting and copy/paste the :guilabel:`Zone URL` value
|
||||
from the earlier step into the :guilabel:`CDN Base URL` field. This field is only visible and
|
||||
configurable when :doc:`Developer Mode <../../applications/general/developer_mode>` is activated.
|
||||
|
||||
.. note::
|
||||
Ensure that there are two *forward slashes* (`//`) before the :guilabel:`CDN Base URL` and one
|
||||
forward slash (`/`) after the :guilabel:`CDN Base URL`.
|
||||
|
||||
:guilabel:`Save` the settings when complete.
|
||||
|
||||
.. image:: cdn/cdn-base-url.png
|
||||
:align: center
|
||||
:alt: Activate the CDN setting in Odoo.
|
||||
|
||||
Now the website is using the CDN for the resources matching the :guilabel:`CDN filters` regular
|
||||
expressions.
|
||||
|
||||
In the HTML of the Odoo website, the :abbr:`CDN (content delivery network)` integration is evidenced
|
||||
as working properly by checking the :abbr:`URL (Uniform Resource Locators)` of images. The *CDN Base
|
||||
URL* value can be seen by using your web browser's :guilabel:`Inspect` feature on the Odoo website.
|
||||
Look for it's record by searching within the :guilabel:`Network` tab inside of devtools.
|
||||
|
||||
.. image:: cdn/test-pull.png
|
||||
:align: center
|
||||
:alt: The CDN Base URL can be seen using the inspect function on the Odoo website.
|
||||
|
||||
Prevent security issues by activating cross-origin resource sharing (CORS)
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
A security restriction in some browsers (such as Mozilla Firefox and Google Chrome) prevents a
|
||||
remotely linked CSS file to fetch relative resources on this same external server.
|
||||
|
||||
If the :abbr:`CORS (Cross-Origin Resource Sharing)` option isn't enabled in the :guilabel:`CDN
|
||||
Zone`, the more obvious resulting problem on a standard Odoo website will be the lack of *Font
|
||||
Awesome* icons because the font file declared in the *Font Awesome* CSS won't be loaded from the
|
||||
remote server.
|
||||
|
||||
When these cross-origin resource issues occur, a security error message similar to the output
|
||||
below will appear in the web browser's developer console:
|
||||
|
||||
``Font from origin 'http://pulltest-xxxxx.kxcdn.com' has been blocked from loading /shop:1 by
|
||||
Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the
|
||||
requested resource. Origin 'http://yourdatabase.odoo.com' is therefore not allowed access.``
|
||||
|
||||
.. image:: cdn/odoo-security-message.png
|
||||
:align: center
|
||||
:alt: Error message populated in the browser console.
|
||||
|
||||
Enabling the :abbr:`CORS (Cross-Origin Resource Sharing)` option in the :abbr:`CDN (Content Delivery
|
||||
Network)` settings fixes this issue.
|
||||
|
||||
.. _KeyCDN: https://www.keycdn.com
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 28 KiB |
@@ -1,15 +1,13 @@
|
||||
|
||||
==============
|
||||
Deploying Odoo
|
||||
==============
|
||||
====================
|
||||
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` recommandations!
|
||||
|
||||
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
||||
|
||||
.. _db_filter:
|
||||
|
||||
@@ -45,7 +43,7 @@ Configuration samples
|
||||
|
||||
* Show only databases with names beginning with 'mycompany'
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -57,7 +55,7 @@ in ``/etc/odoo.conf`` set:
|
||||
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:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -65,6 +63,7 @@ in ``/etc/odoo.conf`` set:
|
||||
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
|
||||
@@ -73,7 +72,6 @@ in ``/etc/odoo.conf`` set:
|
||||
your databases, and to block access to the database management screens.
|
||||
See also security_.
|
||||
|
||||
|
||||
PostgreSQL
|
||||
==========
|
||||
|
||||
@@ -99,7 +97,7 @@ 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:
|
||||
in ``/etc/postgresql/<YOUR POSTGRESQL VERSION>/main/pg_hba.conf`` set:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
@@ -107,7 +105,7 @@ in ``/etc/postgresql/9.5/main/pg_hba.conf`` set:
|
||||
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:
|
||||
in ``/etc/postgresql/<YOUR POSTGRESQL VERSION>/main/postgresql.conf`` set:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
@@ -152,7 +150,7 @@ Configuration sample
|
||||
* with 'pwd' as a password
|
||||
* filtering only db with a name beginning with 'mycompany'
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -174,7 +172,7 @@ 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>`_
|
||||
`PostgreSQL Doc <https://www.postgresql.org/docs/12/static/libpq-ssl.html>`_
|
||||
|
||||
.. _builtin_server:
|
||||
|
||||
@@ -197,7 +195,6 @@ be better monitored and resource-restricted.
|
||||
|
||||
.. warning:: multiprocessing mode currently isn't available on Windows
|
||||
|
||||
|
||||
Worker number calculation
|
||||
-------------------------
|
||||
|
||||
@@ -218,11 +215,11 @@ LiveChat
|
||||
--------
|
||||
|
||||
In multiprocessing, a dedicated LiveChat worker is automatically started and
|
||||
listening on :option:`the longpolling port <odoo-bin --longpolling-port>` but
|
||||
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
|
||||
``/longpolling/`` to the longpolling port. Other request should be proxied to
|
||||
``/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,
|
||||
@@ -230,20 +227,18 @@ like nginx or apache. When doing so, you'll need to forward some more http Heade
|
||||
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 <- theorical number of worker needed
|
||||
* (4 * 2) + 1 = 9 <- theorical maximal number of worker
|
||||
* 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``:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>`:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -278,7 +273,7 @@ Configuration sample
|
||||
* Redirect http requests to https
|
||||
* Proxy requests to odoo
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -290,59 +285,67 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
|
||||
|
||||
#odoo server
|
||||
upstream odoo {
|
||||
server 127.0.0.1:8069;
|
||||
server 127.0.0.1:8069;
|
||||
}
|
||||
upstream odoochat {
|
||||
server 127.0.0.1:8072;
|
||||
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;
|
||||
listen 80;
|
||||
server_name odoo.mycompany.com;
|
||||
rewrite ^(.*) https://$host$1 permanent;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443;
|
||||
server_name odoo.mycompany.com;
|
||||
proxy_read_timeout 720s;
|
||||
proxy_connect_timeout 720s;
|
||||
proxy_send_timeout 720s;
|
||||
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;
|
||||
|
||||
# SSL parameters
|
||||
ssl on;
|
||||
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;
|
||||
|
||||
# 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 longpoll requests to odoo longpolling port
|
||||
location /longpolling {
|
||||
proxy_pass http://odoochat;
|
||||
}
|
||||
# Redirect requests to odoo backend server
|
||||
location / {
|
||||
# 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;
|
||||
proxy_redirect off;
|
||||
proxy_pass http://odoo;
|
||||
}
|
||||
|
||||
# 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;
|
||||
# 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
|
||||
@@ -387,27 +390,109 @@ 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 ``/longpolling/`` to
|
||||
that Odoo, this is the simplest and the longpolling URL can double up as
|
||||
the cron instance.
|
||||
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 ``/longpolling/`` to
|
||||
:option:`the longpolling port <odoo-bin --longpolling-port>`.
|
||||
with ``/websocket/`` to
|
||||
:option:`the gevent port <odoo-bin --gevent-port>`.
|
||||
|
||||
Serving Static Files
|
||||
====================
|
||||
.. _deploy/streaming:
|
||||
|
||||
For development convenience, Odoo directly serves all static files 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 and attachments
|
||||
====================================
|
||||
|
||||
Odoo static files live in each module's ``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.
|
||||
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 and the
|
||||
:option:`--addons-path <odoo-bin --addons-path>` is ``'/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**. The two git repositories for Community and
|
||||
Enterprise have been cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise`
|
||||
respectively and the :option:`--addons-path <odoo-bin --addons-path>` is
|
||||
``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``.
|
||||
|
||||
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 /opt/odoo;
|
||||
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
|
||||
expires 24h;
|
||||
}
|
||||
|
||||
.. 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.
|
||||
|
||||
.. todo:: test whether it would be interesting to serve filestored attachments
|
||||
via this, and how (e.g. possibility of mapping ir.attachment id to
|
||||
filestore hash in the database?)
|
||||
|
||||
.. _security:
|
||||
|
||||
@@ -522,6 +607,7 @@ security-related topics:
|
||||
|
||||
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.
|
||||
@@ -559,9 +645,6 @@ Here is what it could look like for blocking the IP for 15 minutes when
|
||||
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
|
||||
@@ -624,12 +707,10 @@ Here are the supported browsers:
|
||||
.. 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.
|
||||
@@ -654,8 +735,8 @@ Here are the supported browsers:
|
||||
.. _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
|
||||
https://www.postgresql.org/docs/12/static/runtime-config-connection.html
|
||||
.. _use an SSH tunnel:
|
||||
https://www.postgresql.org/docs/9.6/static/ssh-tunnels.html
|
||||
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
|
||||
@@ -1,23 +1,25 @@
|
||||
|
||||
==================
|
||||
Odoo email gateway
|
||||
==================
|
||||
=============
|
||||
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
|
||||
@@ -34,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>
|
||||
@@ -45,4 +48,4 @@ For Exim
|
||||
|
||||
.. tip::
|
||||
If you don't have access/manage your email server, use :ref:`inbound messages
|
||||
<discuss/email_servers/inbound_messages>`.
|
||||
<email_communication/inbound_messages>`.
|
||||
@@ -0,0 +1,745 @@
|
||||
|
||||
.. _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 `Odoo Online`_ 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.
|
||||
|
||||
Odoo Online
|
||||
-----------
|
||||
|
||||
Trivial to start with, fully managed and migrated by Odoo S.A., `Odoo Online`_
|
||||
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, `Odoo Online`_ 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:
|
||||
|
||||
.. 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
|
||||
|
||||
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/{CURRENT_MAJOR_BRANCH}/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 {CURRENT_MAJOR_VERSION} 'deb' package currently supports `Debian 11 (Bullseye)`_,
|
||||
`Ubuntu 22.04 (Jammy)`_ 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 {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
|
||||
|
||||
.. _setup/install/source:
|
||||
|
||||
Source install
|
||||
==============
|
||||
|
||||
The source "installation" is really about not installing Odoo, and running it directly from source
|
||||
instead.
|
||||
|
||||
It can be more convenient for module developers as the Odoo source is more easily accessible than
|
||||
using packaged installation.
|
||||
|
||||
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/tutorials/getting_started>` developer tutorial,
|
||||
or plan on contributing to Odoo source code, choose SSH.
|
||||
|
||||
.. 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. See
|
||||
:ref:`setup/install/editions` to get access to the Enterprise repository.
|
||||
|
||||
.. _setup/install/source/prepare:
|
||||
|
||||
Prepare
|
||||
-------
|
||||
|
||||
Python
|
||||
~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
|
||||
Odoo requires Python 3.8 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.8 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.8 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: 12.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: 12.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: 12.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
|
||||
<{GITHUB_PATH}/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.
|
||||
|
||||
.. _setup/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, 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/reference/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 22.04 (Jammy): https://releases.ubuntu.com/22.04/
|
||||
.. _EPEL: https://fedoraproject.org/wiki/EPEL
|
||||
.. _PostgreSQL: https://www.postgresql.org
|
||||
.. _the official installer:
|
||||
.. _install pip:
|
||||
https://pip.pypa.io/en/latest/installing.html#install-pip
|
||||
.. _Quilt: https://en.wikipedia.org/wiki/Quilt_(software)
|
||||
.. _Odoo Online: https://www.odoo.com/page/start
|
||||
.. _the wkhtmltopdf download page: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5
|
||||
.. _UAC: https://en.wikipedia.org/wiki/User_Account_Control
|
||||
.. _wkhtmltopdf: https://wkhtmltopdf.org
|
||||
.. _pip: https://pip.pypa.io
|
||||
.. _macports: https://www.macports.org
|
||||
.. _homebrew: https://brew.sh
|
||||
.. _wheels: https://wheel.readthedocs.org/en/latest/
|
||||
.. _virtualenv: https://pypi.python.org/pypi/virtualenv
|
||||
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/en/latest/
|
||||
.. _pywin32: https://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/
|
||||
@@ -0,0 +1,18 @@
|
||||
:nosearch:
|
||||
|
||||
========
|
||||
Maintain
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
|
||||
maintain/domain_names
|
||||
maintain/azure_oauth
|
||||
maintain/google_oauth
|
||||
maintain/mailjet_api
|
||||
maintain/update
|
||||
maintain/enterprise
|
||||
maintain/hosting_changes
|
||||
maintain/odoo_online
|
||||
maintain/on_premise
|
||||
maintain/supported_versions
|
||||
@@ -0,0 +1,220 @@
|
||||
=======================================================
|
||||
Connect Microsoft Outlook 365 to Odoo using Azure OAuth
|
||||
=======================================================
|
||||
|
||||
Odoo is compatible with Microsoft's Azure OAuth for Microsoft 365. In order to send and receive
|
||||
secure emails from a custom domain, all that is required is to configure a few settings on the
|
||||
Azure platform and on the back end of the Odoo database. This configuration works with either a
|
||||
personal email address or an address created by a custom domain.
|
||||
|
||||
.. seealso::
|
||||
`Microsoft Learn: Register an application with the Microsoft identity platform
|
||||
<https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app>`_
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/azure`
|
||||
- :doc:`/applications/productivity/calendar/outlook`
|
||||
|
||||
Setup in Microsoft Azure Portal
|
||||
===============================
|
||||
|
||||
Create a new application
|
||||
------------------------
|
||||
|
||||
To get started, go to `Microsoft's Azure Portal <https://portal.azure.com/>`_. Log in with the
|
||||
:guilabel:`Microsoft Outlook Office 365` account if there is one, otherwise log in with the
|
||||
personal :guilabel:`Microsoft account`. A user with administrative access to the Azure Settings
|
||||
will need to connect and perform the following configuration. Next, navigate to the section
|
||||
labeled :guilabel:`Manage Azure Active Directory`.
|
||||
|
||||
Now, click on :guilabel:`Add (+)`, located in the top menu, and then select :guilabel:`App
|
||||
registration`. On the :guilabel:`Register an application` screen, rename the :guilabel:`Name` to
|
||||
`Odoo` or something recognizable. Under the :guilabel:`Supported account types` section select
|
||||
:guilabel:`Accounts in any organizational directory (Any Azure AD directory - Multitenant) and
|
||||
personal Microsoft accounts (e.g. Skype, Xbox)`.
|
||||
|
||||
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
|
||||
`https://<odoo base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL
|
||||
is the canonical domain at which your Odoo instance can be reached in the URL field.
|
||||
|
||||
.. example::
|
||||
*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain,
|
||||
assuming it's hosted on Odoo.com
|
||||
|
||||
After the URL has been added to the field, :guilabel:`Register` the application so it is created.
|
||||
|
||||
API permissions
|
||||
---------------
|
||||
|
||||
The :guilabel:`API permissions` should be set next. Odoo will need specific API permissions to be
|
||||
able to read (IMAP) and send (SMTP) emails in the Microsoft 365 setup. First, click the
|
||||
:guilabel:`API permissions` link, located in the left menu bar. Next, click on the :guilabel:`(+)
|
||||
Add a Permission` button and select :guilabel:`Microsoft Graph` under :guilabel:`Commonly Used
|
||||
Microsoft APIs`. After, select the :guilabel:`Delegated Permissions` option.
|
||||
|
||||
In the search bar, search for the following :guilabel:`Deregulated permissions` and click
|
||||
:guilabel:`Add permissions` for each one:
|
||||
|
||||
- :guilabel:`SMTP.Send`
|
||||
- :guilabel:`IMAP.AccessAsUser.All`
|
||||
|
||||
.. note::
|
||||
The :guilabel:`User.Read` permission will be added by default.
|
||||
|
||||
.. image:: azure_oauth/permissions.png
|
||||
:align: center
|
||||
:alt: API permissions needed for Odoo integration are listed under the Microsoft Graph.
|
||||
|
||||
Assign users and groups
|
||||
=======================
|
||||
|
||||
After adding the API permissions, navigate back to the :guilabel:`Overview` of the
|
||||
:guilabel:`Application` in the top of the left sidebar menu.
|
||||
|
||||
Now, add users to this application. Under the :guilabel:`Essentials` overview table, click on the
|
||||
link labeled :guilabel:`Managed Application in Local Directory`, or the last option on the bottom
|
||||
right-hand side of the table.
|
||||
|
||||
.. image:: azure_oauth/managed-application.png
|
||||
:align: center
|
||||
:alt: Add users/groups by clicking the Managed application in local directory link for the
|
||||
created application.
|
||||
|
||||
In the left sidebar menu, select :guilabel:`Users and Groups`. Next, click on :guilabel:`(+) Add
|
||||
User/Group`. Depending on the account, either a :guilabel:`Group` and a :guilabel:`User` can be
|
||||
added, or only :guilabel:`Users`. Personal accounts will only allow for :guilabel:`Users` to be
|
||||
added.
|
||||
|
||||
Under :guilabel:`Users` or :guilabel:`Groups`, click on :guilabel:`None Selected` and add the users
|
||||
or group of users that will be sending emails from the :guilabel:`Microsoft account` in Odoo.
|
||||
:guilabel:`Add` the users/groups, click :guilabel:`Select`, and then :guilabel:`Assign` them to the
|
||||
application.
|
||||
|
||||
Create credentials
|
||||
------------------
|
||||
|
||||
Now that the Microsoft Azure app is set up, credentials need to be created for the Odoo setup.
|
||||
These include the :guilabel:`Client ID` and :guilabel:`Client Secret`. To start, the
|
||||
:guilabel:`Client ID` can be copied from the :guilabel:`Overview` page of the app. The
|
||||
:guilabel:`Client ID` or :guilabel:`Application ID` is located under the :guilabel:`Display Name`
|
||||
in the :guilabel:`Essentials` overview of the app.
|
||||
|
||||
.. image:: azure_oauth/application-id.png
|
||||
:align: center
|
||||
:alt: Application/Client ID located in the Overview of the app.
|
||||
|
||||
Next, the :guilabel:`Client Secret Value` needs to be retrieved. To get this value, click on
|
||||
:guilabel:`Certificates & Secrets` in the left sidebar menu. Then, a :guilabel:`Client Secret`
|
||||
needs to be produced. In order to do this, click on the :guilabel:`(+) New Client Secret` button.
|
||||
|
||||
A window on the right will populate with a button labeled :guilabel:`Add a client secret`. Under
|
||||
:guilabel:`Description`, type in `Odoo Fetchmail` or something recognizable, and then set the
|
||||
:guilabel:`expiration date`.
|
||||
|
||||
.. important::
|
||||
A new :guilabel:`Client Secret` will need to be produced and configured if the first one
|
||||
expires. In this event, there could be an interruption of service, so the expiration date should
|
||||
be noted and set to the furthest possible date.
|
||||
|
||||
Next, click on :guilabel:`Add` when these two values are entered. A :guilabel:`Client Secret Value`
|
||||
and :guilabel:`Secret ID` will be created. It is important to copy the :guilabel:`Value` or
|
||||
:guilabel:`Client Secret Value` into a notepad as it will become encrypted after leaving this page.
|
||||
The :guilabel:`Secret ID` is not needed.
|
||||
|
||||
.. image:: azure_oauth/secretvalue.png
|
||||
:align: center
|
||||
:alt: Client Secret Value or Value in the app's credentials.
|
||||
|
||||
After these steps, the following items should be ready to be set up in Odoo:
|
||||
|
||||
- A client ID (:guilabel:`Client ID` or :guilabel:`Application ID`)
|
||||
- A client secret (:guilabel:`Value` or :guilabel:`Client Secret Value`)
|
||||
|
||||
This completes the setup on the :guilabel:`Microsoft Azure Portal` side.
|
||||
|
||||
Setup in Odoo
|
||||
=============
|
||||
|
||||
Enter Microsoft Outlook credentials
|
||||
-----------------------------------
|
||||
|
||||
First, open the Odoo database and navigate to the :guilabel:`Apps` module. Then, remove the
|
||||
:guilabel:`Apps` filter from the search bar and type in `Outlook`. After that, install the module
|
||||
called :guilabel:`Microsoft Outlook`.
|
||||
|
||||
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:`Outlook Credentials`.
|
||||
|
||||
:guilabel:`Save` the progress.
|
||||
|
||||
Then, copy and paste the :guilabel:`Client ID` (Application ID) and :guilabel:`Client Secret
|
||||
(Client Secret Value)` into the respective fields and :guilabel:`Save` the settings.
|
||||
|
||||
.. image:: azure_oauth/outlookcreds.png
|
||||
:align: center
|
||||
:alt: Outlook Credentials in Odoo General Settings.
|
||||
|
||||
Configure outgoing email server
|
||||
-------------------------------
|
||||
|
||||
On the :guilabel:`General Settings` page, under the :guilabel:`Custom Email Servers` setting,
|
||||
click the :guilabel:`Outgoing Email Servers` link to configure the Microsoft account.
|
||||
|
||||
Then, create a new email server and check the box for :guilabel:`Outlook`. Next, fill in the
|
||||
:guilabel:`Name` (it can be anything) and the Microsoft Outlook email :guilabel:`Username`.
|
||||
|
||||
If the :guilabel:`From Filter` field is empty, enter either a :ref:`domain or email address
|
||||
<email_communication/default>`.
|
||||
|
||||
Then, click on :guilabel:`Connect your Outlook account`.
|
||||
|
||||
A new window from Microsoft opens to complete the :guilabel:`authorization process`. Select the
|
||||
appropriate email address that is being configured in Odoo.
|
||||
|
||||
.. image:: azure_oauth/verify-outlook.png
|
||||
:align: center
|
||||
:alt: Permission page to grant access between newly created app and Odoo.
|
||||
|
||||
Then, allow Odoo to access the Microsoft account by clicking on :guilabel:`Yes`. After this, the
|
||||
page will navigate back to the newly configured :guilabel:`Outgoing Mail Server` in Odoo. The
|
||||
configuration automatically loads the :guilabel:`token` in Odoo, and a tag stating
|
||||
:guilabel:`Outlook Token Valid` appears in green.
|
||||
|
||||
.. image:: azure_oauth/outlook-token.png
|
||||
:align: center
|
||||
:alt: Valid Outlook Token indicator.
|
||||
|
||||
Finally, click :guilabel:`Test Connection`. A confirmation message should appear. The Odoo database
|
||||
can now send safe, secure emails through Microsoft Outlook using OAuth authentication.
|
||||
|
||||
Multiple user configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Each user should have a separate server set up. The :guilabel:`from-filter` should be set so that
|
||||
only the user's email is sent from that server. In other words, only a user with an email address
|
||||
that matches the set :guilabel:`from-filter` is able to use this server.
|
||||
|
||||
After setting the :guilabel:`from-filter`, set up a fallback email account to allow for the sending
|
||||
of :guilabel:`notifications`. The fallback email must be configured as a :guilabel:`general
|
||||
transactional server`. The :guilabel:`mail.default.from` system parameter must be set to the
|
||||
:guilabel:`username` of the general transactional server account. For more information see
|
||||
:ref:`Use a default email address <email_communication/default>`.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`System Parameters` can be accessed by activating
|
||||
:doc:`../../applications/general/developer_mode` in the :menuselection:`Settings --> Technical
|
||||
--> Parameters --> System Parameters` menu.
|
||||
|
||||
Configure incoming email server
|
||||
-------------------------------
|
||||
|
||||
The incoming account should be configured in a similar way to the outgoing email account. Navigate
|
||||
to the :guilabel:`Incoming Mail Servers` in the :guilabel:`Technical Menu` and :guilabel:`Create` a
|
||||
new configuration. Check or Select the button next to :guilabel:`Outlook Oauth Authentication` and
|
||||
enter the :guilabel:`Microsoft Outlook username`. Click on :guilabel:`Connect your Outlook
|
||||
account`. Odoo will state: :guilabel:`Outlook Token Valid` Now :guilabel:`Test and Confirm` the
|
||||
account. The account should be ready to receive email to the Odoo database.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../applications/general/email_communication/email_servers`
|
||||
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 64 KiB |
@@ -0,0 +1,366 @@
|
||||
============
|
||||
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/indexing:
|
||||
|
||||
Indexing of domain names by search engines
|
||||
------------------------------------------
|
||||
|
||||
Search engines, such as Google and Bing, rely on web crawlers (:dfn:`robots that explore and analyze
|
||||
the web`) to index all websites and their related domain names. These crawlers discover new URLs
|
||||
thanks to links on known web pages. As a result, search engines should index domain names
|
||||
automatically after a while, as long as their URLs are mentioned elsewhere on the Internet.
|
||||
|
||||
Improving the appearance and positioning of web pages on search engines is a practice named "Search
|
||||
Engine Optimization" (SEO).
|
||||
|
||||
.. tip::
|
||||
Adding relevant content, optimizing metadata, and building high-quality backlinks can all help
|
||||
improve a website's search engine visibility.
|
||||
|
||||
Some search engines provide tools for web admins, such as
|
||||
`Google Search Console <https://search.google.com/search-console>`_ and
|
||||
`Bing Webmaster Tools <https://www.bing.com/webmasters>`_, to help you analyze and improve your
|
||||
page ranking. To use these services, you must prove that you are the owner of your domain name. One
|
||||
way to verify the ownership of your domain name is by adding a DNS record. You can do this for
|
||||
:ref:`domain names registered with Odoo <domain-name/odoo-manage>` and for domain names managed by
|
||||
other providers.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/websites/website/pages/seo`
|
||||
- `Google Search Console Help - Verify your site ownership <https://support.google.com/webmasters/answer/9008080>`_
|
||||
- `Bing Webmaster Tools - Add and Verify site <https://www.bing.com/webmasters/help/add-and-verify-site-12184f8b>`_
|
||||
|
||||
.. _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 --> 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-menu.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 domain of another website rather than
|
||||
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>`_ 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`
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
@@ -1,9 +1,9 @@
|
||||
|
||||
.. _setup/enterprise:
|
||||
|
||||
============================
|
||||
From Community to Enterprise
|
||||
============================
|
||||
===================================
|
||||
Switch from Community to Enterprise
|
||||
===================================
|
||||
|
||||
Depending on your current installation, there are multiple ways to upgrade
|
||||
your community version.
|
||||
@@ -41,7 +41,7 @@ On Linux, using an installer
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo dpkg -i <path_to_enterprise_deb>
|
||||
|
||||
|
||||
* Update your database to the enterprise packages using
|
||||
|
||||
.. code-block:: console
|
||||
@@ -98,7 +98,7 @@ On Windows
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ odoo.exe -d <database_name> -i web_enterprise --stop-after-init
|
||||
$ ..\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
|
||||
|
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 |
@@ -0,0 +1,219 @@
|
||||
========================================
|
||||
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.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/google`
|
||||
- :doc:`/applications/productivity/calendar/google`
|
||||
|
||||
Setup in Google
|
||||
===============
|
||||
|
||||
Create a new project
|
||||
--------------------
|
||||
|
||||
To get started, go to the `Google API Console <https://console.developers.google.com>`_. 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 :guilabel:`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 right under the :guilabel:`Select a project` drop-down
|
||||
menu.
|
||||
|
||||
On the :menuselection:`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
|
||||
:guilabel:`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.
|
||||
|
||||
OAuth consent screen
|
||||
--------------------
|
||||
|
||||
If the page doesn't redirect to the :menuselection:`User Type` options, click on :guilabel:`OAuth
|
||||
consent screen` in the left menu.
|
||||
|
||||
Under :guilabel:`User Type` options, select the appropriate :guilabel:`User Type`, and then click on
|
||||
:guilabel:`Create` again, which will finally navigate to the :menuselection:`Edit app registration`
|
||||
page.
|
||||
|
||||
.. warning::
|
||||
*Personal* Gmail Accounts are only allowed to be **External** User Type, which means Google may
|
||||
require an approval, or for *Scopes* to be added on. However, using a *Google WorkSpace* account
|
||||
allows for **Internal** User Type to be used.
|
||||
|
||||
Note, as well, that while the API connection is in the *External* testing mode, then no approval is
|
||||
necessary from Google. User limits in this testing mode is set to 100 users.
|
||||
|
||||
Edit app registration
|
||||
---------------------
|
||||
|
||||
Next we will configure the app registration of the project.
|
||||
|
||||
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 :menuselection:`Scopes` page
|
||||
by scrolling to the bottom and clicking on :guilabel:`Save and Continue`.
|
||||
|
||||
If continuing in testing mode (External), add the email addresses 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 app registration appears.
|
||||
|
||||
Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard` to finish setting up the
|
||||
project.
|
||||
|
||||
Create Credentials
|
||||
------------------
|
||||
|
||||
Now that the project is set up, credentials should be created, which includes the *Client ID* and
|
||||
*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:`Name` 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 the 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` or :guilabel:`External Email
|
||||
Servers` is checked. This populates a new option for :guilabel:`Gmail Credentials` or :guilabel:`Use
|
||||
a Gmail Sever`. Then, copy and paste the respective values into the :guilabel:`Client ID` and
|
||||
:guilabel:`Client Secret` fields and :guilabel:`Save` the settings.
|
||||
|
||||
Configure outgoing email server
|
||||
-------------------------------
|
||||
|
||||
To configure the external Gmail account, return to the top of the :guilabel:`Custom Email Servers`
|
||||
setting and then click the :guilabel:`Outgoing Email Servers` link.
|
||||
|
||||
.. image:: google_oauth/outgoing-servers.png
|
||||
:align: center
|
||||
:alt: Configure Outgoing Email Servers in Odoo.
|
||||
|
||||
Then, click on :guilabel:`New` or :guilabel:`Create` to create a new email server, and fill in the
|
||||
:guilabel:`Name`, :guilabel:`Description`, and the email :guilabel:`Username` (if required).
|
||||
|
||||
Next, click on :guilabel:`Gmail OAuth Authentication` or :guilabel:`Gmail` (under the
|
||||
:guilabel:`Authenticate with` or :guilabel:`Connection` section). Finally, click on
|
||||
:guilabel:`Connect your Gmail Account`.
|
||||
|
||||
A new window labeled :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, then an extra step pops up, so 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, :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
|
||||
:guilabel:`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 *Google 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 :menuselection:`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 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, being sure to replace *yourdbname*
|
||||
in the URL with the Odoo database name.
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
@@ -0,0 +1,87 @@
|
||||
|
||||
.. _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.
|
||||
@@ -0,0 +1,218 @@
|
||||
===========
|
||||
Mailjet API
|
||||
===========
|
||||
|
||||
Odoo is compatible with Mailjet's :abbr:`API (Application Programming Interface)` for mass mailing.
|
||||
Set up a dedicated mass mailing server through Mailjet by configuring settings in the Mailjet
|
||||
account and the Odoo database. In some circumstances, settings need to be configured on the custom
|
||||
domain's :abbr:`DNS (Domain Name System)` settings as well.
|
||||
|
||||
Set up in Mailjet
|
||||
=================
|
||||
|
||||
Create API credentials
|
||||
----------------------
|
||||
|
||||
To get started, sign in to the `Mailjet Account Information <https://app.mailjet.com/account>`_
|
||||
page. Next, navigate to the :guilabel:`Senders & Domains` section and click on :guilabel:`SMTP and
|
||||
SEND API Settings`.
|
||||
|
||||
.. image:: mailjet_api/api-settings.png
|
||||
:align: center
|
||||
:alt: SMTP and Send API Settings link in the Senders & Domains section of Mailjet.
|
||||
|
||||
Then, copy the :abbr:`SMTP (Simple Mail Transfer Protocol)` configuration settings onto a notepad.
|
||||
They can be found under the :guilabel:`Configuration (SMTP only)` section. The :abbr:`SMTP (Simple
|
||||
Mail Transfer Protocol)` configuration settings include the server address, the security option
|
||||
needed (Use :abbr:`SSL (Secure Sockets Layer)`/:abbr:`TLS (Transport Layer Security)`), and the
|
||||
port number. The settings are needed to configure Mailjet in Odoo, which is covered in the
|
||||
:ref:`last section <maintain/mailjet-api/odoo-setup>`.
|
||||
|
||||
.. seealso::
|
||||
`Mailjet: How can I configure my SMTP parameters?
|
||||
<https://documentation.mailjet.com/hc/articles/360043229473>`_
|
||||
|
||||
.. important::
|
||||
Odoo blocks `port 25` on Odoo Online and Odoo.sh databases. :ref:`See reference here
|
||||
<email_servers/restriction>`.
|
||||
|
||||
.. image:: mailjet_api/smtp-config.png
|
||||
:align: center
|
||||
:alt: SMTP configuration from Mailjet.
|
||||
|
||||
Next, click on the button labeled :guilabel:`Retrieve your API credentials` to retrieve the Mailjet
|
||||
API credentials.
|
||||
|
||||
Then, click on the eye icon to reveal the :guilabel:`API key`. Copy this key to a notepad, as this
|
||||
serves as the :guilabel:`Username` in the Odoo configuration. Next, click on the
|
||||
:guilabel:`Generate Secret Key` button to generate the :guilabel:`Secret Key`. Copy this key to a
|
||||
notepad, as this serves as the :guilabel:`Password` in the Odoo configuration.
|
||||
|
||||
Add verified sender address(es)
|
||||
-------------------------------
|
||||
|
||||
The next step is to add a sender address or a domain to the Mailjet account settings so that the
|
||||
email address or domain is approved to send emails using Mailjet's servers. First, navigate to the
|
||||
`Mailjet Account Information <https://app.mailjet.com/account>`_ page. Next, click on the
|
||||
:guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section.
|
||||
|
||||
.. image:: mailjet_api/add-domain-email.png
|
||||
:align: center
|
||||
:alt: Add a sender domain or address in the Mailjet interface.
|
||||
|
||||
Determine if a sender's email address or the entire domain needs to be added to the Mailjet
|
||||
settings. It may be easier to configure the domain as a whole if :abbr:`DNS (Domain Name System)`
|
||||
access is available. Jump to the :ref:`Add a domain <maintain/mailjet-api/add-domain>` section for
|
||||
steps on adding the domain.
|
||||
|
||||
.. note::
|
||||
Either all email addresses of the Odoo database users who are sending emails using Mailjet's
|
||||
servers need to be configured or the domain(s) of the users' email addresses can be configured.
|
||||
|
||||
By default, the email address originally set up in the Mailjet account is added as a trusted
|
||||
sender. To add another email address, click on the button labeled :guilabel:`Add a sender address`.
|
||||
Then, add the email address that is configured to send from the custom domain.
|
||||
|
||||
At minimum the following email addresses should be set up in the provider and verified in Mailjet:
|
||||
|
||||
- notifications\@yourdomain.com
|
||||
- bounce\@yourdomain.com
|
||||
- catchall\@yourdomain.com
|
||||
|
||||
.. note::
|
||||
Replace `yourdomain` with the custom domain for the Odoo database. If there isn't one, then use
|
||||
the :guilabel:`mail.catchall.domain` system parameter.
|
||||
|
||||
After that, fill out the :guilabel:`Email Information` form, making sure to select the appropriate
|
||||
email type: transactional email or mass emails. After completing the form, an activation email is
|
||||
sent to the email address and the trusted sender can be activated.
|
||||
|
||||
It is recommended to set up the :abbr:`SPF (Sender Policy Framework)`/:abbr:`DKIM (DomainKeys
|
||||
Identified Mail)`/:abbr:`DMARC (Domain-based Message Authentication, Reporting, and
|
||||
Conformance)` settings on the domain of the sender.
|
||||
|
||||
.. seealso::
|
||||
`Mailjet's SPF/DKIM/DMARC documentation <https://documentation.mailjet.com/hc/articles/
|
||||
360042412734-Authenticating-Domains-with-SPF-DKIM>`_
|
||||
|
||||
.. important::
|
||||
If the database is not using a custom domain, then in order to verify the sender's address, a
|
||||
temporary alias (of the three email addresses mentioned above) should be set up in Odoo CRM to
|
||||
create a lead. Then, the database is able to receive the verification email and verify the
|
||||
accounts.
|
||||
|
||||
.. _maintain/mailjet-api/add-domain:
|
||||
|
||||
Add a domain
|
||||
------------
|
||||
|
||||
By adding an entire domain to the Mailjet account, all the sender addresses related to that domain
|
||||
are automatically validated for sending emails using Mailjet servers. First, navigate to the
|
||||
`Mailjet Account Information <https://app.mailjet.com/account>`_ page. Next, click on
|
||||
:guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section.
|
||||
Then, click on :guilabel:`Add domain` to add the custom domain.
|
||||
|
||||
.. note::
|
||||
The domain needs to be added to the Mailjet account and then validated through the :abbr:`DNS
|
||||
(Domain Name System)`.
|
||||
|
||||
After that, fill out the :guilabel:`Add a new Domain` page on Mailjet and click
|
||||
:guilabel:`Continue`.
|
||||
|
||||
After adding the domain, a validation page will populate. Unless the Odoo database is on-premise
|
||||
(in which case, choose :guilabel:`Option 1`), choose :guilabel:`Option 2: Create a DNS Record`.
|
||||
Copy the TXT record information to a notepad and then navigate to the domain's :abbr:`DNS (Domain
|
||||
Name System)` provider to complete validation.
|
||||
|
||||
.. image:: mailjet_api/host-value-dns.png
|
||||
:align: center
|
||||
:alt: The TXT record information to input on the domain's DNS.
|
||||
|
||||
Setup in the domain's DNS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After getting the TXT record information from the Mailjet account, add a TXT record to the domain's
|
||||
:abbr:`DNS (Domain Name System)`. This process varies depending on the :abbr:`DNS (Domain Name
|
||||
System)` provider. Consult the provider for specific configuration processes. The TXT record
|
||||
information consists of the :guilabel:`Host` and :guilabel:`Value`. Paste these into
|
||||
the corresponding fields in the TXT record.
|
||||
|
||||
Return to Mailjet account information
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After adding the TXT record to the domain's :abbr:`DNS (Domain Name System)`, navigate back to the
|
||||
Mailjet account. Then, navigate to :menuselection:`Account Information --> Add a Sender Domain or
|
||||
Address`, click the gear icon next to :guilabel:`Domain`, and select :guilabel:`Validate`.
|
||||
|
||||
This action can also be done by going to the `Sender domains & addresses <https://app.mailjet.com/
|
||||
account/sender>`_ page on the Mailjet account information and clicking on :guilabel:`Manage`.
|
||||
|
||||
Next, click :guilabel:`Check Now` to validate the TXT record that was added on the domain. A
|
||||
success screen will appear if the domain is configured correctly.
|
||||
|
||||
.. image:: mailjet_api/check-dns.png
|
||||
:align: center
|
||||
:alt: Check DNS record in Mailjet.
|
||||
|
||||
After successfully setting up the domain, there is an option to :guilabel:`Authenticate this domain
|
||||
(SPF/DKIM)`. This button populates :abbr:`SPF (Sender Policy Framework)` & :abbr:`DKIM (DomainKeys
|
||||
Identified Mail) records to input into the :abbr:`DNS (Domain Name System)` provider.
|
||||
|
||||
.. seealso::
|
||||
`Mailjet's SPF/DKIM/DMARC documentation <https://documentation.mailjet.com/hc/articles/
|
||||
360042412734-Authenticating-Domains-with-SPF-DKIM>`_
|
||||
|
||||
.. image:: mailjet_api/authenticate.png
|
||||
:align: center
|
||||
:alt: Authenticate the domain with SPF/DKIM records in Mailjet.
|
||||
|
||||
.. _maintain/mailjet-api/odoo-setup:
|
||||
|
||||
Set up in Odoo
|
||||
==============
|
||||
|
||||
To complete the setup, navigate to the Odoo database and go to the :guilabel:`Settings`. With
|
||||
:ref:`developer-mode` turned on, go to the :menuselection:`Technical Menu --> Email --> Outgoing
|
||||
Mail Servers`. Then, create a new outgoing server configuration by clicking on the
|
||||
:guilabel:`Create` button.
|
||||
|
||||
Next, input the `SMTP server` (in-v3.mailjet.com), `port number` (587 or 465), and `Security
|
||||
(SSL/TLS)` that was copied earlier from the Mailjet account. They can also be found `here
|
||||
<https://app.mailjet.com/account/setup>`_. It is recommended to use :abbr:`SSL (Secure Sockets
|
||||
Layer)`/:abbr:`TLS (Transport Layer Security)` even though Mailjet may not require it.
|
||||
|
||||
For the :guilabel:`Username`, input the :guilabel:`API KEY`. For the :guilabel:`Password`, input
|
||||
the :guilabel:`SECRET KEY` that was copied from the Mailjet account to the notepad earlier. These
|
||||
settings can be found on :menuselection:`Mailjet --> Account Settings --> SMTP and SEND API
|
||||
Settings`.
|
||||
|
||||
Then, if the Mailjet server is used for mass emailing, set the :guilabel:`Priority` value higher
|
||||
than that of any transactional email server(s). Finally, save the settings and :guilabel:`Test the
|
||||
Connection`.
|
||||
|
||||
.. image:: mailjet_api/server-settings.png
|
||||
:align: center
|
||||
:alt: Odoo outgoing email server settings.
|
||||
|
||||
.. important::
|
||||
In order for the notifications feature to work using Mailjet, there are three settings that need
|
||||
to be set in Odoo.
|
||||
|
||||
#. The :guilabel:`From Filter` needs to be set on the server configuration. It is recommended
|
||||
to set it as a domain and not a full email address. It should match the domain in the two
|
||||
proceeding steps. More information can be referenced :ref:`here
|
||||
<email_communication/from_filter>`.
|
||||
#. The :guilabel:`mail.default.from` system parameter must have the value
|
||||
`notifications\@yourdomain.com`.
|
||||
#. The :guilabel:`mail.default.from_filter` system parameter must have the value
|
||||
`yourdomain.com`. Replace `yourdomain` with the custom domain for the Odoo database. If there
|
||||
isn't one, then use the :guilabel:`mail.catchall.domain` system parameter.
|
||||
|
||||
For more information see :ref:`Using a default email address <email_communication/default>`.
|
||||
|
||||
The :guilabel:`System Parameters` can be accessed by activating
|
||||
:doc:`../../applications/general/developer_mode` in the :menuselection:`Settings --> Technical
|
||||
--> Parameters --> System Parameters` menu.
|
||||
|
||||
Once the setup is complete, the Odoo database is ready to use the Mailjet email server for mass
|
||||
mailing or transactional emails!
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,134 @@
|
||||
===============================
|
||||
Odoo Online 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 :doc:`Odoo Online upgrade
|
||||
documentation <../upgrade/odoo_online>`.
|
||||
|
||||
.. _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.
|
||||
|
||||
.. _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 <domain_names>` to access the database via another URL.
|
||||
|
||||
.. tip::
|
||||
You can :ref:`register a domain name for free <domain-name/odoo-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/manage_users`
|
||||
- :doc:`../../applications/general/users/delete_account`
|
||||
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
@@ -0,0 +1,168 @@
|
||||
==============================
|
||||
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 After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,182 @@
|
||||
|
||||
.. _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*.
|
||||
|
||||
What's the support status of my Odoo?
|
||||
=====================================
|
||||
|
||||
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 saas~16.3
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- June 2023
|
||||
- September 2023 (planned)
|
||||
* - Odoo saas~16.2
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- March 2023
|
||||
- July 2023 (planned)
|
||||
* - Odoo saas~16.1
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- February 2023
|
||||
- April 2023
|
||||
* - **Odoo 16.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2022
|
||||
- October 2025 (planned)
|
||||
* - Odoo saas~15.2
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- March 2022
|
||||
- January 2023
|
||||
* - Odoo saas~15.1
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- February 2022
|
||||
- July 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**
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- October 2019
|
||||
- October 2022
|
||||
* - 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/>`_.
|
||||