You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1077 lines
38 KiB

  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="A Text Annotation tool for Humans">
  7. <link rel="canonical" href="https://doccano.github.io/doccano/install_and_upgrade_doccano/">
  8. <meta name="author" content="Hiroki Nakayama">
  9. <link rel="shortcut icon" href="../assets/images/favicon.png">
  10. <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.1.0">
  11. <title>Install and upgrade doccano - doccano</title>
  12. <link rel="stylesheet" href="../assets/stylesheets/main.bc7e593a.min.css">
  13. <link rel="stylesheet" href="../assets/stylesheets/palette.ab28b872.min.css">
  14. <meta name="theme-color" content="#00bdd6">
  15. <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
  16. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
  17. <style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
  18. </head>
  19. <body dir="ltr" data-md-color-scheme="" data-md-color-primary="cyan" data-md-color-accent="cyan">
  20. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  21. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  22. <label class="md-overlay" for="__drawer"></label>
  23. <div data-md-component="skip">
  24. <a href="#install-doccano" class="md-skip">
  25. Skip to content
  26. </a>
  27. </div>
  28. <div data-md-component="announce">
  29. </div>
  30. <header class="md-header" data-md-component="header">
  31. <nav class="md-header-nav md-grid" aria-label="Header">
  32. <a href="https://doccano.github.io/doccano/" title="doccano" class="md-header-nav__button md-logo" aria-label="doccano">
  33. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
  34. </a>
  35. <label class="md-header-nav__button md-icon" for="__drawer">
  36. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
  37. </label>
  38. <div class="md-header-nav__title" data-md-component="header-title">
  39. <div class="md-header-nav__ellipsis">
  40. <span class="md-header-nav__topic md-ellipsis">
  41. doccano
  42. </span>
  43. <span class="md-header-nav__topic md-ellipsis">
  44. Install and upgrade doccano
  45. </span>
  46. </div>
  47. </div>
  48. <div class="md-header-nav__source">
  49. <a href="https://github.com/doccano/doccano/" title="Go to repository" class="md-source">
  50. <div class="md-source__icon md-icon">
  51. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
  52. </div>
  53. <div class="md-source__repository">
  54. doccano/doccano
  55. </div>
  56. </a>
  57. </div>
  58. </nav>
  59. </header>
  60. <div class="md-container" data-md-component="container">
  61. <main class="md-main" data-md-component="main">
  62. <div class="md-main__inner md-grid">
  63. <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
  64. <div class="md-sidebar__scrollwrap">
  65. <div class="md-sidebar__inner">
  66. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  67. <label class="md-nav__title" for="__drawer">
  68. <a href="https://doccano.github.io/doccano/" title="doccano" class="md-nav__button md-logo" aria-label="doccano">
  69. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3 3 3 0 003 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
  70. </a>
  71. doccano
  72. </label>
  73. <div class="md-nav__source">
  74. <a href="https://github.com/doccano/doccano/" title="Go to repository" class="md-source">
  75. <div class="md-source__icon md-icon">
  76. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
  77. </div>
  78. <div class="md-source__repository">
  79. doccano/doccano
  80. </div>
  81. </a>
  82. </div>
  83. <ul class="md-nav__list" data-md-scrollfix>
  84. <li class="md-nav__item">
  85. <a href=".." class="md-nav__link">
  86. Get started
  87. </a>
  88. </li>
  89. <li class="md-nav__item md-nav__item--active">
  90. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  91. <label class="md-nav__link md-nav__link--active" for="__toc">
  92. Install and upgrade doccano
  93. <span class="md-nav__icon md-icon"></span>
  94. </label>
  95. <a href="./" class="md-nav__link md-nav__link--active">
  96. Install and upgrade doccano
  97. </a>
  98. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  99. <label class="md-nav__title" for="__toc">
  100. <span class="md-nav__icon md-icon"></span>
  101. Table of contents
  102. </label>
  103. <ul class="md-nav__list" data-md-scrollfix>
  104. <li class="md-nav__item">
  105. <a href="#system-requirements" class="md-nav__link">
  106. System requirements
  107. </a>
  108. <nav class="md-nav" aria-label="System requirements">
  109. <ul class="md-nav__list">
  110. <li class="md-nav__item">
  111. <a href="#web-browser-support" class="md-nav__link">
  112. Web browser support
  113. </a>
  114. </li>
  115. <li class="md-nav__item">
  116. <a href="#port-requirements" class="md-nav__link">
  117. Port requirements
  118. </a>
  119. </li>
  120. </ul>
  121. </nav>
  122. </li>
  123. <li class="md-nav__item">
  124. <a href="#install-with-pip" class="md-nav__link">
  125. Install with pip
  126. </a>
  127. <nav class="md-nav" aria-label="Install with pip">
  128. <ul class="md-nav__list">
  129. <li class="md-nav__item">
  130. <a href="#use-postgresql-as-a-database" class="md-nav__link">
  131. Use PostgreSQL as a database
  132. </a>
  133. </li>
  134. <li class="md-nav__item">
  135. <a href="#use-rabbitmq-as-a-message-broker" class="md-nav__link">
  136. Use RabbitMQ as a message broker
  137. </a>
  138. </li>
  139. <li class="md-nav__item">
  140. <a href="#use-flower-to-monitor-celery-tasks" class="md-nav__link">
  141. Use Flower to monitor Celery tasks
  142. </a>
  143. </li>
  144. </ul>
  145. </nav>
  146. </li>
  147. <li class="md-nav__item">
  148. <a href="#install-with-docker" class="md-nav__link">
  149. Install with Docker
  150. </a>
  151. <nav class="md-nav" aria-label="Install with Docker">
  152. <ul class="md-nav__list">
  153. <li class="md-nav__item">
  154. <a href="#build-a-local-image-with-docker" class="md-nav__link">
  155. Build a local image with Docker
  156. </a>
  157. </li>
  158. <li class="md-nav__item">
  159. <a href="#use-flower" class="md-nav__link">
  160. Use Flower
  161. </a>
  162. </li>
  163. </ul>
  164. </nav>
  165. </li>
  166. <li class="md-nav__item">
  167. <a href="#install-with-docker-compose" class="md-nav__link">
  168. Install with Docker Compose
  169. </a>
  170. </li>
  171. <li class="md-nav__item">
  172. <a href="#install-from-source" class="md-nav__link">
  173. Install from source
  174. </a>
  175. <nav class="md-nav" aria-label="Install from source">
  176. <ul class="md-nav__list">
  177. <li class="md-nav__item">
  178. <a href="#backend" class="md-nav__link">
  179. Backend
  180. </a>
  181. </li>
  182. <li class="md-nav__item">
  183. <a href="#frontend" class="md-nav__link">
  184. Frontend
  185. </a>
  186. </li>
  187. <li class="md-nav__item">
  188. <a href="#how-to-create-a-python-package" class="md-nav__link">
  189. How to create a Python package
  190. </a>
  191. </li>
  192. </ul>
  193. </nav>
  194. </li>
  195. <li class="md-nav__item">
  196. <a href="#install-to-cloud" class="md-nav__link">
  197. Install to cloud
  198. </a>
  199. </li>
  200. <li class="md-nav__item">
  201. <a href="#upgrade-doccano" class="md-nav__link">
  202. Upgrade doccano
  203. </a>
  204. <nav class="md-nav" aria-label="Upgrade doccano">
  205. <ul class="md-nav__list">
  206. <li class="md-nav__item">
  207. <a href="#after-v160" class="md-nav__link">
  208. After v1.6.0
  209. </a>
  210. </li>
  211. <li class="md-nav__item">
  212. <a href="#before-v160" class="md-nav__link">
  213. Before v1.6.0
  214. </a>
  215. </li>
  216. </ul>
  217. </nav>
  218. </li>
  219. </ul>
  220. </nav>
  221. </li>
  222. <li class="md-nav__item">
  223. <a href="../tutorial/" class="md-nav__link">
  224. Tutorial
  225. </a>
  226. </li>
  227. <li class="md-nav__item">
  228. <a href="../setup_cloud_storage/" class="md-nav__link">
  229. Setup cloud storage
  230. </a>
  231. </li>
  232. <li class="md-nav__item md-nav__item--nested">
  233. <input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
  234. <label class="md-nav__link" for="nav-5">
  235. Advanced
  236. <span class="md-nav__icon md-icon"></span>
  237. </label>
  238. <nav class="md-nav" aria-label="Advanced" data-md-level="1">
  239. <label class="md-nav__title" for="nav-5">
  240. <span class="md-nav__icon md-icon"></span>
  241. Advanced
  242. </label>
  243. <ul class="md-nav__list" data-md-scrollfix>
  244. <li class="md-nav__item">
  245. <a href="../advanced/aws_https_settings/" class="md-nav__link">
  246. AWS HTTPS settings
  247. </a>
  248. </li>
  249. <li class="md-nav__item">
  250. <a href="../advanced/oauth2_settings/" class="md-nav__link">
  251. OAuth2 settings
  252. </a>
  253. </li>
  254. <li class="md-nav__item">
  255. <a href="../advanced/auto_labelling_config/" class="md-nav__link">
  256. Auto labeling settings
  257. </a>
  258. </li>
  259. </ul>
  260. </nav>
  261. </li>
  262. <li class="md-nav__item">
  263. <a href="../developer_guide/" class="md-nav__link">
  264. Developer guide
  265. </a>
  266. </li>
  267. <li class="md-nav__item">
  268. <a href="../faq/" class="md-nav__link">
  269. FAQ
  270. </a>
  271. </li>
  272. <li class="md-nav__item">
  273. <a href="../CODE_OF_CONDUCT/" class="md-nav__link">
  274. Code of conduct
  275. </a>
  276. </li>
  277. <li class="md-nav__item">
  278. <a href="../roadmap/" class="md-nav__link">
  279. Roadmap
  280. </a>
  281. </li>
  282. </ul>
  283. </nav>
  284. </div>
  285. </div>
  286. </div>
  287. <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
  288. <div class="md-sidebar__scrollwrap">
  289. <div class="md-sidebar__inner">
  290. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  291. <label class="md-nav__title" for="__toc">
  292. <span class="md-nav__icon md-icon"></span>
  293. Table of contents
  294. </label>
  295. <ul class="md-nav__list" data-md-scrollfix>
  296. <li class="md-nav__item">
  297. <a href="#system-requirements" class="md-nav__link">
  298. System requirements
  299. </a>
  300. <nav class="md-nav" aria-label="System requirements">
  301. <ul class="md-nav__list">
  302. <li class="md-nav__item">
  303. <a href="#web-browser-support" class="md-nav__link">
  304. Web browser support
  305. </a>
  306. </li>
  307. <li class="md-nav__item">
  308. <a href="#port-requirements" class="md-nav__link">
  309. Port requirements
  310. </a>
  311. </li>
  312. </ul>
  313. </nav>
  314. </li>
  315. <li class="md-nav__item">
  316. <a href="#install-with-pip" class="md-nav__link">
  317. Install with pip
  318. </a>
  319. <nav class="md-nav" aria-label="Install with pip">
  320. <ul class="md-nav__list">
  321. <li class="md-nav__item">
  322. <a href="#use-postgresql-as-a-database" class="md-nav__link">
  323. Use PostgreSQL as a database
  324. </a>
  325. </li>
  326. <li class="md-nav__item">
  327. <a href="#use-rabbitmq-as-a-message-broker" class="md-nav__link">
  328. Use RabbitMQ as a message broker
  329. </a>
  330. </li>
  331. <li class="md-nav__item">
  332. <a href="#use-flower-to-monitor-celery-tasks" class="md-nav__link">
  333. Use Flower to monitor Celery tasks
  334. </a>
  335. </li>
  336. </ul>
  337. </nav>
  338. </li>
  339. <li class="md-nav__item">
  340. <a href="#install-with-docker" class="md-nav__link">
  341. Install with Docker
  342. </a>
  343. <nav class="md-nav" aria-label="Install with Docker">
  344. <ul class="md-nav__list">
  345. <li class="md-nav__item">
  346. <a href="#build-a-local-image-with-docker" class="md-nav__link">
  347. Build a local image with Docker
  348. </a>
  349. </li>
  350. <li class="md-nav__item">
  351. <a href="#use-flower" class="md-nav__link">
  352. Use Flower
  353. </a>
  354. </li>
  355. </ul>
  356. </nav>
  357. </li>
  358. <li class="md-nav__item">
  359. <a href="#install-with-docker-compose" class="md-nav__link">
  360. Install with Docker Compose
  361. </a>
  362. </li>
  363. <li class="md-nav__item">
  364. <a href="#install-from-source" class="md-nav__link">
  365. Install from source
  366. </a>
  367. <nav class="md-nav" aria-label="Install from source">
  368. <ul class="md-nav__list">
  369. <li class="md-nav__item">
  370. <a href="#backend" class="md-nav__link">
  371. Backend
  372. </a>
  373. </li>
  374. <li class="md-nav__item">
  375. <a href="#frontend" class="md-nav__link">
  376. Frontend
  377. </a>
  378. </li>
  379. <li class="md-nav__item">
  380. <a href="#how-to-create-a-python-package" class="md-nav__link">
  381. How to create a Python package
  382. </a>
  383. </li>
  384. </ul>
  385. </nav>
  386. </li>
  387. <li class="md-nav__item">
  388. <a href="#install-to-cloud" class="md-nav__link">
  389. Install to cloud
  390. </a>
  391. </li>
  392. <li class="md-nav__item">
  393. <a href="#upgrade-doccano" class="md-nav__link">
  394. Upgrade doccano
  395. </a>
  396. <nav class="md-nav" aria-label="Upgrade doccano">
  397. <ul class="md-nav__list">
  398. <li class="md-nav__item">
  399. <a href="#after-v160" class="md-nav__link">
  400. After v1.6.0
  401. </a>
  402. </li>
  403. <li class="md-nav__item">
  404. <a href="#before-v160" class="md-nav__link">
  405. Before v1.6.0
  406. </a>
  407. </li>
  408. </ul>
  409. </nav>
  410. </li>
  411. </ul>
  412. </nav>
  413. </div>
  414. </div>
  415. </div>
  416. <div class="md-content">
  417. <article class="md-content__inner md-typeset">
  418. <a href="https://github.com/doccano/doccano/edit/master/docs/install_and_upgrade_doccano.md" title="Edit this page" class="md-content__button md-icon">
  419. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
  420. </a>
  421. <h1 id="install-doccano">Install doccano</h1>
  422. <p>Install doccano on local or in the cloud. Choose the installation method that works best for your environment:</p>
  423. <ul>
  424. <li><a href="#install-doccano">Install doccano</a></li>
  425. <li><a href="#system-requirements">System requirements</a><ul>
  426. <li><a href="#web-browser-support">Web browser support</a></li>
  427. <li><a href="#port-requirements">Port requirements</a></li>
  428. </ul>
  429. </li>
  430. <li><a href="#install-with-pip">Install with pip</a><ul>
  431. <li><a href="#use-postgresql-as-a-database">Use PostgreSQL as a database</a></li>
  432. <li><a href="#use-rabbitmq-as-a-message-broker">Use RabbitMQ as a message broker</a></li>
  433. <li><a href="#use-flower-to-monitor-celery-tasks">Use Flower to monitor Celery tasks</a></li>
  434. </ul>
  435. </li>
  436. <li><a href="#install-with-docker">Install with Docker</a><ul>
  437. <li><a href="#build-a-local-image-with-docker">Build a local image with Docker</a></li>
  438. <li><a href="#use-flower">Use Flower</a></li>
  439. </ul>
  440. </li>
  441. <li><a href="#install-with-docker-compose">Install with Docker Compose</a></li>
  442. <li><a href="#install-from-source">Install from source</a><ul>
  443. <li><a href="#backend">Backend</a></li>
  444. <li><a href="#frontend">Frontend</a></li>
  445. <li><a href="#how-to-create-a-python-package">How to create a Python package</a></li>
  446. </ul>
  447. </li>
  448. <li><a href="#install-to-cloud">Install to cloud</a></li>
  449. <li><a href="#upgrade-doccano">Upgrade doccano</a><ul>
  450. <li><a href="#after-v160">After v1.6.0</a></li>
  451. <li><a href="#before-v160">Before v1.6.0</a></li>
  452. </ul>
  453. </li>
  454. </ul>
  455. <h2 id="system-requirements">System requirements</h2>
  456. <p>You can install doccano on a Linux, Windows, or macOS machine running Python 3.8+.</p>
  457. <h3 id="web-browser-support">Web browser support</h3>
  458. <p>doccano is tested with the latest version of Google Chrome and is expected to work in the latest versions of:</p>
  459. <ul>
  460. <li>Google Chrome</li>
  461. <li>Apple Safari</li>
  462. </ul>
  463. <p>If using other web browsers, or older versions of supported web browsers, unexpected behavior could occur.</p>
  464. <h3 id="port-requirements">Port requirements</h3>
  465. <p>doccano uses port 8000 by default. To use a different port, specify it when running doccano webserver.</p>
  466. <h2 id="install-with-pip">Install with pip</h2>
  467. <p>To install doccano with pip, you need Python 3.8+. Run the following:</p>
  468. <pre><code class="language-bash">pip install doccano
  469. </code></pre>
  470. <p>After you install doccano, start the server with the following command:</p>
  471. <pre><code class="language-bash"># Initialize database. First time only.
  472. doccano init
  473. # Create a super user. First time only.
  474. doccano createuser --username admin --password pass
  475. # Start a web server.
  476. doccano webserver --port 8000
  477. </code></pre>
  478. <p>In another terminal, run the following command:</p>
  479. <pre><code class="language-bash"># Start the task queue to handle file upload/download.
  480. doccano task
  481. </code></pre>
  482. <p>Open <a href="http://localhost:8000/">http://localhost:8000/</a>.</p>
  483. <h3 id="use-postgresql-as-a-database">Use PostgreSQL as a database</h3>
  484. <p>By default, SQLite 3 is used for the default database system. You can also use other database systems like PostgreSQL, MySQL, and so on. Here we will show you how to use PostgreSQL.</p>
  485. <p>First, you need to install <code>psycopg2-binary</code> as an additional dependency:</p>
  486. <pre><code class="language-bash">pip install psycopg2-binary
  487. </code></pre>
  488. <p>Next, set up PostgreSQL. You can set up PostgreSQL directly, but here we will use Docker. Let's run the <code>docker run</code> command with the user name(<code>POSTGRES_USER</code>), password(<code>POSTGRES_PASSWORD</code>), and database name(<code>POSTGRES_DB</code>). For other options, please refer to the <a href="https://hub.docker.com/_/postgres">official documentation</a>.</p>
  489. <pre><code class="language-bash">docker run -d \
  490. --name doccano-postgres \
  491. -e POSTGRES_USER=doccano_admin \
  492. -e POSTGRES_PASSWORD=doccano_pass \
  493. -e POSTGRES_DB=doccano \
  494. -v doccano-db:/var/lib/postgresql/data \
  495. -p 5432:5432 \
  496. postgres:13.8-alpine
  497. </code></pre>
  498. <p>Then, set <code>DATABASE_URL</code> environment variable according to your PostgreSQL credentials. The schema is in line with dj-database-url. Please refer to the <a href="https://github.com/jazzband/dj-database-url">official documentation</a> for the detailed information.</p>
  499. <pre><code class="language-bash"># export DATABASE_URL=&quot;postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable&quot;
  500. export DATABASE_URL=&quot;postgres://doccano_admin:doccano_pass@localhost:5432/doccano?sslmode=disable&quot;
  501. </code></pre>
  502. <p>That's it. Now you can start by running the <code>doccano init</code> command.</p>
  503. <h3 id="use-rabbitmq-as-a-message-broker">Use RabbitMQ as a message broker</h3>
  504. <p>doccano uses Celery and a message broker to handle long tasks like importing/exporting datasets. By default, SQLite3 is used for the default message broker. You can also use other message brokers like RabbitMQ, Redis, and so on. Here we will show you how to use RabbitMQ.</p>
  505. <p>First, set up RabbitMQ. You can set up RabbitMQ directly, but here we will use Docker. Let's run the <code>docker run</code> command with the user name(<code>RABBITMQ_DEFAULT_USER</code>), password(<code>RABBITMQ_DEFAULT_PASS</code>). For other options, please refer to the <a href="https://hub.docker.com/_/rabbitmq">official documentation</a>.</p>
  506. <pre><code class="language-bash">docker run -d \
  507. --hostname doccano \
  508. --name doccano-rabbit \
  509. -e RABBITMQ_DEFAULT_USER=doccano_rabit \
  510. -e RABBITMQ_DEFAULT_PASS=doccano_pass \
  511. -p 5672:5672 \
  512. rabbitmq:3.10.7-alpine
  513. </code></pre>
  514. <p>Then, set <code>CELERY_BROKER_URL</code> environment variable according to your RabbitMQ credentials. If you want to know the schema, please refer to the <a href="https://docs.celeryq.dev/en/stable/userguide/configuration.html#broker-settings">official documentation</a>.</p>
  515. <pre><code class="language-bash"># export CELERY_BROKER_URL='amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@localhost:5672//'
  516. export CELERY_BROKER_URL='amqp://doccano_rabit:doccano_pass@localhost:5672//'
  517. </code></pre>
  518. <p>That's it. Now you can start webserver and task queue by running the <code>doccano webserver</code> and <code>doccano task</code> command. Notice that the both commands needs <code>DATABASE_URL</code> and <code>CELERY_BROKER_URL</code> environment variables if you would change them.</p>
  519. <h3 id="use-flower-to-monitor-celery-tasks">Use Flower to monitor Celery tasks</h3>
  520. <p>If you want to monitor and manage celery tasks, you can use <a href="https://flower.readthedocs.io/en/latest/index.html">Flower</a>. The <code>–basic_auth</code> option accepts <em>user:password</em> pairs separated by a comma. If configured, any client trying to access this Flower instance will be prompted to provide the credentials specified in this argument:</p>
  521. <pre><code class="language-bash">doccano flower --basic_auth=user1:password1,user2:password2
  522. </code></pre>
  523. <p>Open <a href="http://localhost:5555/">http://localhost:5555/</a>.</p>
  524. <h2 id="install-with-docker">Install with Docker</h2>
  525. <p>doccano is also available as a <a href="https://www.docker.com/">Docker</a> container. Make sure you have Docker installed on your machine.</p>
  526. <p>To install and start doccano at <a href="http://localhost:8000">http://localhost:8000</a>, run the following command:</p>
  527. <pre><code class="language-bash">docker pull doccano/doccano
  528. docker container create --name doccano \
  529. -e &quot;ADMIN_USERNAME=admin&quot; \
  530. -e &quot;ADMIN_EMAIL=admin@example.com&quot; \
  531. -e &quot;ADMIN_PASSWORD=password&quot; \
  532. -v doccano-db:/data \
  533. -p 8000:8000 doccano/doccano
  534. </code></pre>
  535. <p>Next, start doccano by running the container:</p>
  536. <pre><code class="language-bash">docker container start doccano
  537. </code></pre>
  538. <p>To stop the container, run <code>docker container stop doccano -t 5</code>.
  539. All data created in the container persist across restarts.</p>
  540. <p>If you want to use the latest features, please specify <code>nightly</code> tag:</p>
  541. <pre><code class="language-bash">docker pull doccano/doccano:nightly
  542. </code></pre>
  543. <h3 id="build-a-local-image-with-docker">Build a local image with Docker</h3>
  544. <p>If you want to build a local image, run:</p>
  545. <pre><code class="language-bash">docker build -t doccano:latest . -f docker/Dockerfile
  546. </code></pre>
  547. <h3 id="use-flower">Use Flower</h3>
  548. <p>Set <code>FLOWER_BASIC_AUTH</code> environment variable and open <code>5555</code> port. The variable accepts <em>user:password</em> pairs separated by a comma.</p>
  549. <pre><code class="language-bash">docker container create --name doccano \
  550. -e &quot;ADMIN_USERNAME=admin&quot; \
  551. -e &quot;ADMIN_EMAIL=admin@example.com&quot; \
  552. -e &quot;ADMIN_PASSWORD=password&quot; \
  553. -e &quot;FLOWER_BASIC_AUTH=username:password&quot;
  554. -v doccano-db:/data \
  555. -p 8000:8000 -p 5555:5555 doccano/doccano
  556. </code></pre>
  557. <h2 id="install-with-docker-compose">Install with Docker Compose</h2>
  558. <p>You need to install Git and to clone the repository:</p>
  559. <pre><code class="language-bash">git clone https://github.com/doccano/doccano.git
  560. cd doccano
  561. </code></pre>
  562. <p>To install and start doccano at <a href="http://localhost">http://localhost</a>, run the following command:</p>
  563. <pre><code class="language-bash">cd docker
  564. cp .env.example .env
  565. # Edit with the editor of your choice, in this example nano is used (ctrl+x, then &quot;y&quot; to save).
  566. nano .env
  567. docker-compose -f docker-compose.prod.yml --env-file .env up
  568. </code></pre>
  569. <p>You can override the default setting by rewriting the <code>.env</code> file. See <a href="https://github.com/doccano/doccano/blob/master/docker/.env.example">./docker/.env.example</a> in detail.</p>
  570. <h2 id="install-from-source">Install from source</h2>
  571. <p>If you want to develop doccano, consider downloading the source code using Git and running doccano locally. First of all, clone the repository:</p>
  572. <pre><code class="language-bash">git clone https://github.com/doccano/doccano.git
  573. cd doccano
  574. </code></pre>
  575. <h3 id="backend">Backend</h3>
  576. <p>The doccano backend is built in Python 3.8+ and uses <a href="https://github.com/python-poetry/poetry">Poetry</a> as a dependency manager. If you haven't installed them yet, please see <a href="https://www.python.org/downloads/">Python</a> and <a href="https://python-poetry.org/docs/">Poetry</a> documentation.</p>
  577. <p>First, to install the defined dependencies for our project, just run the <code>install</code> command. After that, activate the virtual environment by running <code>shell</code> command:</p>
  578. <pre><code class="language-bash">cd backend
  579. poetry install
  580. poetry shell
  581. </code></pre>
  582. <p>Second, set up the database and run the development server. Doccano uses <a href="https://www.djangoproject.com/">Django</a> and <a href="https://www.django-rest-framework.org/">Django Rest Framework</a> as a backend. We can set up them by using Django command:</p>
  583. <pre><code class="language-bash">python manage.py migrate
  584. python manage.py create_roles
  585. python manage.py create_admin --noinput --username &quot;admin&quot; --email &quot;admin@example.com&quot; --password &quot;password&quot;
  586. python manage.py runserver
  587. </code></pre>
  588. <p>In another terminal, you need to run Celery to use import/export dataset feature:</p>
  589. <pre><code class="language-bash">cd doccano/backend
  590. celery --app=config worker --loglevel=INFO --concurrency=1
  591. </code></pre>
  592. <p>After you change the code, don't forget to run <a href="https://mypy.readthedocs.io/en/stable/index.html">mypy</a>, <a href="https://flake8.pycqa.org/en/latest/">flake8</a>, <a href="https://github.com/psf/black">black</a>, and <a href="https://github.com/PyCQA/isort">isort</a>. These ensure code consistency. To run them, just run the following commands:</p>
  593. <pre><code class="language-bash">poetry run task mypy
  594. poetry run task flake8
  595. poetry run task black
  596. poetry run task isort
  597. </code></pre>
  598. <p>Similarly, you can run the test by executing the following command:</p>
  599. <pre><code class="language-bash">poetry run task test
  600. </code></pre>
  601. <p>Did you pass the test? Great!</p>
  602. <h3 id="frontend">Frontend</h3>
  603. <p>The doccano frontend is built in Node.js and uses <a href="https://yarnpkg.com/">Yarn</a> as a package manager. If you haven't installed them yet, please see <a href="https://nodejs.org/en/">Node.js</a> and <a href="https://yarnpkg.com/">Yarn</a> documentation.</p>
  604. <p>First, to install the defined dependencies for our project, just run the <code>install</code> command.</p>
  605. <pre><code class="language-bash">cd frontend
  606. yarn install
  607. </code></pre>
  608. <p>Then run the <code>dev</code> command to serve with hot reload at <localhost:3000>:</p>
  609. <pre><code class="language-bash">yarn dev
  610. </code></pre>
  611. <p>After you change the code, don't forget to run
  612. the following commands to ensure code consistency:</p>
  613. <pre><code class="language-bash">yarn lintfix
  614. yarn precommit
  615. yarn fix:prettier
  616. </code></pre>
  617. <h3 id="how-to-create-a-python-package">How to create a Python package</h3>
  618. <p>During development, you may want to create a Python package and verify it works correctly. In such a case, you can create a package by running the following command in the root directory of your project:</p>
  619. <pre><code class="language-bash">./tools/create-package.sh
  620. </code></pre>
  621. <p>This command builds the frontend, copies the files, and packages them. This will take a few minutes. After finishing the command, you will find <code>sdist</code> and <code>wheel</code> in <code>backend/dist</code>:</p>
  622. <pre><code class="language-bash">Building doccano (1.5.5.post335.dev0+6be6d198)
  623. - Building sdist
  624. - Built doccano-1.5.5.post335.dev0+6be6d198.tar.gz
  625. - Building wheel
  626. - Built doccano-1.5.5.post335.dev0+6be6d198-py3-none-any.whl
  627. </code></pre>
  628. <p>Then, you can install the package via <code>pip install</code> command:</p>
  629. <pre><code class="language-bash">pip install doccano-1.5.5.post335.dev0+6be6d198-py3-none-any.whl
  630. </code></pre>
  631. <h2 id="install-to-cloud">Install to cloud</h2>
  632. <p>doccano also supports one-click deployment to cloud providers. Click the following button, configure the environment, and access the UI.</p>
  633. <table>
  634. <thead>
  635. <tr>
  636. <th>Service</th>
  637. <th>Button</th>
  638. </tr>
  639. </thead>
  640. <tbody>
  641. <tr>
  642. <td>AWS</td>
  643. <td><a href="https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=doccano&amp;templateURL=https://doccano.s3.amazonaws.com/public/cloudformation/template.aws.yaml"><img alt="AWS CloudFormation Launch Stack SVG Button" src="https://cdn.rawgit.com/buildkite/cloudformation-launch-stack-button-svg/master/launch-stack.svg" /></a></td>
  644. </tr>
  645. <tr>
  646. <td>Heroku</td>
  647. <td><a href="https://dashboard.heroku.com/new?template=https%3A%2F%2Fgithub.com%2Fdoccano%2Fdoccano"><img alt="Deploy" src="https://www.herokucdn.com/deploy/button.svg" /></a></td>
  648. </tr>
  649. </tbody>
  650. </table>
  651. <h2 id="upgrade-doccano">Upgrade doccano</h2>
  652. <p>Caution: If you use SQLite3 as a database, upgrading the package would lose your database.</p>
  653. <p>The migrate command has been supported since v1.6.0.</p>
  654. <h3 id="after-v160">After v1.6.0</h3>
  655. <p>To upgrade to the latest version of doccano, reinstall or upgrade using pip.</p>
  656. <pre><code class="language-bash">pip install -U doccano
  657. </code></pre>
  658. <p>If you need to update the database scheme, run the following:</p>
  659. <pre><code class="language-bash">doccano migrate
  660. </code></pre>
  661. <h3 id="before-v160">Before v1.6.0</h3>
  662. <p>First, you need to copy the database file and media directory in the case of SQLite3:</p>
  663. <pre><code class="language-bash">mkdir -p ~/doccano
  664. # Replace your path.
  665. cp venv/lib/python3.8/site-packages/backend/db.sqlite3 ~/doccano/
  666. cp -r venv/lib/python3.8/site-packages/backend/media ~/doccano/
  667. </code></pre>
  668. <p>Then, upgrade the package:</p>
  669. <pre><code class="language-bash">pip install -U doccano
  670. </code></pre>
  671. <p>At the end, run the migration:</p>
  672. <pre><code class="language-bash">doccano migrate
  673. </code></pre>
  674. </article>
  675. </div>
  676. </div>
  677. </main>
  678. <footer class="md-footer">
  679. <div class="md-footer-nav">
  680. <nav class="md-footer-nav__inner md-grid" aria-label="Footer">
  681. <a href=".." class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
  682. <div class="md-footer-nav__button md-icon">
  683. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  684. </div>
  685. <div class="md-footer-nav__title">
  686. <div class="md-ellipsis">
  687. <span class="md-footer-nav__direction">
  688. Previous
  689. </span>
  690. Get started
  691. </div>
  692. </div>
  693. </a>
  694. <a href="../tutorial/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
  695. <div class="md-footer-nav__title">
  696. <div class="md-ellipsis">
  697. <span class="md-footer-nav__direction">
  698. Next
  699. </span>
  700. Tutorial
  701. </div>
  702. </div>
  703. <div class="md-footer-nav__button md-icon">
  704. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
  705. </div>
  706. </a>
  707. </nav>
  708. </div>
  709. <div class="md-footer-meta md-typeset">
  710. <div class="md-footer-meta__inner md-grid">
  711. <div class="md-footer-copyright">
  712. <div class="md-footer-copyright__highlight">
  713. Copyright &copy; 2018 - 2019 Hiroki Nakayama
  714. </div>
  715. Made with
  716. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  717. Material for MkDocs
  718. </a>
  719. </div>
  720. <div class="md-footer-social">
  721. <a href="https://github.com/Hironsan" target="_blank" rel="noopener" title="github.com" class="md-footer-social__link">
  722. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
  723. </a>
  724. <a href="https://twitter.com/Hironsan13" target="_blank" rel="noopener" title="twitter.com" class="md-footer-social__link">
  725. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
  726. </a>
  727. </div>
  728. </div>
  729. </div>
  730. </footer>
  731. </div>
  732. <script src="../assets/javascripts/vendor.6a3d08fc.min.js"></script>
  733. <script src="../assets/javascripts/bundle.71201edf.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
  734. <script>
  735. app = initialize({
  736. base: "..",
  737. features: [],
  738. search: Object.assign({
  739. worker: "../assets/javascripts/worker/search.4ac00218.min.js"
  740. }, typeof search !== "undefined" && search)
  741. })
  742. </script>
  743. </body>
  744. </html>