---
lang: ja-jp
breaks: true
---
# CodiMD を自前でホスティング 2021-03-17
> Docker Deployment
> https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-docker-deployment
> さくらクラウドで CodiMD を試す #15
> https://github.com/laughk/TIL/issues/15
> docker-compose で imgur を使わない HackMD 環境を構築
> https://kuratsuki.net/2019/04/imgur-%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84-hackmd-%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89/
hedgedocは、PlantUMLに対応していなかった。
https://hedgedoc.org/
https://github.com/hedgedoc/hedgedoc
docker-hackmd は、Archived となっておりバージョンも古い為使用しない。
https://github.com/hackmdio/docker-hackmd
> github hackmdio/codimd
> https://github.com/hackmdio/codimd
## CodiMD Manual Deployment
> CodiMD Manual Deployment
> https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-manual-deployment
> CodiMDをネイティブインストールしてみた
> https://wiki.infra-workshop.tech/user/ban/%E3%83%A1%E3%83%A2/CodiMD%E3%82%92%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F
## 事前準備
```shell=
$ sudo apt install nodejs
$ sudo apt install npm
```
##### バージョン確認
```shell=
$ node -v
v10.19.0
$ npm -v
6.14.4
```
##### 必要なモジュールをインストール
```shell=
$ npm install --save express
$ npm install ejs
$ npm install node-gyp
```
## PostgreSQLをインストール
<iframe src="https://hackmd.io/BE8JkuBfTcqlbyaPUuLVmw" width="100%" height="500"></iframe>
## PostgreSQLに 「role_codimd」ユーザを追加
```shell=
$ sudo -u postgres psql
psql (12.6 (Ubuntu 12.6-0ubuntu0.20.10.1))
Type "help" for help.
postgres=#
postgres=# CREATE ROLE role_codimd WITH LOGIN PASSWORD 'Password';
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-------------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
role_codimd | | {}
```
## PostgreSQLに データベース「codimd」を追加
```shell=
postgres=# create database codimd owner role_codimd encoding 'UTF8';
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------------+----------+-------------+-------------+-----------------------
codimd | role_codimd | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
(END)
\q
postgres=# \q
$
```
## codimd のセットアップ
```shell=
$ cd ~/work/hackmdio
```
```shell=
git clone https://github.com/hackmdio/codimd.git
```
```shell=
$ cd ~/work/hackmdio/codimd
```
```shell=
$ npm install package.json
```
```shell=
$ ./bin/setup
copy config files
install packages
npm WARN prometheus-api-metrics@2.2.5 requires a peer of prom-client@11.x but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
audited 2098 packages in 9.935s
54 packages are looking for funding
run `npm fund` for details
found 293 vulnerabilities (260 low, 17 moderate, 16 high)
run `npm audit fix` to fix them, or `npm audit` for details
Edit the following config file to setup CodiMD server and client.
Read more info at https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-configuration
* config.json -- CodiMD config
* .sequelizerc -- db config
```
## CodiMDの設定
> CodiMD Configuration
> https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-configuration#undefined
> Development - Environment Variable Specific Configs
> https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-configuration#Development---Environment-Variable-Specific-Configs
```shell=
$ vim config.json
```
「development」と「production」の「db」部分を設定。
```json=
"db": {
"username": "role_codimd",
"password": "Password",
"database": "codimd",
"host": "localhost",
"port": "5432",
"dialect": "postgres"
},
```
設定ファイル全体
```json=
{
"test": {
"db": {
"dialect": "sqlite",
"storage": ":memory:"
},
"linkifyHeaderStyle": "gfm"
},
"development": {
"loglevel": "debug",
"hsts": {
"enable": false
},
"db": {
"username": "role_codimd",
"password": "Password",
"database": "codimd",
"host": "localhost",
"port": "5432",
"dialect": "postgres"
},
"linkifyHeaderStyle": "gfm"
},
"production": {
"domain": "localhost",
"loglevel": "debug",
"hsts": {
"enable": true,
"maxAgeSeconds": 31536000,
"includeSubdomains": true,
"preload": true
},
"csp": {
"enable": true,
"directives": {
},
"upgradeInsecureRequests": "auto",
"addDefaults": true,
"addDisqus": true,
"addGoogleAnalytics": true
},
"db": {
"username": "role_codimd",
"password": "Password",
"database": "codimd",
"host": "localhost",
"port": "5432",
"dialect": "postgres"
},
"facebook": {
"clientID": "change this",
"clientSecret": "change this"
},
"twitter": {
"consumerKey": "change this",
"consumerSecret": "change this"
},
"github": {
"clientID": "change this",
"clientSecret": "change this"
},
"gitlab": {
"baseURL": "change this",
"clientID": "change this",
"clientSecret": "change this",
"scope": "use 'read_user' scope for auth user only or remove this property if you need gitlab snippet import/export support (will result to be default scope 'api')",
"version": "use 'v4' if gitlab version > 11, 'v3' otherwise. Default to 'v4'"
},
"mattermost": {
"baseURL": "change this",
"clientID": "change this",
"clientSecret": "change this"
},
"dropbox": {
"clientID": "change this",
"clientSecret": "change this",
"appKey": "change this"
},
"google": {
"clientID": "change this",
"clientSecret": "change this",
"apiKey": "change this"
},
"ldap": {
"url": "ldap://change_this",
"bindDn": null,
"bindCredentials": null,
"searchBase": "change this",
"searchFilter": "change this",
"searchAttributes": ["change this"],
"usernameField": "change this e.g. cn",
"useridField": "change this e.g. uid",
"tlsOptions": {
"changeme": "See https://nodejs.org/api/tls.html#tls_tls_connect_options_callback"
}
},
"saml": {
"idpSsoUrl": "change: authentication endpoint of IdP",
"idpCert": "change: certificate file path of IdP in PEM format",
"issuer": "change or delete: identity of the service provider (default: serverurl)",
"identifierFormat": "change or delete: name identifier format (default: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress')",
"disableRequestedAuthnContext": "change or delete: true to allow any authentication method, false restricts to password authentication method (default: false)",
"groupAttribute": "change or delete: attribute name for group list (ex: memberOf)",
"requiredGroups": [ "change or delete: group names that allowed" ],
"externalGroups": [ "change or delete: group names that not allowed" ],
"attribute": {
"id": "change or delete this: attribute map for `id` (default: NameID)",
"username": "change or delete this: attribute map for `username` (default: NameID)",
"email": "change or delete this: attribute map for `email` (default: NameID)"
}
},
"imgur": {
"clientID": "change this"
},
"minio": {
"accessKey": "change this",
"secretKey": "change this",
"endPoint": "change this",
"secure": true,
"port": 9000
},
"s3": {
"accessKeyId": "change this",
"secretAccessKey": "change this",
"region": "change this"
},
"s3bucket": "change this",
"azure":
{
"connectionString": "change this",
"container": "change this"
},
"plantuml":
{
"server": "https://www.plantuml.com/plantuml"
},
"linkifyHeaderStyle": "gfm"
}
}
```
## Modify the file named .sequelizerc, change the value of the variable url with your db connection string. For example: postgres://username:password@localhost:5432/codimd
```shell=
$ vim .sequelizerc
```
`url: process.env['postgres://role_codimd:Password@localhost:5432/codimd'] || config.dbURL` の部分を設定
```=
const path = require('path')
const config = require('./lib/config')
module.exports = {
config: path.resolve('config.js'),
'migrations-path': path.resolve('lib', 'migrations'),
'models-path': path.resolve('lib', 'models'),
url: process.env['postgres://role_codimd:Password@localhost:5432/codimd'] || config.dbURL
}
```
## Build front-end bundle with webpack.
> Webpack
> https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-webpack#undefined
```shell=
npm run build
```
```shell=
$ npm run build
> codimd@2.3.2 build /home/xxxxxxxx/work/hackmdio/codimd
> webpack --config webpack.prod.js --display errors-only -p
Browserslist: caniuse-lite is outdated. Please run the following command: `npm update`
Browserslist: caniuse-lite is outdated. Please run the following command: `npm update`
Browserslist: caniuse-lite is outdated. Please run the following command: `npm update`
Browserslist: caniuse-lite is outdated. Please run the following command: `npm update`
Browserslist: caniuse-lite is outdated. Please run the following command: `npm update`
Browserslist: caniuse-lite is outdated. Please run the following command: `npm update`
Child app:
Hash: 11a304feb34b7da7782c
Version: webpack 4.39.1
Time: 59302ms
Built at: 2021/04/29 19:13:20
Entrypoint font = font.css font.2766ae0f02de3d45f349.js
Entrypoint common = common.20f0ebbf2479b8f6d9f4.js
Entrypoint cover = cover.css cover.c2f169b40f3018a93d76.js
Entrypoint cover-styles-pack = cover-styles-pack.css cover-styles-pack.7426917c13a6d803517f.js
Entrypoint cover-pack [big] = cover-pack.css cover-pack.97360d007dee48c4aeb4.js
Entrypoint index [big] = index.css index.880265080eea349dc10d.js
Entrypoint index-styles = index-styles.css index-styles.29715afa7c305e2d8e52.js
Entrypoint index-styles-pack = index-styles-pack.css index-styles-pack.578697cc803d54a6cc5b.js
Entrypoint index-pack [big] = index-pack.css index-pack.1d373d2f34f0ffe69255.js
Entrypoint pretty [big] = pretty.css pretty.5f033c71b7bd43182307.js
Entrypoint pretty-styles = pretty-styles.css pretty-styles.4a0e232f2514b3829762.js
Entrypoint pretty-styles-pack = pretty-styles-pack.css pretty-styles-pack.e98ad4f4b500e8d23d86.js
Entrypoint pretty-pack [big] = pretty-pack.css pretty-pack.be9045fb2df8d5a6a88b.js
Entrypoint slide [big] = slide.css slide.01fe49f7e11b6ad268ad.js
Entrypoint slide-styles = slide-styles.css slide-styles.39e2ae401c04187f0f04.js
Entrypoint slide-styles-pack = slide-styles-pack.css slide-styles-pack.59b46e6f9f4f75fc8b7b.js
Entrypoint slide-pack [big] = slide-pack.css slide-pack.1ef8e5f358776493856b.js
[1160] ./public/css/google-font.css 39 bytes {4} [built]
[1161] multi expose-loader?jQuery!expose-loader?$!jquery velocity-animate imports-loader?$=jquery!jquery-mousewheel bootstrap 64 bytes {0} [built]
[1175] multi babel-polyfill ./public/js/cover.js 40 bytes {1} [built]
[1176] multi ./node_modules/bootstrap/dist/css/bootstrap.min.css ./public/css/bootstrap-social.css ./node_modules/select2/select2.css ./node_modules/select2/select2-bootstrap.css 64 bytes {3} [built]
[1179] multi babel-polyfill bootstrap-validator expose-loader?select2!select2 expose-loader?moment!moment ./public/js/cover.js 76 bytes {2} [built]
[1183] multi babel-polyfill script-loader!jquery-ui-resizable script-loader!codemirror script-loader!inlineAttachment script-loader!jqueryTextcomplete script-loader!codemirrorInlineAttachment script-loader!ot flowchart.js imports-loader?Raphael=raphael!js-sequence-diagrams expose-loader?RevealMarkdown!reveal-markdown ./public/js/index.js 148 bytes {5} [built]
[1184] multi ./public/vendor/jquery-ui/jquery-ui.min.css ./public/vendor/codemirror-spell-checker/spell-checker.min.css ./node_modules/@hackmd/codemirror/lib/codemirror.css ./node_modules/@hackmd/codemirror/addon/fold/foldgutter.css ./node_modules/@hackmd/codemirror/addon/display/fullscreen.css ./node_modules/@hackmd/codemirror/addon/dialog/dialog.css ./node_modules/@hackmd/codemirror/addon/scroll/simplescrollbars.css ./node_modules/@hackmd/codemirror/addon/search/matchesonscrollbar.css ./node_modules/@hackmd/codemirror/theme/monokai.css ./node_modules/@hackmd/codemirror/theme/one-dark.css ./node_modules/@hackmd/codemirror/theme/dracula.css ./node_modules/@hackmd/codemirror/theme/material.css ./node_modules/@hackmd/codemirror/theme/nord.css ./node_modules/@hackmd/codemirror/theme/panda-syntax.css ./node_modules/@hackmd/codemirror/theme/solarized.css ./public/css/codemirror-extend/ayu-dark.css ./public/css/codemirror-extend/ayu-mirage.css ./public/css/codemirror-extend/tomorrow-night-bright.css ./public/css/codemirror-extend/tomorrow-night-eighties.css ./node_modules/@hackmd/codemirror/mode/tiddlywiki/tiddlywiki.css ./node_modules/@hackmd/codemirror/mode/mediawiki/mediawiki.css ./public/css/github-extract.css ./public/vendor/showup/showup.css ./public/css/mermaid.css ./public/css/markdown.css ./public/css/slide-preview.css 328 bytes {7} [built]
[1207] multi ./node_modules/bootstrap/dist/css/bootstrap.min.css ./public/css/bootstrap-social.css ./node_modules/ionicons/css/ionicons.min.css ./node_modules/leaflet/dist/leaflet.css 64 bytes {8} [built]
[1208] multi babel-polyfill script-loader!jquery-ui-resizable bootstrap-validator expose-loader?jsyaml!js-yaml script-loader!mermaid expose-loader?moment!moment script-loader!handlebars expose-loader?hljs!highlight.js emojify.js script-loader!gist-embed script-loader!codemirror script-loader!inlineAttachment script-loader!jqueryTextcomplete script-loader!codemirrorInlineAttachment script-loader!ot flowchart.js imports-loader?Raphael=raphael!js-sequence-diagrams script-loader!viz.js script-loader!viz.render.js script-loader!abcjs script-loader!vega script-loader!vega-lite script-loader!vega-embed expose-loader?io!socket.io-client expose-loader?RevealMarkdown!reveal-markdown expose-loader?L!leaflet ./public/js/index.js 340 bytes {6} [built]
[1237] multi babel-polyfill flowchart.js imports-loader?Raphael=raphael!js-sequence-diagrams expose-loader?RevealMarkdown!reveal-markdown ./public/js/pretty.js 76 bytes {9} [built]
[1238] multi ./public/css/github-extract.css ./public/css/mermaid.css ./public/css/markdown.css ./public/css/slide-preview.css 64 bytes {11} [built]
[1239] multi ./node_modules/bootstrap/dist/css/bootstrap.min.css ./node_modules/ionicons/css/ionicons.min.css ./node_modules/leaflet/dist/leaflet.css 52 bytes {12} [built]
[1240] multi babel-polyfill expose-loader?jsyaml!js-yaml script-loader!mermaid expose-loader?moment!moment script-loader!handlebars expose-loader?hljs!highlight.js emojify.js script-loader!gist-embed flowchart.js imports-loader?Raphael=raphael!js-sequence-diagrams script-loader!viz.js script-loader!viz.render.js script-loader!abcjs script-loader!vega script-loader!vega-lite script-loader!vega-embed expose-loader?RevealMarkdown!reveal-markdown expose-loader?L!leaflet ./public/js/pretty.js 244 bytes {10} [built]
[1241] multi babel-polyfill bootstrap-tooltip flowchart.js imports-loader?Raphael=raphael!js-sequence-diagrams expose-loader?RevealMarkdown!reveal-markdown ./public/js/slide.js 88 bytes {13} [built]
[1242] multi ./public/vendor/bootstrap/tooltip.min.css ./public/css/github-extract.css ./public/css/mermaid.css ./public/css/markdown.css 64 bytes {15} [built]
+ 1278 hidden modules
WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
28df6ee7b407fd8a14b40bc01f4fd3ae.svg (326 KiB)
cover-pack.97360d007dee48c4aeb4.js (498 KiB)
index.880265080eea349dc10d.js (2.33 MiB)
index-pack.1d373d2f34f0ffe69255.js (8.05 MiB)
pretty.5f033c71b7bd43182307.js (1.07 MiB)
pretty-pack.be9045fb2df8d5a6a88b.js (6.71 MiB)
slide.01fe49f7e11b6ad268ad.js (1.08 MiB)
slide-pack.1ef8e5f358776493856b.js (6.9 MiB)
leaflet/leaflet-src.js (399 KiB)
reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.ttf (278 KiB)
reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.ttf (281 KiB)
MathJax/config/TeX-MML-AM_HTMLorMML.js (278 KiB)
MathJax/config/MML_HTMLorMML-full.js (274 KiB)
MathJax/config/TeX-MML-AM_CHTML.js (274 KiB)
MathJax/config/TeX-AMS_SVG-full.js (275 KiB)
MathJax/config/TeX-MML-AM_SVG.js (274 KiB)
MathJax/config/TeX-AMS_CHTML-full.js (283 KiB)
leaflet/leaflet-src.esm.js (398 KiB)
MathJax/config/AM_HTMLorMML-full.js (292 KiB)
MathJax/config/TeX-AMS-MML_SVG-full.js (296 KiB)
MathJax/config/TeX-AMS_HTML-full.js (307 KiB)
MathJax/config/TeX-MML-AM_SVG-full.js (334 KiB)
MathJax/config/TeX-MML-AM_CHTML-full.js (342 KiB)
fork-awesome/fonts/forkawesome-webfont.svg (470 KiB)
MathJax/config/Accessible-full.js (356 KiB)
MathJax/config/TeX-AMS-MML_HTMLorMML-full.js (356 KiB)
MathJax/config/TeX-MML-AM_HTMLorMML-full.js (395 KiB)
MathJax/fonts/HTML-CSS/Gyre-Pagella/eot/GyrePagellaMathJax_NonUnicode-Regular.eot (248 KiB)
dictionary-en-gb/index.dic (539 KiB)
MathJax/extensions/a11y/mathjax-sre.js (474 KiB)
MathJax/fonts/HTML-CSS/Latin-Modern/otf/LatinModernMathJax_NonUnicode-Regular.otf (312 KiB)
reveal.js/plugin/highlight/highlight.js (724 KiB)
MathJax/fonts/HTML-CSS/Latin-Modern/eot/LatinModernMathJax_NonUnicode-Regular.eot (377 KiB)
MathJax/extensions/a11y/mathmaps/mathmaps_ie.js (887 KiB)
dictionary-de/index.dic (1.06 MiB)
dictionary-de-ch/index.dic (1.07 MiB)
dictionary-de-at/index.dic (1.07 MiB)
MathJax/jax/output/SVG/fonts/Gyre-Termes/NonUnicode/Regular/Main.js (559 KiB)
MathJax/jax/output/SVG/fonts/Neo-Euler/NonUnicode/Regular/Main.js (538 KiB)
MathJax/jax/output/SVG/fonts/Gyre-Pagella/NonUnicode/Regular/Main.js (610 KiB)
MathJax/unpacked/extensions/a11y/mathjax-sre.js (474 KiB)
MathJax/jax/output/SVG/fonts/Latin-Modern/NonUnicode/Regular/Main.js (961 KiB)
MathJax/unpacked/extensions/a11y/mathmaps/mathmaps_ie.js (887 KiB)
MathJax/unpacked/jax/output/SVG/fonts/Gyre-Termes/NonUnicode/Regular/Main.js (566 KiB)
MathJax/unpacked/jax/output/SVG/fonts/Neo-Euler/NonUnicode/Regular/Main.js (544 KiB)
MathJax/unpacked/jax/output/SVG/fonts/Gyre-Pagella/NonUnicode/Regular/Main.js (618 KiB)
MathJax/unpacked/jax/output/SVG/fonts/Latin-Modern/NonUnicode/Regular/Main.js (971 KiB)
emojify.js/dist/css/data-uri/emojify.css (7.24 MiB)
emojify.js/dist/css/data-uri/emojify.min.css (7.21 MiB)
WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
cover-pack (506 KiB)
cover-pack.css
cover-pack.97360d007dee48c4aeb4.js
index (2.37 MiB)
index.css
index.880265080eea349dc10d.js
index-pack (8.08 MiB)
index-pack.css
index-pack.1d373d2f34f0ffe69255.js
pretty (1.09 MiB)
pretty.css
pretty.5f033c71b7bd43182307.js
pretty-pack (6.73 MiB)
pretty-pack.css
pretty-pack.be9045fb2df8d5a6a88b.js
slide (1.1 MiB)
slide.css
slide.01fe49f7e11b6ad268ad.js
slide-pack (6.92 MiB)
slide-pack.css
slide-pack.1ef8e5f358776493856b.js
WARNING in webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/
Child HtmlWebpackCompiler:
Entrypoint HtmlWebpackPlugin_0 = __child-HtmlWebpackPlugin_0
Entrypoint HtmlWebpackPlugin_1 = __child-HtmlWebpackPlugin_1
[0] ./node_modules/html-webpack-plugin/lib/loader.js!./public/views/includes/header.ejs 560 bytes {0} [built]
[1] ./node_modules/html-webpack-plugin/lib/loader.js!./public/views/includes/scripts.ejs 661 bytes {1} [built]
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/addon/dialog/dialog.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/addon/display/fullscreen.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/addon/fold/foldgutter.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/addon/hint/show-hint.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/addon/scroll/simplescrollbars.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/addon/search/matchesonscrollbar.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/lib/codemirror.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/mode/mediawiki/mediawiki.css:
Entrypoint mini-css-extract-plugin = *
9 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/mode/tiddlywiki/tiddlywiki.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/dracula.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/material.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/monokai.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/nord.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/one-dark.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/panda-syntax.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/@hackmd/codemirror/theme/solarized.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/bootstrap/dist/css/bootstrap.min.css:
Entrypoint mini-css-extract-plugin = *
8 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/highlight.js/styles/github-gist.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/ionicons/css/ionicons.min.css:
Entrypoint mini-css-extract-plugin = *
7 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/leaflet/dist/leaflet.css:
Entrypoint mini-css-extract-plugin = *
6 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/prismjs/themes/prism.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/select2/select2-bootstrap.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/select2/select2.css:
Entrypoint mini-css-extract-plugin = *
6 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/spin.js/spin.css:
Entrypoint mini-css-extract-plugin = *
2 modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/bootstrap-social.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/bootstrap-social.css 20.1 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/codemirror-extend/ayu-dark.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/codemirror-extend/ayu-dark.css 2.39 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/codemirror-extend/ayu-mirage.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/codemirror-extend/ayu-mirage.css 2.5 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/codemirror-extend/tomorrow-night-bright.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/codemirror-extend/tomorrow-night-bright.css 1.92 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/codemirror-extend/tomorrow-night-eighties.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/codemirror-extend/tomorrow-night-eighties.css 2.58 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/cover.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/cover.css 8.14 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/extra.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/extra.css 9.94 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/github-extract.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/github-extract.css 10.4 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/google-font.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/google-font.css 377 bytes {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/index.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/index.css 13.7 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/markdown.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/markdown.css 4.74 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/mermaid.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/mermaid.css 5.37 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/site.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/site.css 918 bytes {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/slide-preview.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/slide-preview.css 1.27 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/js/lib/renderer/fretboard/css/i.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/js/lib/renderer/fretboard/css/i.css 2.88 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/js/lib/renderer/lightbox/lightbox.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/js/lib/renderer/lightbox/lightbox.css 2.68 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/vendor/bootstrap/tooltip.min.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/vendor/bootstrap/tooltip.min.css 6.96 KiB {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/vendor/codemirror-spell-checker/spell-checker.min.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/vendor/codemirror-spell-checker/spell-checker.min.css 457 bytes {0} [built]
+ 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/vendor/jquery-ui/jquery-ui.min.css:
Entrypoint mini-css-extract-plugin = *
[0] ./public/vendor/jquery-ui/images/ui-icons_222222_256x240.png 4.93 KiB {0} [built]
[1] ./public/vendor/jquery-ui/images/ui-icons_454545_256x240.png 4.93 KiB {0} [built]
[2] ./public/vendor/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png 157 bytes {0} [built]
[3] ./node_modules/css-loader!./public/vendor/jquery-ui/jquery-ui.min.css 15.8 KiB {0} [built]
[6] ./public/vendor/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png 141 bytes {0} [built]
[7] ./public/vendor/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png 205 bytes {0} [built]
[8] ./public/vendor/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png 213 bytes {0} [built]
[9] ./public/vendor/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png 209 bytes {0} [built]
[10] ./public/vendor/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png 141 bytes {0} [built]
[11] ./public/vendor/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png 293 bytes {0} [built]
[12] ./public/vendor/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png 293 bytes {0} [built]
[13] ./public/vendor/jquery-ui/images/ui-icons_888888_256x240.png 4.93 KiB {0} [built]
[14] ./public/vendor/jquery-ui/images/ui-icons_2e83ff_256x240.png 4.93 KiB {0} [built]
[15] ./public/vendor/jquery-ui/images/ui-icons_cd0a0a_256x240.png 4.93 KiB {0} [built]
+ 2 hidden modules
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/vendor/showup/showup.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/vendor/showup/showup.css 2.58 KiB {0} [built]
+ 1 hidden module
Child save-as-html:
Child mini-css-extract-plugin node_modules/css-loader/index.js!public/css/extra.css:
Entrypoint mini-css-extract-plugin = *
[0] ./node_modules/css-loader!./public/css/extra.css 9.94 KiB {0} [built]
+ 1 hidden module
```
## DBのマイグレーションを実行
```shell=
node_modules/.bin/sequelize db:migrate
```
```shell=
$ node_modules/.bin/sequelize db:migrate
2021-04-29T10:15:21.930Z warn: Neither 'domain' nor 'CMD_DOMAIN' is configured. This can cause issues with various components.
Hint: Make sure 'protocolUseSSL' and 'urlAddPort' or 'CMD_PROTOCOL_USESSL' and 'CMD_URL_ADDPORT' are configured properly.
2021-04-29T10:15:21.932Z warn: Session secret not set. Using random generated one. Please set `sessionSecret` in your config.js file. All users will be logged out.
Sequelize CLI [Node: 10.19.0, CLI: 5.5.1, ORM: 5.21.3]
Loaded configuration file "config.js".
Executing (default): SELECT 1+1 AS result
Executing (default): SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_type LIKE '%TABLE' AND table_name != 'spatial_ref_sys';
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20150504155329-create-users: migrating =======
Executing (default): CREATE TABLE IF NOT EXISTS "Users" ("id" UUID , "profileid" VARCHAR(255) UNIQUE, "profile" TEXT, "history" TEXT, "createdAt" TIMESTAMP WITH TIME ZONE, "updatedAt" TIMESTAMP WITH TIME ZONE, PRIMARY KEY ("id"));
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20150504155329-create-users: migrated (0.022s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20150508114741-create-notes: migrating =======
Executing (default): CREATE TABLE IF NOT EXISTS "Notes" ("id" UUID , "ownerId" UUID, "content" TEXT, "title" VARCHAR(255), "createdAt" TIMESTAMP WITH TIME ZONE, "updatedAt" TIMESTAMP WITH TIME ZONE, PRIMARY KEY ("id"));
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20150508114741-create-notes: migrated (0.010s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20150515125813-create-temp: migrating =======
Executing (default): CREATE TABLE IF NOT EXISTS "Temp" ("id" VARCHAR(255) , "date" TEXT, "createdAt" TIMESTAMP WITH TIME ZONE, "updatedAt" TIMESTAMP WITH TIME ZONE, PRIMARY KEY ("id"));
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20150515125813-create-temp: migrated (0.010s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20150702001020-update-to-0_3_1: migrating =======
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "shortid" VARCHAR(255) NOT NULL DEFAULT '0000000000';
Executing (default): CREATE INDEX "notes_shortid" ON "Notes" ("shortid")
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "permission" VARCHAR(255) NOT NULL DEFAULT 'private';
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "viewcount" INTEGER DEFAULT 0;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20150702001020-update-to-0_3_1: migrated (0.013s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20150915153700-change-notes-title-to-text: migrating =======
Executing (default): ALTER TABLE "Notes" ALTER COLUMN "title" DROP NOT NULL;ALTER TABLE "Notes" ALTER COLUMN "title" DROP DEFAULT;ALTER TABLE "Notes" ALTER COLUMN "title" TYPE TEXT;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20150915153700-change-notes-title-to-text: migrated (0.028s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20160112220142-note-add-lastchange: migrating =======
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "lastchangeuserId" UUID;
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "lastchangeAt" TIMESTAMP WITH TIME ZONE;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20160112220142-note-add-lastchange: migrated (0.006s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20160420180355-note-add-alias: migrating =======
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "alias" VARCHAR(255);
Executing (default): CREATE INDEX "notes_alias" ON "Notes" ("alias")
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20160420180355-note-add-alias: migrated (0.018s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20160515114000-user-add-tokens: migrating =======
Executing (default): ALTER TABLE "public"."Users" ADD COLUMN "accessToken" VARCHAR(255);
Executing (default): ALTER TABLE "public"."Users" ADD COLUMN "refreshToken" VARCHAR(255);
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20160515114000-user-add-tokens: migrated (0.007s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20160607060246-support-revision: migrating =======
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "savedAt" TIMESTAMP WITH TIME ZONE;
Executing (default): CREATE TABLE IF NOT EXISTS "Revisions" ("id" UUID , "noteId" UUID, "patch" TEXT, "lastContent" TEXT, "content" TEXT, "length" INTEGER, "createdAt" TIMESTAMP WITH TIME ZONE, "updatedAt" TIMESTAMP WITH TIME ZONE, PRIMARY KEY ("id"));
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20160607060246-support-revision: migrated (0.016s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20160703062241-support-authorship: migrating =======
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "authorship" TEXT;
Executing (default): ALTER TABLE "public"."Revisions" ADD COLUMN "authorship" TEXT;
Executing (default): CREATE TABLE IF NOT EXISTS "Authors" ("id" SERIAL , "color" VARCHAR(255), "noteId" UUID, "userId" UUID, "createdAt" TIMESTAMP WITH TIME ZONE, "updatedAt" TIMESTAMP WITH TIME ZONE, PRIMARY KEY ("id"));
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20160703062241-support-authorship: migrated (0.011s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20161009040430-support-delete-note: migrating =======
Executing (default): ALTER TABLE "public"."Notes" ADD COLUMN "deletedAt" TIMESTAMP WITH TIME ZONE;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20161009040430-support-delete-note: migrated (0.006s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20161201050312-support-email-signin: migrating =======
Executing (default): ALTER TABLE "public"."Users" ADD COLUMN "email" TEXT;
Executing (default): ALTER TABLE "public"."Users" ADD COLUMN "password" TEXT;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20161201050312-support-email-signin: migrated (0.008s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20171009121200-longtext-for-mysql: migrating =======
(sequelize) Warning: PostgreSQL does not support TEXT with options. Plain `TEXT` will be used instead.
>> Check: http://www.postgresql.org/docs/9.4/static/datatype.html
Executing (default): ALTER TABLE "Notes" ALTER COLUMN "content" DROP NOT NULL;ALTER TABLE "Notes" ALTER COLUMN "content" DROP DEFAULT;ALTER TABLE "Notes" ALTER COLUMN "content" TYPE TEXT;
Executing (default): ALTER TABLE "Revisions" ALTER COLUMN "patch" DROP NOT NULL;ALTER TABLE "Revisions" ALTER COLUMN "patch" DROP DEFAULT;ALTER TABLE "Revisions" ALTER COLUMN "patch" TYPE TEXT;
Executing (default): ALTER TABLE "Revisions" ALTER COLUMN "content" DROP NOT NULL;ALTER TABLE "Revisions" ALTER COLUMN "content" DROP DEFAULT;ALTER TABLE "Revisions" ALTER COLUMN "content" TYPE TEXT;
Executing (default): ALTER TABLE "Revisions" ALTER COLUMN "lastContent" DROP NOT NULL;ALTER TABLE "Revisions" ALTER COLUMN "lastContent" DROP DEFAULT;ALTER TABLE "Revisions" ALTER COLUMN "lastContent" TYPE TEXT;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20171009121200-longtext-for-mysql: migrated (0.010s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20180209120907-longtext-of-authorship: migrating =======
Executing (default): ALTER TABLE "Notes" ALTER COLUMN "authorship" DROP NOT NULL;ALTER TABLE "Notes" ALTER COLUMN "authorship" DROP DEFAULT;ALTER TABLE "Notes" ALTER COLUMN "authorship" TYPE TEXT;
Executing (default): ALTER TABLE "Revisions" ALTER COLUMN "authorship" DROP NOT NULL;ALTER TABLE "Revisions" ALTER COLUMN "authorship" DROP DEFAULT;ALTER TABLE "Revisions" ALTER COLUMN "authorship" TYPE TEXT;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20180209120907-longtext-of-authorship: migrated (0.007s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20180306150303-fix-enum: migrating =======
Executing (default): ALTER TABLE "Notes" ALTER COLUMN "permission" DROP NOT NULL;ALTER TABLE "Notes" ALTER COLUMN "permission" DROP DEFAULT;CREATE TYPE "public"."enum_Notes_permission" AS ENUM('freely', 'editable', 'limited', 'locked', 'protected', 'private');ALTER TABLE "Notes" ALTER COLUMN "permission" TYPE "public"."enum_Notes_permission" USING ("permission"::"public"."enum_Notes_permission");
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20180306150303-fix-enum: migrated (0.017s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20180326103000-use-text-in-tokens: migrating =======
Executing (default): ALTER TABLE "Users" ALTER COLUMN "accessToken" DROP NOT NULL;ALTER TABLE "Users" ALTER COLUMN "accessToken" DROP DEFAULT;ALTER TABLE "Users" ALTER COLUMN "accessToken" TYPE TEXT;
Executing (default): ALTER TABLE "Users" ALTER COLUMN "refreshToken" DROP NOT NULL;ALTER TABLE "Users" ALTER COLUMN "refreshToken" DROP DEFAULT;ALTER TABLE "Users" ALTER COLUMN "refreshToken" TYPE TEXT;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20180326103000-use-text-in-tokens: migrated (0.009s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20180525153000-user-add-delete-token: migrating =======
Executing (default): ALTER TABLE "public"."Users" ADD COLUMN "deleteToken" UUID;
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20180525153000-user-add-delete-token: migrated (0.005s)
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
== 20200104215332-remove-temp-table: migrating =======
Executing (default): DROP TABLE IF EXISTS "Temp";
Executing (default): CREATE TABLE IF NOT EXISTS "SequelizeMeta" ("name" VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY ("name"));
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): INSERT INTO "SequelizeMeta" ("name") VALUES ($1) RETURNING *;
== 20200104215332-remove-temp-table: migrated (0.005s)
```
## CodiMDを起動
通常の起動方法
```shell=
node app.js
```
開発用に起動
```shell=
NODE_ENV='development' node app.js
```
本番用に起動
```shell=
NODE_ENV='production' node app.js
```
※sqliteを使用する場合に以下のエラーが出たら、sqliteをインストール
```log=
2021-04-28T01:25:20.440Z warn: Neither 'domain' nor 'CMD_DOMAIN' is configured. This can cause issues with various components.
Hint: Make sure 'protocolUseSSL' and 'urlAddPort' or 'CMD_PROTOCOL_USESSL' and 'CMD_URL_ADDPORT' are configured properly.
2021-04-28T01:25:20.442Z warn: Session secret not set. Using random generated one. Please set `sessionSecret` in your config.js file. All users will be logged out.
2021-04-28T01:25:20.585Z error: uncaughtException: Please install sqlite3 package manually
Error: Please install sqlite3 package manually
```
```shell=
npm install sqlite3
```
## HackMD の動作確認
`http://ip_address:3000`にアクセスし、HackMDが使用出来ればOK。

###### tags: `CodiMD` `Docker` `HackMD` `Ubuntu`