Merge pull request #453 from hedgedoc/misc/renaming

This commit is contained in:
David Mehren 2020-11-15 21:02:36 +01:00 committed by GitHub
commit 4c0efe1237
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
122 changed files with 692 additions and 805 deletions

View file

@ -14,7 +14,7 @@ trim_trailing_whitespace = true
[*.md] [*.md]
trim_trailing_whitespace = false trim_trailing_whitespace = false
[{.travis.yml,npm-shrinkwrap.json,package.json}] [{npm-shrinkwrap.json,package.json}]
indent_style = space indent_style = space
indent_size = 2 indent_size = 2

View file

@ -3,5 +3,5 @@
Please refer to the release notes published under Please refer to the release notes published under
[`public/docs/release-notes.md`](public/docs/release-notes.md). [`public/docs/release-notes.md`](public/docs/release-notes.md).
These are also available on each CodiMD instance under These are also available on each HedgeDoc instance under
<https://[domain-name]/release-notes> <https://[domain-name]/release-notes>

View file

@ -25,7 +25,7 @@ interactions with the project.
## Sign your work ## Sign your work
We use the Developer Certificate of Origin (DCO) as a additional safeguard We use the Developer Certificate of Origin (DCO) as a additional safeguard
for the CodiMD project. This is a well established and widely used for the HedgeDoc project. This is a well established and widely used
mechanism to assure contributors have confirmed their right to license mechanism to assure contributors have confirmed their right to license
their contribution under the project's license. their contribution under the project's license.
Please read [docs/legal/developer-certificate-of-origin.txt][dcofile]. Please read [docs/legal/developer-certificate-of-origin.txt][dcofile].

View file

@ -629,12 +629,12 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
CodiMD - Realtime collaborative markdown notes on all platforms. HedgeDoc - The best platform to write and share markdown.
Copyright (C) 2019 Christoph (Sheogorath) Kern Copyright (C) 2019 Christoph (Sheogorath) Kern
Copyright (C) 2019 Claudius Coenen Copyright (C) 2019 Claudius Coenen
Copyright (C) 2019 Max Wu Copyright (C) 2019 Max Wu
Copyright (C) 2017 Yukai Huang Copyright (C) 2017 Yukai Huang
And more can be found on https://github.com/codimd/server/graphs/contributors And more can be found on https://github.com/hedgedoc/hedgedoc/graphs/contributors
Or in the local AUTHORS file Or in the local AUTHORS file

View file

@ -1,21 +1,20 @@
# CodiMD ![HedgeDoc Logo](docs/images/hedgedoc_logo_horizontal.png)
[![#CodiMD on matrix.org][matrix.org-image]][matrix.org-url] # HedgeDoc
[![build status][travis-image]][travis-url]
[![#HedgeDoc on matrix.org][matrix.org-image]][matrix.org-url]
[![version][github-version-badge]][github-release-page] [![version][github-version-badge]][github-release-page]
[![POEditor][poeditor-image]][poeditor-url] [![POEditor][poeditor-image]][poeditor-url]
[![Mastodon][social-mastodon-image]][social-mastodon] [![Mastodon][social-mastodon-image]][social-mastodon]
CodiMD lets you create real-time collaborative markdown notes. You can test-drive HedgeDoc lets you create real-time collaborative markdown notes. You can test-drive
it by visiting our [CodiMD demo server][codimd-demo]. it by visiting our [HedgeDoc demo server][hedgedoc-demo].
**Note**: CodiMD is in the process of [changing its name to HedgeDoc](https://github.com/codimd/server/issues/452).
It is inspired by Hackpad, Etherpad and similar collaborative editors. This It is inspired by Hackpad, Etherpad and similar collaborative editors. This
project originated with the team at [HackMD](https://hackmd.io) and now forked project originated with the team at [HackMD](https://hackmd.io) and now forked
into its own organisation. [A longer writeup can be read in the history doc](docs/history.md). into its own organisation. [A longer writeup can be read in the history doc](docs/history.md).
[![CodiMD 1.3.2 with its feature demonstration page open](docs/images/CodiMD-1.3.2-features.png)][codimd-demo-features] [![HedgeDoc 1.7.0 with its feature demonstration page open](docs/images/HedgeDoc-1.7.0-features.png)][hedgedoc-demo-features]
## Community and Contributions ## Community and Contributions
@ -26,13 +25,13 @@ take a look at the [docs/dev](docs/dev) directory. In any case: come talk to us,
we'll be delighted to help you with the first steps. we'll be delighted to help you with the first steps.
To stay up to date with our work or get support it's recommended to join our To stay up to date with our work or get support it's recommended to join our
[Matrix channel][matrix.org-url], stop by our [community forums][codimd-community] [Matrix channel][matrix.org-url], stop by our [community forums][hedgedoc-community]
or subscribe to the [release feed][github-release-feed]. We also engage in or subscribe to the [release feed][github-release-feed]. We also engage in
regular [community calls][codimd-community-calls] ([RSS](https://community.codimd.org/t/codimd-community-call/19.rss)) which you are very welcome to join. regular [community calls][hedgedoc-community-calls] ([RSS](https://community.hedgedoc.org/t/codimd-community-call/19.rss)) which you are very welcome to join.
## Installation / Upgrading ## Installation / Upgrading
You can run CodiMD in a number of ways, and we created setup instructions for You can run HedgeDoc in a number of ways, and we created setup instructions for
all of these: all of these:
- [Docker](docs/setup/docker.md) - [Docker](docs/setup/docker.md)
@ -44,10 +43,10 @@ all of these:
## Configuration ## Configuration
Theres two main ways to [configure](docs/configuration.md) your CodiMD instance: Theres two main ways to [configure](docs/configuration.md) your HedgeDoc instance:
config file or environment variables. You can choose what works best for you. config file or environment variables. You can choose what works best for you.
CodiMD can integrate with HedgeDoc can integrate with
- facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2](docs/guides/auth/oauth.md) **for login** - facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2](docs/guides/auth/oauth.md) **for login**
- imgur, s3, minio, azure **for image/attachment storage** (files can also be local!) - imgur, s3, minio, azure **for image/attachment storage** (files can also be local!)
@ -57,7 +56,7 @@ More info about that can be found in the configuration docs above.
## Browser support ## Browser support
To use CodiMD, your browser should match or exceed these versions: To use HedgeDoc, your browser should match or exceed these versions:
- ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/chrome/chrome_24x24.png) Chrome >= 47, ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/chrome/chrome_24x24.png) Chrome for Android >= 47 - ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/chrome/chrome_24x24.png) Chrome >= 47, ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/chrome/chrome_24x24.png) Chrome for Android >= 47
- ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/safari/safari_24x24.png) Safari >= 9, ![iOS Safarai](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/safari-ios/safari-ios_24x24.png) iOS Safari >= 8.4 - ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/safari/safari_24x24.png) Safari >= 9, ![iOS Safarai](https://raw.githubusercontent.com/alrra/browser-logos/HEAD/src/safari-ios/safari-ios_24x24.png) iOS Safari >= 8.4
@ -68,36 +67,36 @@ To use CodiMD, your browser should match or exceed these versions:
## Backup/restore your instance ## Backup/restore your instance
To backup codimd, you should: To backup HedgeDoc, you should:
- backup your database - backup your database
- backup your custom config file if you have one - backup your custom config file if you have one
- backup the upload folder (see the [uploadsPath](./docs/configuration.md#codimd-paths-stuff) config directive) - backup the upload folder (see the [uploadsPath](./docs/configuration.md#hedgedoc-paths-stuff) config directive)
Restoring an existing instance of codimd is then just a matter of restoring these elements. Restoring an existing instance of HedgeDoc is then just a matter of restoring these elements.
## Related Tools ## Related Tools
Our community has created related tools, we'd like to highlight [codimd-cli](https://github.com/codimd/cli) Our community has created related tools, we'd like to highlight [hedgedoc-cli](https://github.com/hedgedoc/cli)
which lets you use CodiMD from the comfort of your command line. which lets you use HedgeDoc from the comfort of your command line.
## License ## License
Licensed under AGPLv3. For our list of contributors, see [AUTHORS](AUTHORS). Licensed under AGPLv3. For our list of contributors, see [AUTHORS](AUTHORS).
The license does not include the HedgeDoc logo, whose terms of usage can be found in the [github repository](https://github.com/hedgedoc/hedgedoc-logo).
[matrix.org-image]: https://img.shields.io/matrix/hedgedoc:matrix.org?logo=matrix&server_fqdn=matrix.org [matrix.org-image]: https://img.shields.io/matrix/hedgedoc:matrix.org?logo=matrix&server_fqdn=matrix.org
[matrix.org-url]: https://matrix.to/#/#hedgedoc:matrix.org [matrix.org-url]: https://matrix.to/#/#hedgedoc:matrix.org
[travis-image]: https://travis-ci.org/codimd/server.svg?branch=master [github-version-badge]: https://img.shields.io/github/release/hedgedoc/hedgedoc.svg
[travis-url]: https://travis-ci.org/codimd/server [github-release-page]: https://github.com/hedgedoc/hedgedoc/releases
[github-version-badge]: https://img.shields.io/github/release/codimd/server.svg [github-release-feed]: https://github.com/hedgedoc/hedgedoc/releases.atom
[github-release-page]: https://github.com/codimd/server/releases [github-issue-tracker]: https://github.com/hedgedoc/hedgedoc/issues/
[github-release-feed]: https://github.com/codimd/server/releases.atom
[github-issue-tracker]: https://github.com/codimd/server/issues/
[poeditor-image]: https://img.shields.io/badge/POEditor-translate-blue.svg [poeditor-image]: https://img.shields.io/badge/POEditor-translate-blue.svg
[poeditor-url]: https://poeditor.com/join/project/1OpGjF2Jir [poeditor-url]: https://poeditor.com/join/project/1OpGjF2Jir
[codimd-demo]: https://demo.codimd.org [hedgedoc-demo]: https://demo.hedgedoc.org
[codimd-demo-features]: https://demo.codimd.org/features [hedgedoc-demo-features]: https://demo.hedgedoc.org/features
[codimd-community]: https://community.codimd.org [hedgedoc-community]: https://community.hedgedoc.org
[codimd-community-calls]: https://community.codimd.org/t/codimd-community-call/19 [hedgedoc-community-calls]: https://community.hedgedoc.org/t/codimd-community-call/19
[social-mastodon]: https://social.codimd.org/mastodon [social-mastodon]: https://social.hedgedoc.org/mastodon
[social-mastodon-image]: https://img.shields.io/mastodon/follow/18547?domain=https%3A%2F%2Fsocial.snopyta.org&style=social [social-mastodon-image]: https://img.shields.io/mastodon/follow/18547?domain=https%3A%2F%2Fsocial.snopyta.org&style=social

View file

@ -2,12 +2,12 @@
## Supported Versions ## Supported Versions
Only the latest release of CodiMD is supported. We don't have the Only the latest release of HedgeDoc is supported. We don't have the
ressources to maintain multiple versions. ressources to maintain multiple versions.
## Reporting a Vulnerability ## Reporting a Vulnerability
If you find a vulnerability for [this repository](https://github.com/codimd/server), please report it to If you find a vulnerability for [this repository](https://github.com/hedgedoc/hedgedoc), please report it to
[@SISheogorath](https://github.com/SISheogorath). [@SISheogorath](https://github.com/SISheogorath).
Please report your findings OpenPGP encrypted. If you are not aware of Please report your findings OpenPGP encrypted. If you are not aware of
@ -25,8 +25,8 @@ the fix, we want to encurage you to publish your findings as you like.
We'll also credit you in the release notes. We'll also credit you in the release notes.
When your findings are not accepted as a security issue, feel free to write When your findings are not accepted as a security issue, feel free to write
a fix yourself and contribute it to CodiMD, as well as publish them as you a fix yourself and contribute it to HedgeDoc, as well as publish them as you
like and allow people to make in informed decision about using CodiMD. like and allow people to make in informed decision about using HedgeDoc.
If you have any further questions, feel free to reach out to the If you have any further questions, feel free to reach out to the
[community chat](https://matrix.to/#/#hedgedoc:matrix.org) or the mentioned contacts above. [community chat](https://matrix.to/#/#hedgedoc:matrix.org) or the mentioned contacts above.

4
app.js
View file

@ -176,7 +176,7 @@ app.use(passport.session())
app.use(require('./lib/web/middleware/checkURIValid')) app.use(require('./lib/web/middleware/checkURIValid'))
// redirect url without trailing slashes // redirect url without trailing slashes
app.use(require('./lib/web/middleware/redirectWithoutTrailingSlashes')) app.use(require('./lib/web/middleware/redirectWithoutTrailingSlashes'))
app.use(require('./lib/web/middleware/codiMDVersion')) app.use(require('./lib/web/middleware/hedgeDocVersion'))
// routes need sessions // routes need sessions
// template files // template files
@ -287,7 +287,7 @@ process.on('uncaughtException', function (err) {
// install exit handler // install exit handler
function handleTermSignals () { function handleTermSignals () {
logger.info('CodiMD has been killed by signal, try to exit gracefully...') logger.info('HedgeDoc has been killed by signal, try to exit gracefully...')
realtime.maintenance = true realtime.maintenance = true
// disconnect all socket.io clients // disconnect all socket.io clients
Object.keys(io.sockets.sockets).forEach(function (key) { Object.keys(io.sockets.sockets).forEach(function (key) {

View file

@ -1,14 +1,14 @@
{ {
"name": "CodiMD", "name": "HedgeDoc",
"description": "Realtime collaborative markdown notes on all platforms", "description": "The best platform to write and share markdown.",
"keywords": [ "keywords": [
"Collaborative", "Collaborative",
"Markdown", "Markdown",
"Notes" "Notes"
], ],
"website": "https://codimd.org", "website": "https://hedgedoc.org",
"repository": "https://github.com/codimd/server", "repository": "https://github.com/hedgedoc/hedgedoc",
"logo": "https://github.com/codimd/server/raw/master/public/codimd-icon-1024.png", "logo": "https://github.com/hedgedoc/hedgedoc/raw/master/public/hedgedoc-icon-1024.png",
"success_url": "/", "success_url": "/",
"env": { "env": {
"NPM_CONFIG_PRODUCTION": { "NPM_CONFIG_PRODUCTION": {

View file

@ -35,10 +35,10 @@ yarn install --production=false --pure-lockfile
cat << EOF cat << EOF
Edit the following config file to setup CodiMD server and client. Edit the following config file to setup HedgeDoc server and client.
Read more info at https://github.com/codimd/server#configuration-files Read more info at https://github.com/hedgedoc/hedgedoc#configuration-files
* config.json -- CodiMD config * config.json -- HedgeDoc config
* .sequelizerc -- db config * .sequelizerc -- db config
EOF EOF

View file

@ -13,7 +13,7 @@
}, },
"db": { "db": {
"dialect": "sqlite", "dialect": "sqlite",
"storage": "./db.codimd.sqlite" "storage": "./db.hedgedoc.sqlite"
}, },
"linkifyHeaderStyle": "gfm" "linkifyHeaderStyle": "gfm"
}, },
@ -39,7 +39,7 @@
"db": { "db": {
"username": "", "username": "",
"password": "", "password": "",
"database": "codimd", "database": "hedgedoc",
"host": "localhost", "host": "localhost",
"port": "5432", "port": "5432",
"dialect": "postgres" "dialect": "postgres"

View file

@ -1,6 +1,6 @@
# Configuration # Configuration
You can choose to configure CodiMD with either a config file or with environment variables. You can choose to configure HedgeDoc with either a config file or with environment variables.
Environment variables take precedence over configurations from the config files. They generally start with `CMD_` for our own options, but we also list node-specific options you can configure this way. Environment variables take precedence over configurations from the config files. They generally start with `CMD_` for our own options, but we also list node-specific options you can configure this way.
@ -18,18 +18,18 @@ to `config.json` before filling in your own details.
| | `NODE_ENV` | `production` or `development` | set current environment (will apply corresponding settings in the `config.json`) | | | `NODE_ENV` | `production` or `development` | set current environment (will apply corresponding settings in the `config.json`) |
| `debug` | `DEBUG` | `true` or `false` | set debug mode, show more logs | | `debug` | `DEBUG` | `true` or `false` | set debug mode, show more logs |
## CodiMD basics ## HedgeDoc basics
| config file | environment | **default** and example value | description | | config file | environment | **default** and example value | description |
| ------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `allowPDFExport` | `CMD_ALLOW_PDF_EXPORT` | **`true`** or `false` | Enable or disable PDF exports | | `allowPDFExport` | `CMD_ALLOW_PDF_EXPORT` | **`true`** or `false` | Enable or disable PDF exports |
| | `CMD_CONFIG_FILE` | **no default**, `/path/to/config.json` | optional override for the path to CodiMD's config file | | | `CMD_CONFIG_FILE` | **no default**, `/path/to/config.json` | optional override for the path to HedgeDoc's config file |
| `db` | | **`undefined`**, `{ "dialect": "sqlite", "storage": "./db.codimd.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) | | `db` | | **`undefined`**, `{ "dialect": "sqlite", "storage": "./db.hedgedoc.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) |
| `dbURL` | `CMD_DB_URL` | **`undefined`**, `mysql://localhost:3306/database` | Set the db in URL style. If set, then the relevant `db` config entries will be overridden. | | `dbURL` | `CMD_DB_URL` | **`undefined`**, `mysql://localhost:3306/database` | Set the db in URL style. If set, then the relevant `db` config entries will be overridden. |
| `loglevel` | `CMD_LOGLEVEL` | **`info`**, `debug` ... | Defines what kind of logs are provided to stdout. Available options: `debug`, `verbose`, `info`, `warn`, `error` | | `loglevel` | `CMD_LOGLEVEL` | **`info`**, `debug` ... | Defines what kind of logs are provided to stdout. Available options: `debug`, `verbose`, `info`, `warn`, `error` |
| `forbiddenNoteIDs` | `CMD_FORBIDDEN_NOTE_IDS` | **`['robots.txt', 'favicon.ico', 'api', 'build', 'css', 'docs', 'fonts', 'js', 'uploads', 'vendor', 'views']`**, `['robots.txt']` or `'robots.txt'` | disallow creation of notes, even if `allowFreeUrl` or `CMD_ALLOW_FREEURL` is `true` | | `forbiddenNoteIDs` | `CMD_FORBIDDEN_NOTE_IDS` | **`['robots.txt', 'favicon.ico', 'api', 'build', 'css', 'docs', 'fonts', 'js', 'uploads', 'vendor', 'views']`**, `['robots.txt']` or `'robots.txt'` | disallow creation of notes, even if `allowFreeUrl` or `CMD_ALLOW_FREEURL` is `true` |
| `imageUploadType` | `CMD_IMAGE_UPLOAD_TYPE` | **`filesystem`**, `imgur`, `s3`, `minio`, `azure`, `lutim` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. | | `imageUploadType` | `CMD_IMAGE_UPLOAD_TYPE` | **`filesystem`**, `imgur`, `s3`, `minio`, `azure`, `lutim` | Where to upload images. For S3, see our Image Upload Guides for [S3](guides/s3-image-upload.md) or [Minio](guides/minio-image-upload.md), also there's a whole section on their respective env vars below. |
| `sourceURL` | `CMD_SOURCE_URL` | **no default**, `https://github.com/codimd/server/tree/<current commit>` | Provides the link to the source code of CodiMD on the entry page (Please, make sure you change this when you run a modified version) | | `sourceURL` | `CMD_SOURCE_URL` | **no default**, `https://github.com/hedgedoc/hedgedoc/tree/<current commit>` | Provides the link to the source code of HedgeDoc on the entry page (Please, make sure you change this when you run a modified version) |
| `tooBusyLag` | `CMD_TOOBUSY_LAG` | **`70`** | CPU time for one event loop tick until node throttles connections. (milliseconds) | | `tooBusyLag` | `CMD_TOOBUSY_LAG` | **`70`** | CPU time for one event loop tick until node throttles connections. (milliseconds) |
| `staticCacheTime` | | **`1 * 24 * 60 * 60 * 1000`** | static file cache time | | `staticCacheTime` | | **`1 * 24 * 60 * 60 * 1000`** | static file cache time |
| `heartbeatInterval` | | **`5000`** | socket.io heartbeat interval | | `heartbeatInterval` | | **`5000`** | socket.io heartbeat interval |
@ -37,7 +37,7 @@ to `config.json` before filling in your own details.
| `documentMaxLength` | | **`100000`** | note max length | | `documentMaxLength` | | **`100000`** | note max length |
| `linkifyHeaderStyle` | | **`keep-case`**, `lower-case`, `gfm` | how is a header text converted into a link id | | `linkifyHeaderStyle` | | **`keep-case`**, `lower-case`, `gfm` | how is a header text converted into a link id |
## CodiMD paths stuff ## HedgeDoc paths stuff
these are rarely used for various reasons. these are rarely used for various reasons.
@ -46,28 +46,28 @@ these are rarely used for various reasons.
| `defaultNotePath` | | **`./public/default.md`** | default note file path<sup>1</sup>, empty notes will be created with this template. | | `defaultNotePath` | | **`./public/default.md`** | default note file path<sup>1</sup>, empty notes will be created with this template. |
| `dhParamPath` | | **`undefined`**, `./cert/dhparam.pem` | SSL dhparam path<sup>1</sup> (only need when you set `useSSL`) | | `dhParamPath` | | **`undefined`**, `./cert/dhparam.pem` | SSL dhparam path<sup>1</sup> (only need when you set `useSSL`) |
| `sslCAPath` | | **`undefined`**, `['./cert/COMODORSAAddTrustCA.crt']` | SSL ca chain<sup>1</sup> (only need when you set `useSSL`) | | `sslCAPath` | | **`undefined`**, `['./cert/COMODORSAAddTrustCA.crt']` | SSL ca chain<sup>1</sup> (only need when you set `useSSL`) |
| `sslCertPath` | | **`undefined`**, `./cert/codimd_io.crt` | SSL cert path<sup>1</sup> (only need when you set `useSSL`) | | `sslCertPath` | | **`undefined`**, `./cert/hedgedoc_io.crt` | SSL cert path<sup>1</sup> (only need when you set `useSSL`) |
| `sslKeyPath` | | **`undefined`**, `./cert/client.key` | SSL key path<sup>1</sup> (only need when you set `useSSL`) | | `sslKeyPath` | | **`undefined`**, `./cert/client.key` | SSL key path<sup>1</sup> (only need when you set `useSSL`) |
| `tmpPath` | | **`os.tmpdir()`**, `./tmp/` | temp directory path<sup>1</sup> | | `tmpPath` | | **`os.tmpdir()`**, `./tmp/` | temp directory path<sup>1</sup> |
| `docsPath` | | **`./public/docs`** | docs directory path<sup>1</sup> | | `docsPath` | | **`./public/docs`** | docs directory path<sup>1</sup> |
| `viewPath` | | **`./public/views`** | template directory path<sup>1</sup> | | `viewPath` | | **`./public/views`** | template directory path<sup>1</sup> |
| `uploadsPath` | | **`./public/uploads`** | uploads directory<sup>1</sup> - needs to be persistent when you use imageUploadType `filesystem` | | `uploadsPath` | | **`./public/uploads`** | uploads directory<sup>1</sup> - needs to be persistent when you use imageUploadType `filesystem` |
**Note:** *relative paths are based on CodiMD's base directory* **Note:** *relative paths are based on HedgeDoc's base directory*
## CodiMD Location ## HedgeDoc Location
| config file | environment | **default** and example value | description | | config file | environment | **default** and example value | description |
| ---------------- | --------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | | ---------------- | --------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `domain` | `CMD_DOMAIN` | **`null`**, `localhost`, `codimd.org` | domain name | | `domain` | `CMD_DOMAIN` | **`null`**, `localhost`, `hedgedoc.org` | domain name |
| `urlPath` | `CMD_URL_PATH` | **`null`**, `codimd` | If CodiMD is run from a subdirectory like `www.example.com/<urlpath>` | | `urlPath` | `CMD_URL_PATH` | **`null`**, `hedgedoc` | If HedgeDoc is run from a subdirectory like `www.example.com/<urlpath>` |
| `host` | `CMD_HOST` | **`0.0.0.0`**, `localhost` | interface/ip to listen on | | `host` | `CMD_HOST` | **`0.0.0.0`**, `localhost` | interface/ip to listen on |
| `port` | `CMD_PORT` | **`3000`**, `80` | port to listen on | | `port` | `CMD_PORT` | **`3000`**, `80` | port to listen on |
| `path` | `CMD_PATH` | **no default**, `/var/run/codimd.sock` | path to UNIX domain socket to listen on (if specified, `host` or `CMD_HOST` and `port` or `CMD_PORT` are ignored) | | `path` | `CMD_PATH` | **no default**, `/var/run/hedgedoc.sock` | path to UNIX domain socket to listen on (if specified, `host` or `CMD_HOST` and `port` or `CMD_PORT` are ignored) |
| `protocolUseSSL` | `CMD_PROTOCOL_USESSL` | **`false`** or `true` | set to use SSL protocol for resources path (only applied when domain is set) | | `protocolUseSSL` | `CMD_PROTOCOL_USESSL` | **`false`** or `true` | set to use SSL protocol for resources path (only applied when domain is set) |
| `useSSL` | | **`false`** or `true` | set to use SSL server (if `true`, will auto turn on `protocolUseSSL`) | | `useSSL` | | **`false`** or `true` | set to use SSL server (if `true`, will auto turn on `protocolUseSSL`) |
| `urlAddPort` | `CMD_URL_ADDPORT` | **`false`** or `true` | set to add port on callback URL (ports `80` or `443` won't be applied) (only applied when domain is set) | | `urlAddPort` | `CMD_URL_ADDPORT` | **`false`** or `true` | set to add port on callback URL (ports `80` or `443` won't be applied) (only applied when domain is set) |
| `allowOrigin` | `CMD_ALLOW_ORIGIN` | **`['localhost']`**, `['codimd.org']`, `[localhost, codimd.org]` | domain name whitelist (use comma to separate) | | `allowOrigin` | `CMD_ALLOW_ORIGIN` | **`['localhost']`**, `['hedgedoc.org']`, `['localhost', 'hedgedoc.org']` | domain name whitelist (use comma to separate) |
## Web security aspects ## Web security aspects
@ -166,8 +166,8 @@ these are rarely used for various reasons.
| | `CMD_LDAP_SEARCHBASE` | **no default**, `o=users,dc=example,dc=com` | LDAP directory to begin search from | | | `CMD_LDAP_SEARCHBASE` | **no default**, `o=users,dc=example,dc=com` | LDAP directory to begin search from |
| | `CMD_LDAP_SEARCHFILTER` | **no default**, `(uid={{username}})` | LDAP filter to search with | | | `CMD_LDAP_SEARCHFILTER` | **no default**, `(uid={{username}})` | LDAP filter to search with |
| | `CMD_LDAP_SEARCHATTRIBUTES` | **no default**, `displayName, mail` | LDAP attributes to search with (use comma to separate) | | | `CMD_LDAP_SEARCHATTRIBUTES` | **no default**, `displayName, mail` | LDAP attributes to search with (use comma to separate) |
| | `CMD_LDAP_USERIDFIELD` | **no default**, `uidNumber` or `uid` or `sAMAccountName` | The LDAP field which is used uniquely identify a user on CodiMD | | | `CMD_LDAP_USERIDFIELD` | **no default**, `uidNumber` or `uid` or `sAMAccountName` | The LDAP field which is used uniquely identify a user on HedgeDoc |
| | `CMD_LDAP_USERNAMEFIELD` | **no default**, fallback to userid | The LDAP field which is used as the username on CodiMD | | | `CMD_LDAP_USERNAMEFIELD` | **no default**, fallback to userid | The LDAP field which is used as the username on HedgeDoc |
| | `CMD_LDAP_TLS_CA` | **no default**, `server-cert.pem, root.pem` | Root CA for LDAP TLS in PEM format (use comma to separate) | | | `CMD_LDAP_TLS_CA` | **no default**, `server-cert.pem, root.pem` | Root CA for LDAP TLS in PEM format (use comma to separate) |
| | `CMD_LDAP_PROVIDERNAME` | **no default**, `My institution` | Optional name to be displayed at login form indicating the LDAP provider | | | `CMD_LDAP_PROVIDERNAME` | **no default**, `My institution` | Optional name to be displayed at login form indicating the LDAP provider |
@ -191,8 +191,8 @@ these are rarely used for various reasons.
| | `CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR` | **no default**, `email` | where to find the email address in the JSON from the user profile URL. (no default value) | | | `CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR` | **no default**, `email` | where to find the email address in the JSON from the user profile URL. (no default value) |
| | `CMD_OAUTH2_TOKEN_URL` | **no default**, `https://example.com` | sometimes called token endpoint, please refer to the documentation of your OAuth2 provider (no default value) | | | `CMD_OAUTH2_TOKEN_URL` | **no default**, `https://example.com` | sometimes called token endpoint, please refer to the documentation of your OAuth2 provider (no default value) |
| | `CMD_OAUTH2_AUTHORIZATION_URL` | **no default**, `https://example.com` | authorization URL of your provider, please refer to the documentation of your OAuth2 provider (no default value) | | | `CMD_OAUTH2_AUTHORIZATION_URL` | **no default**, `https://example.com` | authorization URL of your provider, please refer to the documentation of your OAuth2 provider (no default value) |
| | `CMD_OAUTH2_CLIENT_ID` | **no default**, `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) | | | `CMD_OAUTH2_CLIENT_ID` | **no default**, `afae02fckafd...` | you will get this from your OAuth2 provider when you register HedgeDoc as OAuth2-client, (no default value) |
| | `CMD_OAUTH2_CLIENT_SECRET` | **no default**, `afae02fckafd...` | you will get this from your OAuth2 provider when you register CodiMD as OAuth2-client, (no default value) | | | `CMD_OAUTH2_CLIENT_SECRET` | **no default**, `afae02fckafd...` | you will get this from your OAuth2 provider when you register HedgeDoc as OAuth2-client, (no default value) |
| | `CMD_OAUTH2_PROVIDERNAME` | **no default**, `My institution` | Optional name to be displayed at login form indicating the oAuth2 provider | | | `CMD_OAUTH2_PROVIDERNAME` | **no default**, `My institution` | Optional name to be displayed at login form indicating the oAuth2 provider |
| | `CMD_OAUTH2_SCOPE` | **no default**, `openid email profile` | Scope to request for OIDC (OpenID Connect) providers. | | | `CMD_OAUTH2_SCOPE` | **no default**, `openid email profile` | Scope to request for OIDC (OpenID Connect) providers. |
@ -208,7 +208,7 @@ these are rarely used for various reasons.
| | `CMD_SAML_DISABLEREQUESTEDAUTHNCONTEXT` | **no default**, `true` or `false` | true to allow any authentication method, false restricts to password authentication (PasswordProtectedTransport) method (default: false) | | | `CMD_SAML_DISABLEREQUESTEDAUTHNCONTEXT` | **no default**, `true` or `false` | true to allow any authentication method, false restricts to password authentication (PasswordProtectedTransport) method (default: false) |
| | `CMD_SAML_IDENTIFIERFORMAT` | **`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`** | name identifier format (optional, default: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`) | | | `CMD_SAML_IDENTIFIERFORMAT` | **`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`** | name identifier format (optional, default: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`) |
| | `CMD_SAML_GROUPATTRIBUTE` | **no default**, `memberOf` | attribute name for group list (optional) | | | `CMD_SAML_GROUPATTRIBUTE` | **no default**, `memberOf` | attribute name for group list (optional) |
| | `CMD_SAML_REQUIREDGROUPS` | **no default**, `codimd-users` | group names that allowed (use vertical bar to separate) (optional) | | | `CMD_SAML_REQUIREDGROUPS` | **no default**, `hedgedoc-users` | group names that allowed (use vertical bar to separate) (optional) |
| | `CMD_SAML_EXTERNALGROUPS` | **no default**, `Temporary-staff` | group names that not allowed (use vertical bar to separate) (optional) | | | `CMD_SAML_EXTERNALGROUPS` | **no default**, `Temporary-staff` | group names that not allowed (use vertical bar to separate) (optional) |
| | `CMD_SAML_ATTRIBUTE_ID` | **no default**, `sAMAccountName` | attribute map for `id` (optional, default: NameID of SAML response) | | | `CMD_SAML_ATTRIBUTE_ID` | **no default**, `sAMAccountName` | attribute map for `id` (optional, default: NameID of SAML response) |
| | `CMD_SAML_ATTRIBUTE_USERNAME` | **no default**, `mailNickname` | attribute map for `username` (optional, default: NameID of SAML response) | | | `CMD_SAML_ATTRIBUTE_USERNAME` | **no default**, `mailNickname` | attribute map for `username` (optional, default: NameID of SAML response) |

View file

@ -1,5 +1,5 @@
# API documentation # API documentation
Several tasks of CodiMD can be automated through HTTP requests. Several tasks of HedgeDoc can be automated through HTTP requests.
The available endpoints for this api are described in this document. The available endpoints for this api are described in this document.
For code-autogeneration there is an OpenAPIv3-compatible description available [here](openapi.yml). For code-autogeneration there is an OpenAPIv3-compatible description available [here](openapi.yml).
@ -34,9 +34,9 @@ These endpoints return information about the current logged-in user and it's not
| `/history/<NOTE>` | `POST` | **Toggles the pinned status in the history for a note.**<br>The body must be form-encoded and contain a field `pinned` that is either `true` or `false`. | | `/history/<NOTE>` | `POST` | **Toggles the pinned status in the history for a note.**<br>The body must be form-encoded and contain a field `pinned` that is either `true` or `false`. |
| `/history/<NOTE>` | `DELETE` | **Deletes a note from the user's history.** | | `/history/<NOTE>` | `DELETE` | **Deletes a note from the user's history.** |
## CodiMD-server ## HedgeDoc-server
These endpoints return information about the running CodiMD instance. These endpoints return information about the running HedgeDoc instance.
| Endpoint | HTTP-Method | Description | | Endpoint | HTTP-Method | Description |
| --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/status` | `GET` | **Returns the current status of the CodiMD instance.**<br>The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. | | `/status` | `GET` | **Returns the current status of the HedgeDoc instance.**<br>The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. |

View file

@ -4,7 +4,7 @@
**Notice:** *There's [specialised instructions for docker](../setup/docker.md) or [heroku](../setup/heroku.md), if you prefer running code this way!* **Notice:** *There's [specialised instructions for docker](../setup/docker.md) or [heroku](../setup/heroku.md), if you prefer running code this way!*
1. Clone the repository with `git clone https://github.com/codimd/server.git codimd-server` 1. Clone the repository with `git clone https://github.com/hedgedoc/hedgedoc.git hedgedoc-server`
(cloning is the preferred way, but you can also download and unzip a release) (cloning is the preferred way, but you can also download and unzip a release)
2. Enter the directory and run `bin/setup`, which will install npm dependencies 2. Enter the directory and run `bin/setup`, which will install npm dependencies
@ -16,7 +16,7 @@
## Running the Code ## Running the Code
Now that everything is in place, we can start CodiMD: Now that everything is in place, we can start HedgeDoc:
1. `yarn run build` will build the frontend bundle. It uses webpack to do that. 1. `yarn run build` will build the frontend bundle. It uses webpack to do that.
2. Run the server with `node app.js` 2. Run the server with `node app.js`
@ -43,7 +43,7 @@ The repository contains two parts: a server (backend) and a client (frontend).
most of the server code is in `/lib` and most of the client code is in `public`. most of the server code is in `/lib` and most of the client code is in `public`.
```text ```text
codimd-server/ hedgedoc-server/
├── docs/ --- documentation ├── docs/ --- documentation
├── lib/ --- server code ├── lib/ --- server code
├── test/ --- test suite ├── test/ --- test suite

View file

@ -1,18 +1,18 @@
openapi: 3.0.1 openapi: 3.0.1
info: info:
title: CodiMD title: HedgeDoc
description: CodiMD is an open source collaborative note editor. Several tasks of CodiMD can be automated through this API. description: HedgeDoc is an open source collaborative note editor. Several tasks of HedgeDoc can be automated through this API.
version: 1.6.0 version: 1.6.0
contact: contact:
name: CodiMD on GitHub name: HedgeDoc on GitHub
url: https://github.com/codimd/server url: https://github.com/hedgedoc/hedgedoc
license: license:
name: AGPLv3 name: AGPLv3
url: https://github.com/codimd/server/blob/master/LICENSE url: https://github.com/hedgedoc/hedgedoc/blob/master/LICENSE
externalDocs: externalDocs:
url: https://github.com/codimd/server/blob/master/docs/dev/api.md url: https://github.com/hedgedoc/hedgedoc/blob/master/docs/dev/api.md
paths: paths:
@ -281,7 +281,7 @@ paths:
tags: tags:
- note - note
summary: Creates a new GitHub Gist with the note's content. summary: Creates a new GitHub Gist with the note's content.
description: 'If [GitHub integration](https://github.com/codimd/server/blob/master/docs/configuration-env-vars.md#github-login) is configured, the user will be redirected to GitHub and a new Gist with the content of the note will be created.' description: 'If [GitHub integration](https://github.com/hedgedoc/hedgedoc/blob/master/docs/configuration-env-vars.md#github-login) is configured, the user will be redirected to GitHub and a new Gist with the content of the note will be created.'
responses: responses:
default: default:
description: Redirect to the created gist (or the GitHub authentication before) description: Redirect to the created gist (or the GitHub authentication before)
@ -432,7 +432,7 @@ paths:
get: get:
tags: tags:
- server - server
summary: Returns the current status of the CodiMD instance. summary: Returns the current status of the HedgeDoc instance.
description: The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more. description: The data is returned as a JSON object containing the number of notes stored on the server, (distinct) online users and more.
responses: responses:
200: 200:
@ -478,4 +478,4 @@ tags:
- name: user - name: user
description: These endpoints return information about the current logged-in user and it's note history. If no user is logged-in, the most of this requests will fail with either a HTTP 403 or a JSON object containing `{"status":"forbidden"}`. description: These endpoints return information about the current logged-in user and it's note history. If no user is logged-in, the most of this requests will fail with either a HTTP 403 or a JSON object containing `{"status":"forbidden"}`.
- name: server - name: server
description: These endpoints return information about the running CodiMD instance. description: These endpoints return information about the running HedgeDoc instance.

View file

@ -1,7 +1,5 @@
# Authentication guide - GitHub # Authentication guide - GitHub
*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!
1. Sign-in or sign-up for a GitHub account 1. Sign-in or sign-up for a GitHub account
2. Navigate to developer settings in your GitHub account [here](https://github.com/settings/developers) and select the "OAuth Apps" tab 2. Navigate to developer settings in your GitHub account [here](https://github.com/settings/developers) and select the "OAuth Apps" tab
@ -12,7 +10,7 @@
4. Fill out the new OAuth application registration form, and click **Register Application** 4. Fill out the new OAuth application registration form, and click **Register Application**
![register-oauth-application-form](../../images/auth/register-oauth-application-form.png) ![register-oauth-application-form](../../images/auth/register-oauth-application-form.png)
**Note:** *The callback URL is <your-codimd-url>/auth/github/callback* **Note:** *The callback URL is <your-hedgedoc-url>/auth/github/callback*
5. After successfully registering the application, you'll receive the Client ID and Client Secret for the application 5. After successfully registering the application, you'll receive the Client ID and Client Secret for the application
![application-page](../../images/auth/application-page.png) ![application-page](../../images/auth/application-page.png)

View file

@ -1,6 +1,6 @@
# GitLab (self-hosted) # GitLab (self-hosted)
*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! *Note:* This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind :smile: thanks!
1. Sign in to your GitLab 1. Sign in to your GitLab
2. Navigate to the application management page at `https://your.gitlab.domain/admin/applications` (admin permissions required) 2. Navigate to the application management page at `https://your.gitlab.domain/admin/applications` (admin permissions required)
@ -16,7 +16,7 @@
6. In the `docker-compose.yml` add the following environment variables to `app:` `environment:` 6. In the `docker-compose.yml` add the following environment variables to `app:` `environment:`
```Dockerfile ```Dockerfile
- CMD_DOMAIN=your.codimd.domain - CMD_DOMAIN=your.hedgedoc.domain
- CMD_URL_ADDPORT=true - CMD_URL_ADDPORT=true
- CMD_PROTOCOL_USESSL=true - CMD_PROTOCOL_USESSL=true
- CMD_GITLAB_BASEURL=https://your.gitlab.domain - CMD_GITLAB_BASEURL=https://your.gitlab.domain
@ -25,6 +25,6 @@
``` ```
7. Run `docker-compose up -d` to apply your settings. 7. Run `docker-compose up -d` to apply your settings.
8. Sign in to your CodiMD using your GitLab ID: 8. Sign in to your HedgeDoc using your GitLab ID:
![Sign in via GitLab](../../images/auth/gitlab-sign-in.png) ![Sign in via GitLab](../../images/auth/gitlab-sign-in.png)

View file

@ -1,4 +1,4 @@
OAuth with Keycloak/Red Hat SSO (self-hosted) # OAuth with Keycloak/Red Hat SSO (self-hosted)
## Prerequisites ## Prerequisites
@ -13,7 +13,7 @@ Where HTTPS is specified throughout, use HTTP instead. You may also have to spec
You may note that a separate realm is specified throughout this tutorial. It is best practice not to use the master realm, as it normally contains the realm-management client that federates access using the policies and permissions you can create. You may note that a separate realm is specified throughout this tutorial. It is best practice not to use the master realm, as it normally contains the realm-management client that federates access using the policies and permissions you can create.
2. Navigate to the client management page at `https://keycloak.example.com/auth/admin/master/console/#/realms/your-realm/clients` (admin permissions required) 2. Navigate to the client management page at `https://keycloak.example.com/auth/admin/master/console/#/realms/your-realm/clients` (admin permissions required)
3. Click **Create** to create a new client and fill out the registration form. You should set the Root URL to the fully qualified public URL of your CodiMD instance. 3. Click **Create** to create a new client and fill out the registration form. You should set the Root URL to the fully qualified public URL of your HedgeDoc instance.
4. Click **Save** 4. Click **Save**
5. Set the **Access Type** of the client to `confidential`. This will make your client require a client secret upon authentication. 5. Set the **Access Type** of the client to `confidential`. This will make your client require a client secret upon authentication.
@ -24,7 +24,7 @@ You may note that a separate realm is specified throughout this tutorial. It is
1. Select Client Scopes from the sidebar, and begin to create a new client scope using the Create button. 1. Select Client Scopes from the sidebar, and begin to create a new client scope using the Create button.
2. Ensure that the **Name** field is set to `id`. 2. Ensure that the **Name** field is set to `id`.
3. Create a new mapper under the Mappers tab. This should reference the User Property `id`. `Claim JSON Type` should be String and all switches below should be enabled. Save the mapper. 3. Create a new mapper under the Mappers tab. This should reference the User Property `id`. `Claim JSON Type` should be String and all switches below should be enabled. Save the mapper.
4. Go to the client you set up in the previous steps using the Clients page, then choose the Client Scopes tab. Apply the scope you've created. This should mitigate errors as seen in [codimd/server#56](https://github.com/codimd/server/issues/56), as the `/userinfo` endpoint should now bring back the user's ID under the `id` key as well as `sub`. 4. Go to the client you set up in the previous steps using the Clients page, then choose the Client Scopes tab. Apply the scope you've created. This should mitigate errors as seen in [hedgedoc/hedgedoc#56](https://github.com/hedgedoc/hedgedoc/issues/56), as the `/userinfo` endpoint should now bring back the user's ID under the `id` key as well as `sub`.
--- ---
@ -40,10 +40,10 @@ CMD_OAUTH2_AUTHORIZATION_URL=https://keycloak.example.com/auth/realms/your-realm
CMD_OAUTH2_CLIENT_ID=<your client ID> CMD_OAUTH2_CLIENT_ID=<your client ID>
CMD_OAUTH2_CLIENT_SECRET=<your client secret, which you can find under the Credentials tab for your client> CMD_OAUTH2_CLIENT_SECRET=<your client secret, which you can find under the Credentials tab for your client>
CMD_OAUTH2_PROVIDERNAME=Keycloak CMD_OAUTH2_PROVIDERNAME=Keycloak
CMD_DOMAIN=<codimd.example.com> CMD_DOMAIN=<hedgedoc.example.com>
CMD_PROTOCOL_USESSL=true CMD_PROTOCOL_USESSL=true
CMD_URL_ADDPORT=false CMD_URL_ADDPORT=false
``` ```
6. Run `docker-compose up -d` to apply your settings. 6. Run `docker-compose up -d` to apply your settings.
7. Sign in to your CodiMD using your Keycloak ID 7. Sign in to your HedgeDoc using your Keycloak ID

View file

@ -1,6 +1,6 @@
# AD LDAP auth # AD LDAP auth
To setup your CodiMD instance with Active Directory you need the following configs: To setup your HedgeDoc instance with Active Directory you need the following configs:
```env ```env
CMD_LDAP_URL=ldap://internal.example.com CMD_LDAP_URL=ldap://internal.example.com

View file

@ -17,7 +17,7 @@ This guide uses the generic OAuth2 module for compatibility with Mattermost vers
5. Fill out the form and click **Save** 5. Fill out the form and click **Save**
![mattermost-oauth-app-form](../../images/auth/mattermost-oauth-app-form.png) ![mattermost-oauth-app-form](../../images/auth/mattermost-oauth-app-form.png)
*Note: The callback URL is \<your-codimd-url\>/auth/oauth2/callback* *Note: The callback URL is \<your-hedgedoc-url\>/auth/oauth2/callback*
6. After saving the application, you'll receive the Client ID and Client Secret 6. After saving the application, you'll receive the Client ID and Client Secret
![mattermost-oauth-app-done](../../images/auth/mattermost-oauth-app-done.png) ![mattermost-oauth-app-done](../../images/auth/mattermost-oauth-app-done.png)

View file

@ -11,14 +11,14 @@ This guide uses the generic OAuth2 module for compatibility with Nextcloud 13 an
At the top there's OAuth 2.0-Clients. At the top there's OAuth 2.0-Clients.
![Where to find OAuth2 in Nextcloud](../../images/auth/nextcloud-oauth2-1-settings.png) ![Where to find OAuth2 in Nextcloud](../../images/auth/nextcloud-oauth2-1-settings.png)
3. Add your CodiMD instance by giving it a *name* (perhaps CodiMD, but could be anything) and a *Redirection-URI*. The Redirection-URI will be `\<your-codimd-url\>/auth/oauth2/callback`. Click <kbd>Add</kbd>. 3. Add your HedgeDoc instance by giving it a *name* (perhaps HedgeDoc, but could be anything) and a *Redirection-URI*. The Redirection-URI will be `\<your-hedgedoc-url\>/auth/oauth2/callback`. Click <kbd>Add</kbd>.
![Adding a client to Nextcloud](../../images/auth/nextcloud-oauth2-2-client-add.png) ![Adding a client to Nextcloud](../../images/auth/nextcloud-oauth2-2-client-add.png)
4. You'll now see a line containing a *client identifier* and a *Secret*. 4. You'll now see a line containing a *client identifier* and a *Secret*.
![Successfully added OAuth2-client](../../images/auth/nextcloud-oauth2-3-clientid-secret.png) ![Successfully added OAuth2-client](../../images/auth/nextcloud-oauth2-3-clientid-secret.png)
5. That's it for Nextcloud, the rest is configured in your CodiMD `config.json` or via the `CMD_` environment variables! 5. That's it for Nextcloud, the rest is configured in your HedgeDoc `config.json` or via the `CMD_` environment variables!
6. Add the Client ID and Client Secret to your `config.json` file or pass them as environment variables. Make sure you also replace `<your-nextcloud-domain>` with the right domain name. 6. Add the Client ID and Client Secret to your `config.json` file or pass them as environment variables. Make sure you also replace `<your-nextcloud-domain>` with the right domain name.
- `config.json`: - `config.json`:

View file

@ -1,34 +1,34 @@
# How to setup CodiMD SAML with Keycloak # How to setup HedgeDoc SAML with Keycloak
## Configuring Keycloak ## Configuring Keycloak
### Get the public certificate ### Get the public certificate
1. Select the Realm you want to use for your CodiMD SAML 1. Select the Realm you want to use for your HedgeDoc SAML
2. Select "Realm Settings" in left sidebar 2. Select "Realm Settings" in left sidebar
3. Select the "Keys" tab 3. Select the "Keys" tab
4. Click the button "Certificate" at `RS256` algorithm 4. Click the button "Certificate" at `RS256` algorithm
![keycloak_idp_cert](../../images/auth/keycloak_idp_cert.png) ![keycloak_idp_cert](../../images/auth/keycloak_idp_cert.png)
5. Copy this key and save it to the file specified in `saml.idpCert` property of the CodiMD configuration or `CMD_SAML_IDPCERT` environment variable 5. Copy this key and save it to the file specified in `saml.idpCert` property of the HedgeDoc configuration or `CMD_SAML_IDPCERT` environment variable
### Create a new client ### Create a new client
1. Select "Client" in left sidebar 1. Select "Client" in left sidebar
![keycloak_clients_overview](../../images/auth/keycloak_clients_overview.png) ![keycloak_clients_overview](../../images/auth/keycloak_clients_overview.png)
2. Click on the "Create" button 2. Click on the "Create" button
3. Set a Client ID and specify this in `saml.issuer` property of the CodiMD configuration or `CMD_SAML_ISSUER` environment variable 3. Set a Client ID and specify this in `saml.issuer` property of the HedgeDoc configuration or `CMD_SAML_ISSUER` environment variable
4. Select `SAML` as Client Protocol 4. Select `SAML` as Client Protocol
5. Set Client SAML Endpoint to `https://codimd.example.com/auth/saml` (replace `https://codimd.example.com` with the base URL of your CodiMD installation) 5. Set Client SAML Endpoint to `https://hedgedoc.example.com/auth/saml` (replace `https://hedgedoc.example.com` with the base URL of your HedgeDoc installation)
![keycloak_add_client](../../images/auth/keycloak_add_client.png) ![keycloak_add_client](../../images/auth/keycloak_add_client.png)
6. Leave "Client Signature Required" enabled 6. Leave "Client Signature Required" enabled
7. Set Root URL to `https://codimd.example.com` (replace it here also with the base URL of your CodiMD installation) 7. Set Root URL to `https://hedgedoc.example.com` (replace it here also with the base URL of your HedgeDoc installation)
8. Set Valid Redirect URIs to `https://codimd.example.com/auth/saml/callback` (you should also define all other domains of your CodiMD installtion with the suffix `/auth/saml/callback`) 8. Set Valid Redirect URIs to `https://hedgedoc.example.com/auth/saml/callback` (you should also define all other domains of your HedgeDoc installtion with the suffix `/auth/saml/callback`)
9. Set Base URL to `/` 9. Set Base URL to `/`
![keycloak_client_overview](../../images/auth/keycloak_client_overview.png) ![keycloak_client_overview](../../images/auth/keycloak_client_overview.png)
10. _(optional)_ You can set which Name ID Format should be used 10. _(optional)_ You can set which Name ID Format should be used
## Configure CodiMD ## Configure HedgeDoc
### Config file ### Config file
You have to put the following block inside your `config.json`: You have to put the following block inside your `config.json`:
```json ```json
"saml": { "saml": {
"issuer": "codimd", // Change to the "Client ID" specified in the Keycloak Client "issuer": "hedgedoc", // Change to the "Client ID" specified in the Keycloak Client
"identifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "identifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
"idpSsoUrl": "https://keycloak.example.org/auth/realms/test/protocol/saml", // replace keycloak.example.org with the url of your keycloak server "idpSsoUrl": "https://keycloak.example.org/auth/realms/test/protocol/saml", // replace keycloak.example.org with the url of your keycloak server
"idpCert": "/path/to/the/cert.pem", "idpCert": "/path/to/the/cert.pem",
@ -40,12 +40,12 @@ You have to put the following block inside your `config.json`:
- `CMD_SAML_IDPSSOURL`: `https://keycloak.example.org/auth/realms/test/protocol/saml` (replace keycloak.example.org with the url of your keycloak server) - `CMD_SAML_IDPSSOURL`: `https://keycloak.example.org/auth/realms/test/protocol/saml` (replace keycloak.example.org with the url of your keycloak server)
- `CMD_SAML_IDPCERT`: `/path/to/the/cert.pem` - `CMD_SAML_IDPCERT`: `/path/to/the/cert.pem`
- *(optional, see below)* `CMD_SAML_CLIENTCERT`: `/path/to/the/key.pem` - *(optional, see below)* `CMD_SAML_CLIENTCERT`: `/path/to/the/key.pem`
- `CMD_SAML_ISSUER`: `codimd` (Change to the "Client ID" specified in the Keycloak Client) - `CMD_SAML_ISSUER`: `hedgedoc` (Change to the "Client ID" specified in the Keycloak Client)
- `CMD_SAML_IDENTIFIERFORMAT`: `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` - `CMD_SAML_IDENTIFIERFORMAT`: `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
## Client certificate *(optional)* ## Client certificate *(optional)*
If you want keycloak to be able to verify CodiMD, you hava to create a client certificate. There are two options for this: If you want keycloak to be able to verify HedgeDoc, you hava to create a client certificate. There are two options for this:
### Create Private Keys for Signing ### Create Private Keys for Signing
1. Generate the private key and certificate with the following commands: 1. Generate the private key and certificate with the following commands:
@ -56,7 +56,7 @@ openssl req -new -x509 -key priv.pem -out cert.pem
*execute the following steps in keycloak* *execute the following steps in keycloak*
2. Select "Client" in left sidebar 2. Select "Client" in left sidebar
3. Go to your CodiMD-Client 3. Go to your HedgeDoc-Client
4. Select the "SAML Keys" tab 4. Select the "SAML Keys" tab
![keycloak_saml_import_cert](../../images/auth/keycloak_saml_import_cert.png) ![keycloak_saml_import_cert](../../images/auth/keycloak_saml_import_cert.png)
5. Click on "Import" 5. Click on "Import"
@ -64,14 +64,14 @@ openssl req -new -x509 -key priv.pem -out cert.pem
7. Now upload the generated cert.pem (in this case named `cert.pem`) 7. Now upload the generated cert.pem (in this case named `cert.pem`)
![keycloak_saml_import_cert_details](../../images/auth/keycloak_saml_import_cert_details.png) ![keycloak_saml_import_cert_details](../../images/auth/keycloak_saml_import_cert_details.png)
8. Click on "Import" 8. Click on "Import"
9. Move or copy this key (in this case named `key.pem`) and save it to the file specified in `saml.clientCert` property of the CodiMD configuration or in the enviroment-variable `CMD_SAML_CLIENTCERT` 9. Move or copy this key (in this case named `key.pem`) and save it to the file specified in `saml.clientCert` property of the HedgeDoc configuration or in the enviroment-variable `CMD_SAML_CLIENTCERT`
### Convert Private Certificate generated by KeyCloak ### Convert Private Certificate generated by KeyCloak
Instead if generating you own certificate, you can also use the one generated by keycloak. Instead if generating you own certificate, you can also use the one generated by keycloak.
1. Select "Client" in left sidebar 1. Select "Client" in left sidebar
2. Go to your CodiMD-Client 2. Go to your HedgeDoc-Client
3. Select the "SAML Keys" tab 3. Select the "SAML Keys" tab
![keycloak_saml_export_cert](../../images/auth/keycloak_saml_export_cert.png) ![keycloak_saml_export_cert](../../images/auth/keycloak_saml_export_cert.png)
@ -83,14 +83,14 @@ Instead if generating you own certificate, you can also use the one generated by
```shell ```shell
openssl pkcs12 -in keystore.p12 -out key.pem -nocerts -nodes openssl pkcs12 -in keystore.p12 -out key.pem -nocerts -nodes
``` ```
8. Move or copy this key (in this case named `key.pem`) and save it to the file specified in `saml.idpCert` property of the CodiMD configuration or in the enviroment-variable `CMD_SAML_CLIENTCERT` 8. Move or copy this key (in this case named `key.pem`) and save it to the file specified in `saml.idpCert` property of the HedgeDoc configuration or in the enviroment-variable `CMD_SAML_CLIENTCERT`
## Use Persistent Identifiers ## Use Persistent Identifiers
Instead of using the username as the owner-key in the CodiMD database, you can also use a persistent identifier. This allows to change the username, without them loosing access to their notes. Instead of using the username as the owner-key in the HedgeDoc database, you can also use a persistent identifier. This allows to change the username, without them loosing access to their notes.
1. Go to the CodiMD-Client in keycloak. Now enable the option "Force Name ID Format" and select "persistent" as the "Name ID Format". 1. Go to the HedgeDoc-Client in keycloak. Now enable the option "Force Name ID Format" and select "persistent" as the "Name ID Format".
![keycloak_force_idformat](../../images/auth/keycloak_force_idformat.png) ![keycloak_force_idformat](../../images/auth/keycloak_force_idformat.png)
2. For codimd to be able to use the username and email configured in keycloak, you have to create the following SAML protocol mappers: 2. For HedgeDoc to be able to use the username and email configured in keycloak, you have to create the following SAML protocol mappers:
2.1. Create a mapper with the type `User Property`. Set the Name, Property and SAML Attribute Name to `username`. Now you can specify a friendly name (for example `Username`) 2.1. Create a mapper with the type `User Property`. Set the Name, Property and SAML Attribute Name to `username`. Now you can specify a friendly name (for example `Username`)
![keycloak_mapper_username](../../images/auth/keycloak_mapper_username.png) ![keycloak_mapper_username](../../images/auth/keycloak_mapper_username.png)
2.2 Create a mapper with the type `User Property`. Set the Name, Property and SAML Attribute Name to `email`. Now you can specify a friendly name (for example `E-Mail`) 2.2 Create a mapper with the type `User Property`. Set the Name, Property and SAML Attribute Name to `email`. Now you can specify a friendly name (for example `E-Mail`)
@ -106,7 +106,7 @@ The configured mappers should look like this:
"email": "email", "email": "email",
} }
``` ```
It you configure CodiMD with enviroment variables, these are the ones you have to set: It you configure HedgeDoc with enviroment variables, these are the ones you have to set:
```bash ```bash
CMD_SAML_ATTRIBUTE_USERNAME=username CMD_SAML_ATTRIBUTE_USERNAME=username
CMD_SAML_ATTRIBUTE_EMAIL=email CMD_SAML_ATTRIBUTE_EMAIL=email

View file

@ -1,6 +1,6 @@
# Authentication guide - SAML (OneLogin) # Authentication guide - SAML (OneLogin)
**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* **Note:** *This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind :smile: thanks!*
1. Sign-in or sign-up for an OneLogin account. (available free trial for 2 weeks) 1. Sign-in or sign-up for an OneLogin account. (available free trial for 2 weeks)
@ -16,9 +16,9 @@
![onelogin-edit-app-name](../../images/auth/onelogin-edit-app-name.png) ![onelogin-edit-app-name](../../images/auth/onelogin-edit-app-name.png)
6. After that other tabs will appear, click the **Configuration**, and fill out the below items, and click **SAVE**. 6. After that other tabs will appear, click the **Configuration**, and fill out the below items, and click **SAVE**.
- RelayState: The base URL of your CodiMD, which is issuer. (last slash is not needed) - RelayState: The base URL of your HedgeDoc, which is issuer. (last slash is not needed)
- ACS (Consumer) URL Validator: The callback URL of your CodiMD. (serverurl + /auth/saml/callback) - ACS (Consumer) URL Validator: The callback URL of your HedgeDoc. (serverurl + /auth/saml/callback)
- ACS (Consumer) URL: same as above. - ACS (Consumer) URL: same as above.
@ -31,7 +31,7 @@
- SAML 2.0 Endpoint (HTTP): Copy the URL ....(B) - SAML 2.0 Endpoint (HTTP): Copy the URL ....(B)
![onelogin-copy-idp-metadata](../../images/auth/onelogin-copy-idp-metadata.png) ![onelogin-copy-idp-metadata](../../images/auth/onelogin-copy-idp-metadata.png)
8. In your CodiMD server, create IdP certificate file from (A) 8. In your HedgeDoc server, create IdP certificate file from (A)
9. Add the IdP URL (B) and the Idp certificate file path to your config.json file or pass them as environment variables. 9. Add the IdP URL (B) and the Idp certificate file path to your config.json file or pass them as environment variables.
- `config.json`: - `config.json`:
```javascript ```javascript
@ -51,5 +51,5 @@
CMD_SAML_IDPCERT=/path/to/idp_cert.pem CMD_SAML_IDPCERT=/path/to/idp_cert.pem
``` ```
10. Try sign-in with SAML from your CodiMD sign-in button or OneLogin dashboard (like the screenshot below). 10. Try sign-in with SAML from your HedgeDoc sign-in button or OneLogin dashboard (like the screenshot below).
![onelogin-use-dashboard](../../images/auth/onelogin-use-dashboard.png) ![onelogin-use-dashboard](../../images/auth/onelogin-use-dashboard.png)

View file

@ -1,6 +1,6 @@
# Authentication guide - SAML # Authentication guide - SAML
*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! *Note:* This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind :smile: thanks!
The basic procedure is the same as the case of OneLogin which is mentioned in [OneLogin-Guide](./saml-onelogin.md). If you want to match your IdP, you can use more configurations as below. The basic procedure is the same as the case of OneLogin which is mentioned in [OneLogin-Guide](./saml-onelogin.md). If you want to match your IdP, you can use more configurations as below.
@ -9,7 +9,7 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
- *Note:* If not accessible from IdP, download to local once and upload to IdP. - *Note:* If not accessible from IdP, download to local once and upload to IdP.
- Change the value of `issuer`, `identifierFormat` to match your IdP. - Change the value of `issuer`, `identifierFormat` to match your IdP.
- `issuer`: A unique id to identify the application to the IdP, which is the base URL of your CodiMD as default - `issuer`: A unique id to identify the application to the IdP, which is the base URL of your HedgeDoc as default
- `identifierFormat`: A format of unique id to identify the user of IdP, which is the format based on email address as default. It is recommend that you use as below. - `identifierFormat`: A format of unique id to identify the user of IdP, which is the format based on email address as default. It is recommend that you use as below.
- urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress (default) - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress (default)
@ -21,7 +21,7 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
"production": { "production": {
"saml": { "saml": {
/* omitted */ /* omitted */
"issuer": "mycodimd" "issuer": "myhedgedoc"
"identifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" "identifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
} }
} }
@ -30,16 +30,16 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
- environment variables - environment variables
```env ```env
CMD_SAML_ISSUER=mycodimd CMD_SAML_ISSUER=myhedgedoc
CMD_SAML_IDENTIFIERFORMAT=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified CMD_SAML_IDENTIFIERFORMAT=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
``` ```
- Change mapping of attribute names to customize the displaying user name and email address to match your IdP. - Change mapping of attribute names to customize the displaying user name and email address to match your IdP.
- `attribute`: A dictionary to map attribute names - `attribute`: A dictionary to map attribute names
- `attribute.id`: A primary key of user table for your CodiMD - `attribute.id`: A primary key of user table for your HedgeDoc
- `attribute.username`: Attribute name of displaying user name on CodiMD - `attribute.username`: Attribute name of displaying user name on HedgeDoc
- `attribute.email`: Attribute name of email address, which will be also used for Gravatar - `attribute.email`: Attribute name of email address, which will be also used for Gravatar
- *Note:* Default value of all attributes is NameID of SAML response, which is email address if `identifierFormat` is default. - *Note:* Default value of all attributes is NameID of SAML response, which is email address if `identifierFormat` is default.
@ -70,9 +70,9 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
- If you want to control permission by group membership, add group attribute name and required group (allowed) or external group (not allowed). - If you want to control permission by group membership, add group attribute name and required group (allowed) or external group (not allowed).
- `groupAttribute`: An attribute name of group membership - `groupAttribute`: An attribute name of group membership
- `requiredGroups`: Group names array for allowed access to CodiMD. Use vertical bar to separate for environment variables. - `requiredGroups`: Group names array for allowed access to HedgeDoc. Use vertical bar to separate for environment variables.
- `externalGroups`: Group names array for not allowed access to CodiMD. Use vertical bar to separate for environment variables. - `externalGroups`: Group names array for not allowed access to HedgeDoc. Use vertical bar to separate for environment variables.
- *Note:* Evaluates `externalGroups` first - *Note:* Evaluates `externalGroups` first
- `config.json`: - `config.json`:
@ -82,7 +82,7 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
"saml": { "saml": {
/* omitted */ /* omitted */
"groupAttribute": "memberOf", "groupAttribute": "memberOf",
"requiredGroups": [ "codimd-users", "board-members" ], "requiredGroups": [ "hedgedoc-users", "board-members" ],
"externalGroups": [ "temporary-staff" ] "externalGroups": [ "temporary-staff" ]
} }
} }
@ -92,6 +92,6 @@ The basic procedure is the same as the case of OneLogin which is mentioned in [O
- environment variables - environment variables
```sh ```sh
CMD_SAML_GROUPATTRIBUTE=memberOf CMD_SAML_GROUPATTRIBUTE=memberOf
CMD_SAML_REQUIREDGROUPS=codimd-users|board-members CMD_SAML_REQUIREDGROUPS=hedgedoc-users|board-members
CMD_SAML_EXTERNALGROUPS=temporary-staff CMD_SAML_EXTERNALGROUPS=temporary-staff
``` ```

View file

@ -1,6 +1,6 @@
# Authentication guide - Twitter # Authentication guide - Twitter
*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! *Note:* This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind :smile: thanks!
1. Sign-in or sign-up for a Twitter account 1. Sign-in or sign-up for a Twitter account

View file

@ -1,11 +1,11 @@
# Pad migration guide from etherpad-lite # Pad migration guide from etherpad-lite
The goal of this migration is to do a "dumb" import from all the pads in Etherpad, to notes in The goal of this migration is to do a "dumb" import from all the pads in Etherpad, to notes in
CodiMD. In particular, the url locations of the pads in Etherpad will be lost. Furthermore, any HedgeDoc. In particular, the url locations of the pads in Etherpad will be lost. Furthermore, any
metadata in Etherpad, such as revisions, author data and also formatted text will not be migrated metadata in Etherpad, such as revisions, author data and also formatted text will not be migrated
to CodiMD (only the plain text contents). to HedgeDoc (only the plain text contents).
Note that this guide is not really meant as a support guide. I migrated my own Etherpad to CodiMD, Note that this guide is not really meant as a support guide. I migrated my own Etherpad to HedgeDoc,
and it turned out to be quite easy in my opinion. In this guide I share my experience. Stuff may and it turned out to be quite easy in my opinion. In this guide I share my experience. Stuff may
require some creativity to work properly in your case. When I wrote this guide, I was using require some creativity to work properly in your case. When I wrote this guide, I was using
[etherpad 1.7.0][] and [codimd 1.2.1][]. Good luck! [etherpad 1.7.0][] and [codimd 1.2.1][]. Good luck!
@ -14,8 +14,8 @@ require some creativity to work properly in your case. When I wrote this guide,
- `curl` - `curl`
- running Etherpad server - running Etherpad server
- running CodiMD server - running HedgeDoc server
- [codimd-cli][] - [hedgedoc-cli][]
## 1. Retrieve the list of pads ## 1. Retrieve the list of pads
@ -36,26 +36,26 @@ weddingchecklist
## 2. Run the migration ## 2. Run the migration
Download [codimd-cli][] and put the script in the same directory as the file containing the pad names. Download [hedgedoc-cli][] and put the script in the same directory as the file containing the pad names.
Add to this directory the file listed below, I called it `migrate-etherpad.sh`. Modify at least the Add to this directory the file listed below, I called it `migrate-etherpad.sh`. Modify at least the
configuration settings `ETHERPAD_SERVER` and `CODIMD_SERVER`. configuration settings `ETHERPAD_SERVER` and `HEDGEDOC_SERVER`.
```shell ```shell
#!/bin/sh #!/bin/sh
# migrate-etherpad.sh # migrate-etherpad.sh
# #
# Description: Migrate pads from etherpad to codimd # Description: Migrate pads from etherpad to HedgeDoc
# Author: Daan Sprenkels <hello@dsprenkels.com> # Author: Daan Sprenkels <hello@dsprenkels.com>
# This script uses the codimd command line script[1] to import a list of pads from # This script uses the HedgeDoc command line script[1] to import a list of pads from
# [1]: https://github.com/codimd/cli/blob/master/bin/codimd # [1]: https://github.com/hedgedoc/cli/blob/master/bin/hedgedoc
# The base url to where etherpad is hosted # The base url to where etherpad is hosted
ETHERPAD_SERVER="https://etherpad.example.com" ETHERPAD_SERVER="https://etherpad.example.com"
# The base url where codimd is hosted # The base url where HedgeDoc is hosted
CODIMD_SERVER="https://codimd.example.com" HEDGEDOC_SERVER="https://hedgedoc.example.com"
# Write a list of pads and the urls which they were migrated to # Write a list of pads and the urls which they were migrated to
REDIRECTS_FILE="redirects.txt" REDIRECTS_FILE="redirects.txt"
@ -73,8 +73,8 @@ for PAD_NAME in $1; do
PAD_FILE="$(mktemp)" PAD_FILE="$(mktemp)"
curl "$ETHERPAD_SERVER/p/$PAD_NAME/export/txt" >"$PAD_FILE" curl "$ETHERPAD_SERVER/p/$PAD_NAME/export/txt" >"$PAD_FILE"
# Import the pad into codimd # Import the pad into HedgeDoc
OUTPUT="$(./codimd import "$PAD_FILE")" OUTPUT="$(./hedgedoc import "$PAD_FILE")"
echo "$PAD_NAME -> $OUTPUT" >>"$REDIRECTS_FILE" echo "$PAD_NAME -> $OUTPUT" >>"$REDIRECTS_FILE"
done done
``` ```
@ -85,7 +85,7 @@ Call this file like this:
./migrate-etherpad.sh pad_names.txt ./migrate-etherpad.sh pad_names.txt
``` ```
This will download all the pads in `pad_names.txt` and put them on CodiMD. They will get assigned This will download all the pads in `pad_names.txt` and put them on HedgeDoc. They will get assigned
random ids, so you won't be able to find them. The script will save the mappings to a file though random ids, so you won't be able to find them. The script will save the mappings to a file though
(in my case `redirects.txt`). You can use this file to redirect your users when they visit your (in my case `redirects.txt`). You can use this file to redirect your users when they visit your
etherpad using a `301 Permanent Redirect` status code (see the next section). etherpad using a `301 Permanent Redirect` status code (see the next section).
@ -95,10 +95,10 @@ etherpad using a `301 Permanent Redirect` status code (see the next section).
I got a `redirects.txt` file that looked a bit like this: I got a `redirects.txt` file that looked a bit like this:
```log ```log
date-ideas -> Found. Redirecting to https://codimd.example.com/mPt0KfiKSBOTQ3mNcdfn date-ideas -> Found. Redirecting to https://hedgedoc.example.com/mPt0KfiKSBOTQ3mNcdfn
groceries -> Found. Redirecting to https://codimd.example.com/UukqgwLfhYyUUtARlcJ2_y groceries -> Found. Redirecting to https://hedgedoc.example.com/UukqgwLfhYyUUtARlcJ2_y
london -> Found. Redirecting to https://codimd.example.com/_d3wa-BE8t4Swv5w7O2_9R london -> Found. Redirecting to https://hedgedoc.example.com/_d3wa-BE8t4Swv5w7O2_9R
weddingchecklist -> Found. Redirecting to https://codimd.example.com/XcQGqlBjl0u40wfT0N8TzQ weddingchecklist -> Found. Redirecting to https://hedgedoc.example.com/XcQGqlBjl0u40wfT0N8TzQ
(...) (...)
``` ```
@ -106,16 +106,16 @@ Using some `sed` magic, I changed it to an nginx config snippet:
```nginx ```nginx
location = /p/date-ideas { location = /p/date-ideas {
return 301 https://codimd.example.com/mPt0M1KfiKSBOTQ3mNcdfn; return 301 https://hedgedoc.example.com/mPt0M1KfiKSBOTQ3mNcdfn;
} }
location = /p/groceries { location = /p/groceries {
return 301 https://codimd.example.com/UukqgwLfhYyUUtARlcJ2_y; return 301 https://hedgedoc.example.com/UukqgwLfhYyUUtARlcJ2_y;
} }
location = /p/london { location = /p/london {
return 301 https://codimd.example.com/_d3wa-BE8t4Swv5w7O2_9R; return 301 https://hedgedoc.example.com/_d3wa-BE8t4Swv5w7O2_9R;
} }
location = /p/weddingchecklist { location = /p/weddingchecklist {
return 301 https://codimd.example.com/XcQGqlBjl0u40wfT0N8TzQ; return 301 https://hedgedoc.example.com/XcQGqlBjl0u40wfT0N8TzQ;
} }
``` ```
@ -123,6 +123,6 @@ I put this file into my `etherpad.example.com` nginx config, such that all the u
redirected accordingly. redirected accordingly.
[etherpad 1.7.0]: https://github.com/ether/etherpad-lite/tree/1.7.0 [etherpad 1.7.0]: https://github.com/ether/etherpad-lite/tree/1.7.0
[codimd 1.2.1]: https://github.com/codimd/server/tree/1.2.1 [codimd 1.2.1]: https://github.com/hedgedoc/hedgedoc/tree/1.2.1
[codimd-cli]: https://github.com/codimd/cli/blob/master/bin/codimd [hedgedoc-cli]: https://github.com/hedgedoc/cli/blob/master/bin/hedgedoc
[howtolistallpads]: https://github.com/ether/etherpad-lite/wiki/How-to-list-all-pads/49701ecdcbe07aea7ad27ffa23aed0d99c2e17db [howtolistallpads]: https://github.com/ether/etherpad-lite/wiki/How-to-list-all-pads/49701ecdcbe07aea7ad27ffa23aed0d99c2e17db

View file

@ -9,20 +9,20 @@ We dropped support for node 6 with this version. If you have any trouble running
This is not a breaking change, but to stay up to date with the community This is not a breaking change, but to stay up to date with the community
repository, you may need to update a few urls. This is not a breaking change. repository, you may need to update a few urls. This is not a breaking change.
See more at [issue #10](https://github.com/codimd/server/issues/10) See more at [issue #10](https://github.com/hedgedoc/hedgedoc/issues/10)
### Native setup using git ### Native setup using git
Change the upstream remote using `git remote set-url origin https://github.com/codimd/server.git`. Change the upstream remote using `git remote set-url origin https://github.com/hedgedoc/hedgedoc.git`.
### Docker ### Docker
When you use our [container repository](https://github.com/codimd/container) When you use our [container repository](https://github.com/hedgedoc/container)
(which was previously `codimd-container`) all you can simply run `git pull` and (which was previously `hedgedoc-container`) all you can simply run `git pull` and
your `docker-compose.yml` will be updated. your `docker-compose.yml` will be updated.
When you setup things yourself, make sure you use the new image: When you setup things yourself, make sure you use the new image:
[`quay.io/codimd/server`](https://quay.io/repository/codimd/server?tab=tags). [`quay.io/hedgedoc/hedgedoc`](https://quay.io/repository/hedgedoc/hedgedoc?tab=tags).
### Heroku ### Heroku

View file

@ -1,6 +1,6 @@
# Minio Guide for CodiMD # Minio Guide for HedgeDoc
*Note:* This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks! *Note:* This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind :smile: thanks!
1. First of all you need to setup Minio itself. 1. First of all you need to setup Minio itself.
@ -27,7 +27,7 @@
![minio default view](../images/minio-image-upload/default-view.png) ![minio default view](../images/minio-image-upload/default-view.png)
4. Create a bucket for CodiMD 4. Create a bucket for HedgeDoc
![minio create bucket](../images/minio-image-upload/create-bucket.png) ![minio create bucket](../images/minio-image-upload/create-bucket.png)
@ -39,7 +39,7 @@
![minio policy adding](../images/minio-image-upload/create-policy.png) ![minio policy adding](../images/minio-image-upload/create-policy.png)
*Add policy for uploads* *Add policy for uploads*
6. Set credentials and configs for Minio in CodiMD's `config.json` 6. Set credentials and configs for Minio in HedgeDoc's `config.json`
```JSON ```JSON
"minio": { "minio": {
@ -57,7 +57,7 @@
7. Set bucket name 7. Set bucket name
```JSON ```JSON
"s3bucket": "codimd" "s3bucket": "hedgedoc"
``` ```
8. Set upload type. 8. Set upload type.
@ -78,7 +78,7 @@
"port": 9000, "port": 9000,
"secure": false "secure": false
}, },
"s3bucket": "codimd", "s3bucket": "hedgedoc",
"imageuploadtype": "minio" "imageuploadtype": "minio"
} }
``` ```

View file

@ -4,7 +4,7 @@
To setup your terms of use, you need to provide a document called `terms-of-use.md` which contains them. Of course written in Markdown. To setup your terms of use, you need to provide a document called `terms-of-use.md` which contains them. Of course written in Markdown.
It has to be provided under `./public/docs/` and will be automatically turned into a CodiMD document. It will also automatically updated as soon as you change the document on disk. It has to be provided under `./public/docs/` and will be automatically turned into a HedgeDoc document. It will also automatically updated as soon as you change the document on disk.
As soon as the file exists a link will show up in the bottom part along with the release notes and link to them. As soon as the file exists a link will show up in the bottom part along with the release notes and link to them.
@ -20,6 +20,6 @@ As with the terms of use, a link to the privacy notices will show up in the area
To add an imprint you can use the same technique as for the terms of use. The main difference is that the document is called `imprint.md`. To add an imprint you can use the same technique as for the terms of use. The main difference is that the document is called `imprint.md`.
It has to be provided under `./public/docs/` and will be automatically turned into a CodiMD document. It will also automatically updated as soon as you change the document on disk. It has to be provided under `./public/docs/` and will be automatically turned into a HedgeDoc document. It will also automatically updated as soon as you change the document on disk.
As with the terms of use, a link to the imprint will show up in the area where the release notes are provided on the index page. As with the terms of use, a link to the imprint will show up in the area where the release notes are provided on the index page.

View file

@ -1,6 +1,6 @@
# Guide - Setup CodiMD S3 image upload # Guide - Setup HedgeDoc S3 image upload
**Note:** *This guide was written before the renaming. Just replace `HackMD` with `CodiMD` in your mind :smile: thanks!* **Note:** *This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind :smile: thanks!*
1. Go to [AWS S3 console](https://console.aws.amazon.com/s3/home) and create a new bucket. 1. Go to [AWS S3 console](https://console.aws.amazon.com/s3/home) and create a new bucket.
![create-bucket](../images/s3-image-upload/create-bucket.png) ![create-bucket](../images/s3-image-upload/create-bucket.png)

View file

@ -1,4 +1,4 @@
# History of CodiMD # History of HedgeDoc
## It started with HackMD ## It started with HackMD
@ -34,4 +34,21 @@ move the repository, so we simply forked it. We still welcome the HackMD team
as part of our community, especially since a large portion of this code base as part of our community, especially since a large portion of this code base
originated with them. originated with them.
*For the debate that lead to this step, please refer to the [governance debate](https://github.com/hackmdio/hackmd/issues/1170) and [the announcement of the new repository](https://github.com/codimd/server/issues/10).* *For the debate that lead to this step, please refer to the [governance debate](https://github.com/hackmdio/hackmd/issues/1170) and [the announcement of the new repository](https://github.com/hedgedoc/hedgedoc/issues/10).*
## CodiMD became HedgeDoc
With two actively named forks, sharing the same name. Both [insisting on being
the original/actual owner of the name CodiMD](https://github.com/hackmdio/codimd/issues/1219),
people became rightfully confused about the projects sharing the same name.
After roughly a year of being stuck on the name issue, the HedgeDoc community
decided to take action and started a [renaming process in April 2020](https://community.codimd.org/t/renaming-yet-another-time/102).
With a good head start in the amount of names, it was decided that an entire
rebranding should take place and therefore, after a [name was agreed on in July
2020](https://community.codimd.org/t/codimd-becomes-hedgedoc/170), the next step
was to [find a logo](https://community.codimd.org/t/time-to-find-the-hedgedoc-logo/171).
In November of 2020, roughly 7 months after the initive was started, a logo was
found, the rebranding of the application as well as all community pages took place
and the time of name conficts was over. (hopefully.)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -1,10 +1,10 @@
# Cloudron # Cloudron
CodiMD is available as a 1-click install on [Cloudron](https://cloudron.io). Cloudron makes it easy to run apps like CodiMD on your server and keep them up-to-date and secure. HedgeDoc is available as a 1-click install on [Cloudron](https://cloudron.io). Cloudron makes it easy to run apps like HedgeDoc on your server and keep them up-to-date and secure.
[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=io.hackmd.cloudronapp) [![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=io.hackmd.cloudronapp)
The source code for the package can be found [here](https://git.cloudron.io/cloudron/codimd-app). The source code for the package can be found [here](https://git.cloudron.io/cloudron/codimd-app).
There is a [demo instance](https://my.demo.cloudron.io) (username: cloudron password: cloudron) where There is a [demo instance](https://my.demo.cloudron.io) (username: cloudron password: cloudron) where
you can experiment with running CodiMD. you can experiment with running HedgeDoc.

View file

@ -1,12 +1,12 @@
# LinuxServer.io CodiMD Image # LinuxServer.io HedgeDoc Image
[![LinuxServer.io Discord](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)[![container version badge](https://images.microbadger.com/badges/version/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")[![container image size badge](https://images.microbadger.com/badges/image/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/codimd.svg)![Docker Stars](https://img.shields.io/docker/stars/linuxserver/codimd.svg)[![Build Status](https://ci.linuxserver.io/buildStatus/icon?job=Docker-Pipeline-Builders/docker-codimd/master)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-codimd/job/master/)[![LinuxServer.io CI summary](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/index.html) [![LinuxServer.io Discord](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)[![container version badge](https://images.microbadger.com/badges/version/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")[![container image size badge](https://images.microbadger.com/badges/image/linuxserver/codimd.svg)](https://microbadger.com/images/linuxserver/codimd "Get your own version badge on microbadger.com")![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/codimd.svg)![Docker Stars](https://img.shields.io/docker/stars/linuxserver/codimd.svg)[![Build Status](https://ci.linuxserver.io/buildStatus/icon?job=Docker-Pipeline-Builders/docker-codimd/master)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-codimd/job/master/)[![LinuxServer.io CI summary](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/codimd/latest/index.html)
[LinuxServer.io](https://linuxserver.io) have created an Ubuntu-based multi-arch container image for x86-64, arm64 and armhf which supports PDF export from all architectures using [PhantomJS](https://phantomjs.org/). [LinuxServer.io](https://linuxserver.io) have created an Ubuntu-based multi-arch container image for x86-64, arm64 and armhf which supports PDF export from all architectures using [PhantomJS](https://phantomjs.org/).
- It supports all the environment variables detailed in the [configuration documentation](../configuration-env-vars.md) to modify it according to your needs. - It supports all the environment variables detailed in the [configuration documentation](../configuration-env-vars.md) to modify it according to your needs.
- It gets rebuilt on new releases from CodiMD and also weekly if necessary to update any other package changes in the underlying container, making it easy to keep your CodiMD instance up to date. - It gets rebuilt on new releases from HedgeDoc and also weekly if necessary to update any other package changes in the underlying container, making it easy to keep your HedgeDoc instance up to date.
- It also details how to easily [utilize Docker networking to reverse proxy](https://github.com/linuxserver/docker-codimd/#application-setup) CodiMD using their [LetsEncrypt docker image](https://github.com/linuxserver/docker-letsencrypt) - It also details how to easily [utilize Docker networking to reverse proxy](https://github.com/linuxserver/docker-codimd/#application-setup) HedgeDoc using their [LetsEncrypt docker image](https://github.com/linuxserver/docker-letsencrypt)
In order to contribute check the LinuxServer.io [GitHub repository](https://github.com/linuxserver/docker-codimd/) for CodiMD. In order to contribute check the LinuxServer.io [GitHub repository](https://github.com/linuxserver/docker-codimd/) for HedgeDoc.
And to find all tags and versions of the image, check the [Docker Hub repository](https://hub.docker.com/r/linuxserver/codimd). And to find all tags and versions of the image, check the [Docker Hub repository](https://hub.docker.com/r/linuxserver/codimd).

View file

@ -1,20 +1,20 @@
# CodiMD Docker Image # HedgeDoc Docker Image
[![Try in PWD](https://cdn.rawgit.com/play-with-docker/stacks/cff22438/assets/images/button.png)](http://play-with-docker.com?stack=https://github.com/codimd/container/raw/master/docker-compose.yml&stack_name=codimd) [![Try in PWD](https://cdn.rawgit.com/play-with-docker/stacks/cff22438/assets/images/button.png)](http://play-with-docker.com?stack=https://github.com/hedgedoc/container/raw/master/docker-compose.yml&stack_name=hedgedoc)
## Debian-based version ## Debian-based version
[![Docker Repository on Quay](https://quay.io/repository/codimd/server/status "Docker Repository on Quay")](https://quay.io/repository/codimd/server) [![Docker Repository on Quay](https://quay.io/repository/hedgedoc/hedgedoc/status "Docker Repository on Quay")](https://quay.io/repository/hedgedoc/hedgedoc)
## Alpine-based version ## Alpine-based version
[![Docker Repository on Quay](https://quay.io/repository/codimd/server/status "Docker Repository on Quay")](https://quay.io/repository/codimd/server) [![Docker Repository on Quay](https://quay.io/repository/hedgedoc/hedgedoc/status "Docker Repository on Quay")](https://quay.io/repository/hedgedoc/hedgedoc)
The easiest way to setup CodiMD using docker are using the following three commands: The easiest way to setup HedgeDoc using docker are using the following three commands:
```sh ```sh
git clone https://github.com/codimd/container.git codimd-container git clone https://github.com/hedgedoc/container.git hedgedoc-container
cd codimd-container cd hedgedoc-container
docker-compose up docker-compose up
``` ```
Read more about it in the [container repository](https://github.com/codimd/container). Read more about it in the [container repository](https://github.com/hedgedoc/container).

View file

@ -1,6 +1,6 @@
# Heroku Deployment # Heroku Deployment
You can quickly setup a sample Heroku CodiMD application by clicking the button You can quickly setup a sample Heroku HedgeDoc application by clicking the button
below. below.
[![Deploy on Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/codimd/server/tree/master) [![Deploy on Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/hedgedoc/hedgedoc/tree/master)

View file

@ -2,4 +2,4 @@
To install use `helm install stable/hackmd`. To install use `helm install stable/hackmd`.
For all further details, please check out the offical CodiMD [K8s helm chart](https://github.com/kubernetes/charts/tree/master/stable/hackmd). For all further details, please check out the offical HedgeDoc [K8s helm chart](https://github.com/kubernetes/charts/tree/master/stable/hackmd).

View file

@ -27,7 +27,7 @@
3. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs. 3. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs.
4. Modify the file named `config.json` or configure HedgeDoc through environment variables which will overwrite the configs, see docs [here](https://github.com/hedgedoc/server/blob/master/docs/configuration.md). 4. Modify the file named `config.json` or configure HedgeDoc through environment variables which will overwrite the configs, see docs [here](https://github.com/hedgedoc/hedgedoc/blob/master/docs/configuration.md).
5. Build front-end bundle by `yarn run build` (use `yarn run dev` if you are in development) 5. Build front-end bundle by `yarn run build` (use `yarn run dev` if you are in development)

View file

@ -1,8 +1,8 @@
YunoHost YunoHost
=== ===
CodiMD is available as a 1-click install on [YunoHost](https://yunohost.org/). YunoHost is a Debian GNU/Linux based distribution packaged with free software that automates the installation of a personal web server. HedgeDoc is available as a 1-click install on [YunoHost](https://yunohost.org/). YunoHost is a Debian GNU/Linux based distribution packaged with free software that automates the installation of a personal web server.
[![Install CodiMD with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=codimd) [![Install HedgeDoc with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=codimd)
The source code for the package can be found [here](https://github.com/YunoHost-Apps/codimd_ynh). The source code for the package can be found [here](https://github.com/YunoHost-Apps/codimd_ynh).

View file

@ -4,7 +4,7 @@ If you're getting started with reveal.js slides, there are a few things you need
There are two types of slides, those that transition horizontally and those that transition vertically (subslides). There are two types of slides, those that transition horizontally and those that transition vertically (subslides).
The following separators are used for each in the CodiMD syntax: The following separators are used for each in the HedgeDoc syntax:
```markdown ```markdown
# First Slide # First Slide

View file

@ -1,6 +1,6 @@
# URL scheme # URL scheme
CodiMD has three different modes for viewing a stored note. Each mode has a slightly different URL for accessing it. This document gives an overview about these URLs. HedgeDoc has three different modes for viewing a stored note. Each mode has a slightly different URL for accessing it. This document gives an overview about these URLs.
We assume that you replace `pad.example.com` with the domain of your instance. We assume that you replace `pad.example.com` with the domain of your instance.
## Default (random) ## Default (random)

View file

@ -164,7 +164,7 @@ module.exports = {
openID: false, openID: false,
// linkifyHeaderStyle - How is a header text converted into a link id. // linkifyHeaderStyle - How is a header text converted into a link id.
// Header Example: "3.1. Good Morning my Friend! - Do you have 5$?" // Header Example: "3.1. Good Morning my Friend! - Do you have 5$?"
// * 'keep-case' is the legacy CodiMD value. // * 'keep-case' is the legacy HedgeDoc value.
// Generated id: "31-Good-Morning-my-Friend---Do-you-have-5" // Generated id: "31-Good-Morning-my-Friend---Do-you-have-5"
// * 'lower-case' is the same like legacy (see above), but converted to lower-case. // * 'lower-case' is the same like legacy (see above), but converted to lower-case.
// Generated id: "#31-good-morning-my-friend---do-you-have-5" // Generated id: "#31-good-morning-my-friend---do-you-have-5"

View file

@ -157,7 +157,7 @@ for (let i = keys.length; i--;) {
// Notify users about the prefix change and inform them they use legacy prefix for environment variables // Notify users about the prefix change and inform them they use legacy prefix for environment variables
if (Object.keys(process.env).toString().indexOf('HMD_') !== -1) { if (Object.keys(process.env).toString().indexOf('HMD_') !== -1) {
logger.warn('Using legacy HMD prefix for environment variables. Please change your variables in future. For details see: https://github.com/codimd/server#environment-variables-will-overwrite-other-server-configs') logger.warn('Using legacy HMD prefix for environment variables. Please change your variables in future. For details see: https://github.com/hedgedoc/hedgedoc/blob/master/docs/configuration.md')
} }
// Generate session secret if it stays on default values // Generate session secret if it stays on default values

View file

@ -350,7 +350,7 @@ module.exports = function (sequelize, DataTypes) {
return title || 'Untitled' return title || 'Untitled'
} }
Note.generateWebTitle = function (title) { Note.generateWebTitle = function (title) {
title = !title || title === 'Untitled' ? 'CodiMD - Collaborative markdown notes' : title + ' - CodiMD' title = !title || title === 'Untitled' ? 'HedgeDoc - Collaborative markdown notes' : title + ' - HedgeDoc'
return title return title
} }
Note.extractNoteTags = function (meta, $) { Note.extractNoteTags = function (meta, $) {

View file

@ -97,7 +97,7 @@ function githubActionGist (req, res, note) {
request({ request({
url: gistUrl, url: gistUrl,
headers: { headers: {
'User-Agent': 'CodiMD', 'User-Agent': 'HedgeDoc',
'Authorization': 'token ' + accessToken 'Authorization': 'token ' + accessToken
}, },
method: 'POST', method: 'POST',

View file

@ -4,7 +4,7 @@ const config = require('../../config')
module.exports = function (req, res, next) { module.exports = function (req, res, next) {
res.set({ res.set({
'CodiMD-Version': config.version 'HedgeDoc-Version': config.version
}) })
return next() return next()
} }

View file

@ -74,7 +74,7 @@ exports.showNote = function (req, res, next) {
'Cache-Control': 'private', // only cache by client 'Cache-Control': 'private', // only cache by client
'X-Robots-Tag': 'noindex, nofollow' // prevent crawling 'X-Robots-Tag': 'noindex, nofollow' // prevent crawling
}) })
return res.render('codimd.ejs', { return res.render('hedgedoc.ejs', {
title: title, title: title,
opengraph: opengraph opengraph: opengraph
}) })

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "ملاحظات ماركداون تعاونية", "Collaborative markdown notes": "ملاحظات ماركداون تعاونية",
"Realtime collaborative markdown notes on all platforms.": "تعاون آني في ملاحظات ماركداون على كافة المنصات.",
"Best way to write and share your knowledge in markdown.": "أحسن منصة لكتابة ومشاركة ماركداون.", "Best way to write and share your knowledge in markdown.": "أحسن منصة لكتابة ومشاركة ماركداون.",
"Intro": "مُقدِّمة", "Intro": "مُقدِّمة",
"History": "التاريخ", "History": "التاريخ",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Notes col·laboratives a Markdown", "Collaborative markdown notes": "Notes col·laboratives a Markdown",
"Realtime collaborative markdown notes on all platforms.": "Notes col·laboratives a Markdown per a totes les plataformes.",
"Best way to write and share your knowledge in markdown.": "La millor forma d'escriure i compartir el teu coneixement a Markdown.", "Best way to write and share your knowledge in markdown.": "La millor forma d'escriure i compartir el teu coneixement a Markdown.",
"Intro": "Introducció", "Intro": "Introducció",
"History": "Història", "History": "Història",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Kolaborativní markdown poznámky", "Collaborative markdown notes": "Kolaborativní markdown poznámky",
"Realtime collaborative markdown notes on all platforms.": "Spolupracujte na markdown poznámkách na všech platformách v reálném čase.",
"Best way to write and share your knowledge in markdown.": "Nejlepší platforma pro tvorbu a sdílení vašich znalostí v markdown.", "Best way to write and share your knowledge in markdown.": "Nejlepší platforma pro tvorbu a sdílení vašich znalostí v markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "Historie", "History": "Historie",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Kollaborative markdown-noter", "Collaborative markdown notes": "Kollaborative markdown-noter",
"Realtime collaborative markdown notes on all platforms.": "Kollaborative markdown-noter i realtid på alle platforme.",
"Best way to write and share your knowledge in markdown.": "Bedste måde at skrive og dele din viden i markdown.", "Best way to write and share your knowledge in markdown.": "Bedste måde at skrive og dele din viden i markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "Historik", "History": "Historik",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Gemeinschaftliche Markdown Notizen", "Collaborative markdown notes": "Gemeinschaftliche Markdown Notizen",
"Realtime collaborative markdown notes on all platforms.": "Gemeinschaftliche Notizen in Echtzeit auf allen Plattformen.",
"Best way to write and share your knowledge in markdown.": "Der beste Weg, Notizen zu schreiben und teilen.", "Best way to write and share your knowledge in markdown.": "Der beste Weg, Notizen zu schreiben und teilen.",
"Intro": "Einleitung", "Intro": "Einleitung",
"History": "Verlauf", "History": "Verlauf",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Συνεργατικές σημειώσεις markdown", "Collaborative markdown notes": "Συνεργατικές σημειώσεις markdown",
"Realtime collaborative markdown notes on all platforms.": "Συνεργατική σημειώσεις markdown σε όλες τις πλατφόρμες σε πραγματικό χρόνο.",
"Best way to write and share your knowledge in markdown.": "Ο καλύτερος τρόπος να γράψεις και να μοιραστείς την γνώση σου σε markdown.", "Best way to write and share your knowledge in markdown.": "Ο καλύτερος τρόπος να γράψεις και να μοιραστείς την γνώση σου σε markdown.",
"Intro": "Εισαγωγή", "Intro": "Εισαγωγή",
"History": "Ιστορία", "History": "Ιστορία",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Collaborative markdown notes", "Collaborative markdown notes": "Collaborative markdown notes",
"Realtime collaborative markdown notes on all platforms.": "Collaborate on markdown notes on all platforms in realtime.",
"Best way to write and share your knowledge in markdown.": "The best platform to write and share markdown.", "Best way to write and share your knowledge in markdown.": "The best platform to write and share markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "History", "History": "History",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Kunlaborataj marksubenaj notoj", "Collaborative markdown notes": "Kunlaborataj marksubenaj notoj",
"Realtime collaborative markdown notes on all platforms.": "Tujkunlaborataj marksubenaj notoj ĉe ĉiuj sistemoj.",
"Best way to write and share your knowledge in markdown.": "La plej bona maniero skribi kaj havigi vian scion marksubene.", "Best way to write and share your knowledge in markdown.": "La plej bona maniero skribi kaj havigi vian scion marksubene.",
"Intro": "Enkonduko", "Intro": "Enkonduko",
"History": "Historio", "History": "Historio",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Notas colaborativas en Markdown", "Collaborative markdown notes": "Notas colaborativas en Markdown",
"Realtime collaborative markdown notes on all platforms.": "Notas colaborativas en Markdown para todas las plataformas en tiempo real.",
"Best way to write and share your knowledge in markdown.": "La mejor forma de escribir y compartir tu conocimiento en Markdown.", "Best way to write and share your knowledge in markdown.": "La mejor forma de escribir y compartir tu conocimiento en Markdown.",
"Intro": "Introduccion", "Intro": "Introduccion",
"History": "Historia", "History": "Historia",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Notes collaboratives en markdown", "Collaborative markdown notes": "Notes collaboratives en markdown",
"Realtime collaborative markdown notes on all platforms.": "Notes en markdown collaboratives en temps réel sur toutes les plateformes.",
"Best way to write and share your knowledge in markdown.": "Le meilleur moyen d'écrire et partager votre savoir en markdown.", "Best way to write and share your knowledge in markdown.": "Le meilleur moyen d'écrire et partager votre savoir en markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "Historique", "History": "Historique",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "सहयोगात्मक मार्कडॉऊन नोट्स", "Collaborative markdown notes": "सहयोगात्मक मार्कडॉऊन नोट्स",
"Realtime collaborative markdown notes on all platforms.": "सभी प्लेटफार्मों पर वास्तविक समय सहयोगी मार्कडॉऊन के नोट्स",
"Best way to write and share your knowledge in markdown.": "मार्कडॉऊन में लिखने के लिए और अपना ज्ञान शेयर करने का सबसे अच्छा तरीका", "Best way to write and share your knowledge in markdown.": "मार्कडॉऊन में लिखने के लिए और अपना ज्ञान शेयर करने का सबसे अच्छा तरीका",
"Intro": "परिचय", "Intro": "परिचय",
"History": "इतिहास", "History": "इतिहास",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Kolaborativne markdown bilješke", "Collaborative markdown notes": "Kolaborativne markdown bilješke",
"Realtime collaborative markdown notes on all platforms.": "Kolaborativne markdown bilješke na svim platformama u realnom vremenu.",
"Best way to write and share your knowledge in markdown.": "Najbolji način za pisanje i dijeljenje svog znanja u markdown-u.", "Best way to write and share your knowledge in markdown.": "Najbolji način za pisanje i dijeljenje svog znanja u markdown-u.",
"Intro": "Uvod", "Intro": "Uvod",
"History": "Povijest", "History": "Povijest",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Catatan markdown kolaboratif", "Collaborative markdown notes": "Catatan markdown kolaboratif",
"Realtime collaborative markdown notes on all platforms.": "Berkolaborasi di catatan markdown di semua platform secara realtime",
"Best way to write and share your knowledge in markdown.": "Platform terbaik untuk menulis dan membagikan markdown", "Best way to write and share your knowledge in markdown.": "Platform terbaik untuk menulis dan membagikan markdown",
"Intro": "Perkenalan", "Intro": "Perkenalan",
"History": "Riwayat", "History": "Riwayat",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Note collaborative in markdown", "Collaborative markdown notes": "Note collaborative in markdown",
"Realtime collaborative markdown notes on all platforms.": "Note markdown collaborative in tempo reale per tutte le piattaforme.",
"Best way to write and share your knowledge in markdown.": "Miglior modo per scrivere e condividere le tue conoscenze in markdown.", "Best way to write and share your knowledge in markdown.": "Miglior modo per scrivere e condividere le tue conoscenze in markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "Cronologia", "History": "Cronologia",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "共同編集できるMarkdownート", "Collaborative markdown notes": "共同編集できるMarkdownート",
"Realtime collaborative markdown notes on all platforms.": "マルチプラットフォーム、リアルタイムで共同編集できるMarkdownート",
"Best way to write and share your knowledge in markdown.": "Markdownでナレッジを蓄積・共有できるベストツール", "Best way to write and share your knowledge in markdown.": "Markdownでナレッジを蓄積・共有できるベストツール",
"Intro": "サービスの紹介", "Intro": "サービスの紹介",
"History": "履歴", "History": "履歴",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "협동 마크다운 노트", "Collaborative markdown notes": "협동 마크다운 노트",
"Realtime collaborative markdown notes on all platforms.": "실시간으로 모든 플랫폼에서 마크다운 노트를 함께 작성해보세요.",
"Best way to write and share your knowledge in markdown.": "마크다운을 쓰고 공유하는 최고의 플랫폼입니다.", "Best way to write and share your knowledge in markdown.": "마크다운을 쓰고 공유하는 최고의 플랫폼입니다.",
"Intro": "소개", "Intro": "소개",
"History": "기록", "History": "기록",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "സംയോജിത മാർക് ഡൗൺ കുറിപ്പുകൾ", "Collaborative markdown notes": "സംയോജിത മാർക് ഡൗൺ കുറിപ്പുകൾ",
"Realtime collaborative markdown notes on all platforms.": "മാർക്ക് ഡൗൺ കുറിപ്പുകളിൽ ഏത് പ്ലാറ്റ് ഫോമിൽ നിന്നും തത്സമയം സഹകരിക്കാൻ",
"Best way to write and share your knowledge in markdown.": "മാർക് ഡൗൺ കുറിപ്പുകൾ എഴുതാനും പങ്കുവെക്കാനുമുള്ള ഏറ്റവും മികച്ച പ്ലാറ്റ്ഫോം ", "Best way to write and share your knowledge in markdown.": "മാർക് ഡൗൺ കുറിപ്പുകൾ എഴുതാനും പങ്കുവെക്കാനുമുള്ള ഏറ്റവും മികച്ച പ്ലാറ്റ്ഫോം ",
"Intro": "ആമുഖം ", "Intro": "ആമുഖം ",
"History": "ചരിത്രം", "History": "ചരിത്രം",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Samenwerkende markdown notities", "Collaborative markdown notes": "Samenwerkende markdown notities",
"Realtime collaborative markdown notes on all platforms.": "Realtime samenwerkende markdown notities.",
"Best way to write and share your knowledge in markdown.": "De beste manier om je kennis vast te leggen en te delen. ", "Best way to write and share your knowledge in markdown.": "De beste manier om je kennis vast te leggen en te delen. ",
"Intro": "Introductie", "Intro": "Introductie",
"History": "Geschiedenis", "History": "Geschiedenis",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Wspólne markdown notatki", "Collaborative markdown notes": "Wspólne markdown notatki",
"Realtime collaborative markdown notes on all platforms.": "Rzeczywiste wspólne markdown notatki dla wszystkich platform",
"Best way to write and share your knowledge in markdown.": "Najlepszy sposób na pisanie i dzielenie się swoją wiedzą w markdown.", "Best way to write and share your knowledge in markdown.": "Najlepszy sposób na pisanie i dzielenie się swoją wiedzą w markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "Historia", "History": "Historia",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Notas em Markdown colaborativas", "Collaborative markdown notes": "Notas em Markdown colaborativas",
"Realtime collaborative markdown notes on all platforms.": "Notas colaborativas em Markdown para todas as plataformas.",
"Best way to write and share your knowledge in markdown.": "A melhor forma de escrever e compartilhar seu conhecimento em Markdown.", "Best way to write and share your knowledge in markdown.": "A melhor forma de escrever e compartilhar seu conhecimento em Markdown.",
"Intro": "Introdução", "Intro": "Introdução",
"History": "Histórico", "History": "Histórico",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Совместные markdown заметки", "Collaborative markdown notes": "Совместные markdown заметки",
"Realtime collaborative markdown notes on all platforms.": "Совместные markdown заметки в режиме реального времени на всех платформах.",
"Best way to write and share your knowledge in markdown.": "Лучший способ записывать свои знания и делиться ими в формате markdown.", "Best way to write and share your knowledge in markdown.": "Лучший способ записывать свои знания и делиться ими в формате markdown.",
"Intro": "Введение", "Intro": "Введение",
"History": "История", "History": "История",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Kolaboratívne markdown poznámky", "Collaborative markdown notes": "Kolaboratívne markdown poznámky",
"Realtime collaborative markdown notes on all platforms.": "Spolupracujte na markdown poznámkach na všetkých platformách v reálnom čase.",
"Best way to write and share your knowledge in markdown.": "Nejlepšia platforma pre tvorbu a zdieľanie vašich znalostí v markdown.", "Best way to write and share your knowledge in markdown.": "Nejlepšia platforma pre tvorbu a zdieľanie vašich znalostí v markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "História", "History": "História",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Дељене белешке у Markdown формату", "Collaborative markdown notes": "Дељене белешке у Markdown формату",
"Realtime collaborative markdown notes on all platforms.": "Заједнички рад на markdown тексту у реалном времену, на свим платформама",
"Best way to write and share your knowledge in markdown.": "Савршен начин за писање и дељење знања у markdown формату", "Best way to write and share your knowledge in markdown.": "Савршен начин за писање и дељење знања у markdown формату",
"Intro": "Увод", "Intro": "Увод",
"History": "Историја", "History": "Историја",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Kollaborativa markdownanteckningar", "Collaborative markdown notes": "Kollaborativa markdownanteckningar",
"Realtime collaborative markdown notes on all platforms.": "Kollaborativa markdownantackningar på alla plattformar.",
"Best way to write and share your knowledge in markdown.": "Bästa sättet att skriva och dela din kunskap i markdown.", "Best way to write and share your knowledge in markdown.": "Bästa sättet att skriva och dela din kunskap i markdown.",
"Intro": "Intro", "Intro": "Intro",
"History": "Historik", "History": "Historik",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Ortak markdown notları", "Collaborative markdown notes": "Ortak markdown notları",
"Realtime collaborative markdown notes on all platforms.": "Tüm platformlarda gerçek zamanlı markdown notları",
"Best way to write and share your knowledge in markdown.": "Markdownda bilginizi paylaşmanın en kolay yolu.", "Best way to write and share your knowledge in markdown.": "Markdownda bilginizi paylaşmanın en kolay yolu.",
"Intro": "Giriş", "Intro": "Giriş",
"History": "Geçmiş", "History": "Geçmiş",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Спільні примітки щодо знижок", "Collaborative markdown notes": "Спільні примітки щодо знижок",
"Realtime collaborative markdown notes on all platforms.": "Спільні примітки щодо знижок в реальному часі на всіх платформах.",
"Best way to write and share your knowledge in markdown.": "Кращий спосіб, щоб записувати і ділитись своїми знаннями щодо знижок в реальному часі.", "Best way to write and share your knowledge in markdown.": "Кращий спосіб, щоб записувати і ділитись своїми знаннями щодо знижок в реальному часі.",
"Intro": "Вступ", "Intro": "Вступ",
"History": "Історія", "History": "Історія",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Cộng tác ghi chú markdown", "Collaborative markdown notes": "Cộng tác ghi chú markdown",
"Realtime collaborative markdown notes on all platforms.": "Cộng tác ghi chú markdown đa nền tảng thời gian thực",
"Best way to write and share your knowledge in markdown.": "Nền tảng tốt nhất để viết và chia sẻ markdown", "Best way to write and share your knowledge in markdown.": "Nền tảng tốt nhất để viết và chia sẻ markdown",
"Intro": "Giới thiệu", "Intro": "Giới thiệu",
"History": "Lịch sử", "History": "Lịch sử",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Markdown 协作笔记", "Collaborative markdown notes": "Markdown 协作笔记",
"Realtime collaborative markdown notes on all platforms.": "使用 Markdown 的跨平台即时协作笔记。",
"Best way to write and share your knowledge in markdown.": "写作与分享 Markdown 的最佳平台。", "Best way to write and share your knowledge in markdown.": "写作与分享 Markdown 的最佳平台。",
"Intro": "简介", "Intro": "简介",
"History": "历史", "History": "历史",

View file

@ -1,6 +1,5 @@
{ {
"Collaborative markdown notes": "Markdown 協作筆記", "Collaborative markdown notes": "Markdown 協作筆記",
"Realtime collaborative markdown notes on all platforms.": "使用 Markdown 的跨平台即時協作筆記",
"Best way to write and share your knowledge in markdown.": "您使用 Markdown 寫作與分享知識的最佳方式", "Best way to write and share your knowledge in markdown.": "您使用 Markdown 寫作與分享知識的最佳方式",
"Intro": "簡介", "Intro": "簡介",
"History": "紀錄", "History": "紀錄",

View file

@ -1,7 +1,7 @@
{ {
"name": "CodiMD", "name": "HedgeDoc",
"version": "1.6.0", "version": "1.6.0",
"description": "Realtime collaborative markdown notes on all platforms.", "description": "The best platform to write and share markdown.",
"main": "app.js", "main": "app.js",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"scripts": { "scripts": {
@ -29,7 +29,7 @@
"bootstrap-validator": "^0.11.8", "bootstrap-validator": "^0.11.8",
"chance": "^1.0.4", "chance": "^1.0.4",
"cheerio": "^0.22.0", "cheerio": "^0.22.0",
"codemirror": "git+https://github.com/codimd/CodeMirror.git", "codemirror": "git+https://github.com/hedgedoc/CodeMirror.git",
"compression": "^1.6.2", "compression": "^1.6.2",
"connect-flash": "^0.1.1", "connect-flash": "^0.1.1",
"connect-session-sequelize": "^6.0.0", "connect-session-sequelize": "^6.0.0",
@ -58,7 +58,7 @@
"jquery-mousewheel": "^3.1.13", "jquery-mousewheel": "^3.1.13",
"jquery-ui": "^1.12.1", "jquery-ui": "^1.12.1",
"js-cookie": "^2.1.3", "js-cookie": "^2.1.3",
"js-sequence-diagrams": "git+https://github.com/codimd/js-sequence-diagrams.git", "js-sequence-diagrams": "git+https://github.com/hedgedoc/js-sequence-diagrams.git",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"jsdom-nogyp": "^0.8.3", "jsdom-nogyp": "^0.8.3",
"keymaster": "^1.6.2", "keymaster": "^1.6.2",
@ -84,7 +84,7 @@
"mathjax": "^2.7.6", "mathjax": "^2.7.6",
"mattermost": "^3.4.0", "mattermost": "^3.4.0",
"mermaid": "^8.5.1", "mermaid": "^8.5.1",
"meta-marked": "git+https://github.com/codimd/meta-marked", "meta-marked": "git+https://github.com/hedgedoc/meta-marked",
"method-override": "^2.3.7", "method-override": "^2.3.7",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"minio": "^6.0.0", "minio": "^6.0.0",
@ -145,13 +145,13 @@
"engines": { "engines": {
"node": ">=10.13" "node": ">=10.13"
}, },
"bugs": "https://github.com/codimd/server/issues", "bugs": "https://github.com/hedgedoc/hedgedoc/issues",
"keywords": [ "keywords": [
"Collaborative", "Collaborative",
"Markdown", "Markdown",
"Notes" "Notes"
], ],
"homepage": "https://codimd.org", "homepage": "https://hedgedoc.org",
"maintainers": [ "maintainers": [
{ {
"name": "Claudius Coenen", "name": "Claudius Coenen",
@ -165,7 +165,7 @@
], ],
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/codimd/server.git" "url": "https://github.com/hedgedoc/hedgedoc.git"
}, },
"devDependencies": { "devDependencies": {
"babel-cli": "^6.26.0", "babel-cli": "^6.26.0",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 684 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

View file

@ -20,6 +20,21 @@ body.night{
background: #333 !important; background: #333 !important;
} }
body.night .no-night {
display: none;
}
body:not(.night) .night {
display: none;
}
.h-100 {
height: 100%;
}
.header-brand {
padding: 6px;
}
.CodeMirror { .CodeMirror {
font-family: "Source Code Pro", Consolas, monaco, monospace; font-family: "Source Code Pro", Consolas, monaco, monospace;
letter-spacing: 0.025em; letter-spacing: 0.025em;

View file

@ -2,11 +2,11 @@
## Introduction ## Introduction
<i class="fa fa-file-text"></i> **CodiMD** is a real-time, multi-platform collaborative markdown note editor. **HedgeDoc** is a real-time, multi-platform collaborative markdown note editor.
This means that you can write notes with other people on your **desktop**, **tablet** or even on the **phone**. This means that you can write notes with other people on your **desktop**, **tablet** or even on the **phone**.
You can sign-in via multiple auth providers like **Facebook**, **Twitter**, **GitHub** and many more on the [*homepage*](/). You can sign-in via multiple auth providers like **Facebook**, **Twitter**, **GitHub** and many more on the [*homepage*](/).
If you experience any *issues*, feel free to report it on [**GitHub**](https://github.com/codimd/server/issues). If you experience any *issues*, feel free to report it on [**GitHub**](https://github.com/hedgedoc/hedgedoc/issues).
Or meet us on [**Matrix.org**](https://matrix.to/#/#hedgedoc:matrix.org) for dev-talk and interactive help. Or meet us on [**Matrix.org**](https://matrix.to/#/#hedgedoc:matrix.org) for dev-talk and interactive help.
**Thank you very much!** **Thank you very much!**
@ -27,7 +27,7 @@ Or meet us on [**Matrix.org**](https://matrix.to/#/#hedgedoc:matrix.org) for dev
### Night Mode ### Night Mode
When you are tired of a white screen and like a night mode, click on the little moon <i class="fa fa-moon-o"></i> and turn on the night view of CodiMD. When you are tired of a white screen and like a night mode, click on the little moon <i class="fa fa-moon-o"></i> and turn on the night view of HedgeDoc.
The editor view, which is in night mode by default, can also be toggled between night and day view using the the little sun<i class="fa fa-sun-o fa-fw"></i>. The editor view, which is in night mode by default, can also be toggled between night and day view using the the little sun<i class="fa fa-sun-o fa-fw"></i>.
@ -73,7 +73,7 @@ There are four possible options:
Notes can be embedded as follows: Notes can be embedded as follows:
```xml ```xml
<iframe width="100%" height="500" src="https://demo.codimd.io/features" frameborder="0"></iframe> <iframe width="100%" height="500" src="https://demo.hedgedoc.org/features" frameborder="0"></iframe>
``` ```
### [Slide Mode](./slide-example) ### [Slide Mode](./slide-example)
@ -524,7 +524,7 @@ Center aligned columns
#### Links #### Links
[link text](https://demo.codimd.org) [link text](https://demo.hedgedoc.org)
[link with title](https://nodeca.github.io/pica/demo/ "title text!") [link with title](https://nodeca.github.io/pica/demo/ "title text!")
Autoconverted link <https://github.com/nodeca/pica> Autoconverted link <https://github.com/nodeca/pica>

View file

@ -5,9 +5,9 @@ We process the following data, for the following purposes:
| your data | our usage | | your data | our usage |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| IP-Address | Used to communicate with your browser and our servers. It's may exposed to third-parties which provide resources for this service. These services are, depending on your login method, the document you visit and the setup of this instance: Google, Disqus, MathJax, GitHub, SlideShare/LinkedIn, yahoo, Libravatar, Imgur, Amazon, and Cloudflare. | | IP-Address | Used to communicate with your browser and our servers. It's may exposed to third-parties which provide resources for this service. These services are, depending on your login method, the document you visit and the setup of this instance: Google, Disqus, MathJax, GitHub, SlideShare/LinkedIn, yahoo, Libravatar, Imgur, Amazon, and Cloudflare. |
| Usernames and profiles | Your username as well as user profiles that are connected with it are transmitted and stored by us to provide a useful login integration with services like GitHub, Facebook, Twitter, GitLab, Dropbox, Google. Depending on the setup of this CodiMD instance there are maybe other third-parties involved using SAML, LDAP or the integration with a Mattermost instance. | | Usernames and profiles | Your username as well as user profiles that are connected with it are transmitted and stored by us to provide a useful login integration with services like GitHub, Facebook, Twitter, GitLab, Dropbox, Google. Depending on the setup of this HedgeDoc instance there are maybe other third-parties involved using SAML, LDAP or the integration with a Mattermost instance. |
| Profile pictures | Your profile picture is either loaded from the service you used to login, the CodiMD instance or Libravatar. | | Profile pictures | Your profile picture is either loaded from the service you used to login, the HedgeDoc instance or Libravatar. |
| Uploaded pictures | Pictures that are uploaded for documents are either uploaded to Amazon S3, Imgur, a minio instance or the local filesystem of the CodiMD server. | | Uploaded pictures | Pictures that are uploaded for documents are either uploaded to Amazon S3, Imgur, a minio instance or the local filesystem of the HedgeDoc server. |
All account data and notes are stored in a mysql/postgres/sqlite database. Besides the user accounts and the document themselves also relationships between the documents and the user accounts are stored. This includes ownership, authorship and revisions of all changes made during the creation of a note. All account data and notes are stored in a mysql/postgres/sqlite database. Besides the user accounts and the document themselves also relationships between the documents and the user accounts are stored. This includes ownership, authorship and revisions of all changes made during the creation of a note.

View file

@ -96,7 +96,7 @@ dir: rtl
## breaks ## breaks
This option means the hardbreaks in the note will be parsed or be ignore. This option means the hardbreaks in the note will be parsed or be ignore.
The original markdown syntax breaks only if you put space twice, but CodiMD choose to breaks every time you enter a break. The original markdown syntax breaks only if you put space twice, but HedgeDoc choose to breaks every time you enter a break.
You can only use whether `true` or `false`. You can only use whether `true` or `false`.
> default: not set (which will be true) > default: not set (which will be true)
@ -125,7 +125,7 @@ This option allows you to enable Disqus with your shortname.
**Example** **Example**
```yml ```yml
disqus: codimd disqus: hedgedoc
``` ```
## type ## type

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/icons/mstile-150x150.png"/>
<TileColor>#b51f08</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

BIN
public/icons/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Some files were not shown because too many files have changed in this diff Show more