Replace CodiMD with HedgeDoc
Signed-off-by: Erik Michelson <github@erik.michelson.eu> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: References in public/views Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update links in README Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update links in SECURITY.md Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update links in LICENSE Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update links in docs/configuration.md Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update links in bin/setup Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: References in docs/guides Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: References in docs/dev Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: References in docs/guides/auth Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: References in docs/setup Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update various links in code to the new GitHub org. Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: codiMDVersion.js is now hedgeDocVersion.js Signed-off-by: David Mehren <git@herrmehren.de> Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: References in docs/setup/yunohost Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rebrand to HedgeDoc: Add banner and logo Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Update links in docs/guides/migrate-etherpad Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Remove note in docs/guides/auth/github Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Replace links in public/docs/features Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Add todo placeholder in docs/history Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Replace github link in public/views/index/body Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Replace github link in README Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Add logo to README Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Rename to HedgeDoc: Add note about the renaming to the front page Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> Removed Travis from README.md and change CodiMD to HedgeDoc in some places Signed-off-by: Yannick Bungers <git@innay.de> Some more renaming to HedgeDoc - Fixed capitalization of HedgeDoc - Added renaming for etherpad migration doc Signed-off-by: Yannick Bungers <git@innay.de> Changed Repo name to hedgedoc Signed-off-by: Yannick Bungers <git@innay.de>
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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].
|
||||||
|
|
4
LICENSE
|
@ -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 - Realtime collaborative markdown notes on all platforms.
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
|
|
59
README.md
|
@ -1,21 +1,20 @@
|
||||||
# CodiMD
|
![HedgeDoc Logo](https://raw.githubusercontent.com/hedgedoc/hedgedoc-logo/main/LOGOTYPE/SVG/HedgeDoc-Logo%204b.svg)
|
||||||
|
|
||||||
[![#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.3.2 with its feature demonstration page open](docs/images/CodiMD-1.3.2-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
|
||||||
|
|
|
@ -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
|
@ -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) {
|
||||||
|
|
8
app.json
|
@ -1,14 +1,14 @@
|
||||||
{
|
{
|
||||||
"name": "CodiMD",
|
"name": "HedgeDoc",
|
||||||
"description": "Realtime collaborative markdown notes on all platforms",
|
"description": "Realtime collaborative markdown notes on all platforms",
|
||||||
"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": {
|
||||||
|
|
|
@ -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/server#configuration-files
|
||||||
|
|
||||||
* config.json -- CodiMD config
|
* config.json -- HedgeDoc config
|
||||||
* .sequelizerc -- db config
|
* .sequelizerc -- db config
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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/server/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) |
|
||||||
|
|
|
@ -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. |
|
||||||
|
|
|
@ -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/server.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
|
||||||
|
|
|
@ -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/server
|
||||||
license:
|
license:
|
||||||
name: AGPLv3
|
name: AGPLv3
|
||||||
url: https://github.com/codimd/server/blob/master/LICENSE
|
url: https://github.com/hedgedoc/server/blob/master/LICENSE
|
||||||
|
|
||||||
externalDocs:
|
externalDocs:
|
||||||
url: https://github.com/codimd/server/blob/master/docs/dev/api.md
|
url: https://github.com/hedgedoc/server/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/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.'
|
||||||
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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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/server#56](https://github.com/hedgedoc/server/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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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`:
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
```
|
```
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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/server/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
|
||||||
|
|
|
@ -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/server/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/server.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/server`](https://quay.io/repository/hedgedoc/server?tab=tags).
|
||||||
|
|
||||||
### Heroku
|
### Heroku
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# History of CodiMD
|
# History of HedgeDoc
|
||||||
|
|
||||||
## It started with HackMD
|
## It started with HackMD
|
||||||
|
|
||||||
|
@ -34,4 +34,8 @@ 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/server/issues/10).*
|
||||||
|
|
||||||
|
## CodiMD became HedgeDoc
|
||||||
|
|
||||||
|
<to be filled>
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -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/server/status "Docker Repository on Quay")](https://quay.io/repository/hedgedoc/server)
|
||||||
|
|
||||||
## 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/server/status "Docker Repository on Quay")](https://quay.io/repository/hedgedoc/server)
|
||||||
|
|
||||||
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).
|
||||||
|
|
|
@ -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/server/tree/master)
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -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).
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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/server#environment-variables-will-overwrite-other-server-configs')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate session secret if it stays on default values
|
// Generate session secret if it stays on default values
|
||||||
|
|
|
@ -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, $) {
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
|
@ -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
|
||||||
})
|
})
|
||||||
|
|
12
package.json
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "CodiMD",
|
"name": "HedgeDoc",
|
||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
"description": "Realtime collaborative markdown notes on all platforms.",
|
"description": "Realtime collaborative markdown notes on all platforms.",
|
||||||
"main": "app.js",
|
"main": "app.js",
|
||||||
|
@ -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",
|
||||||
|
|
Before Width: | Height: | Size: 684 B |
1
public/banner/banner_h_bw.svg
Normal file
After Width: | Height: | Size: 9.4 KiB |
1
public/banner/banner_h_wb.svg
Normal file
After Width: | Height: | Size: 9.5 KiB |
1
public/banner/banner_vertical_color.svg
Normal file
After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 4.7 KiB |
|
@ -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;
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
<i class="fa fa-file-text"></i> **CodiMD** is a real-time, multi-platform collaborative markdown note editor.
|
<i class="fa fa-file-text"></i> **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>
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Before Width: | Height: | Size: 725 B |
BIN
public/icons/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
public/icons/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
public/icons/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
9
public/icons/browserconfig.xml
Normal 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>
|
BIN
public/icons/favicon-16x16.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
public/icons/favicon-32x32.png
Normal file
After Width: | Height: | Size: 605 B |
BIN
public/icons/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/icons/mstile-144x144.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
public/icons/mstile-150x150.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
public/icons/mstile-310x150.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
public/icons/mstile-310x310.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
public/icons/mstile-70x70.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
1
public/icons/safari-pinned-tab.svg
Normal file
After Width: | Height: | Size: 7.6 KiB |
18
public/icons/site.webmanifest
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"name": "HedgeDoc",
|
||||||
|
"short_name": "HedgeDoc",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/icons/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/icons/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme_color": "#303030",
|
||||||
|
"background_color": "#303030"
|
||||||
|
}
|
|
@ -318,7 +318,7 @@ $('.ui-save-history').click(() => {
|
||||||
const blob = new Blob([history], {
|
const blob = new Blob([history], {
|
||||||
type: 'application/json;charset=utf-8'
|
type: 'application/json;charset=utf-8'
|
||||||
})
|
})
|
||||||
saveAs(blob, `codimd_history_${moment().format('YYYYMMDDHHmmss')}`, true)
|
saveAs(blob, `hedgedoc_history_${moment().format('YYYYMMDDHHmmss')}`, true)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -117,9 +117,9 @@ function getTitle (view) {
|
||||||
export function renderTitle (view) {
|
export function renderTitle (view) {
|
||||||
let title = getTitle(view)
|
let title = getTitle(view)
|
||||||
if (title) {
|
if (title) {
|
||||||
title += ' - CodiMD'
|
title += ' - HedgeDoc'
|
||||||
} else {
|
} else {
|
||||||
title = 'CodiMD - Collaborative markdown notes'
|
title = 'HedgeDoc - Collaborative markdown notes'
|
||||||
}
|
}
|
||||||
return title
|
return title
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<%- include codimd/head %>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<%- include codimd/header %>
|
|
||||||
<%- include codimd/body %>
|
|
||||||
<%- include codimd/footer %>
|
|
||||||
<%- include codimd/foot %>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -2,18 +2,18 @@
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<%- include codimd/head %>
|
<%- include hedgedoc/head %>
|
||||||
<link rel="stylesheet" href="<%- serverURL %>/css/center.css">
|
<link rel="stylesheet" href="<%- serverURL %>/css/center.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<%- include codimd/header %>
|
<%- include hedgedoc/header %>
|
||||||
<div class="container-fluid text-center">
|
<div class="container-fluid text-center">
|
||||||
<div class="vertical-center-row">
|
<div class="vertical-center-row">
|
||||||
<h1><%- code %> <%- detail %> <small><%- msg %></small></h1>
|
<h1><%- code %> <%- detail %> <small><%- msg %></small></h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%- include codimd/footer %>
|
<%- include hedgedoc/footer %>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
15
public/views/hedgedoc.ejs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<%- include hedgedoc/head %>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<%- include hedgedoc/header %>
|
||||||
|
<%- include hedgedoc/body %>
|
||||||
|
<%- include hedgedoc/footer %>
|
||||||
|
<%- include hedgedoc/foot %>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
0
public/views/hedgedoc/footer.ejs
Normal file
|
@ -4,12 +4,13 @@
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
|
<%- include ../includes/favicon %>
|
||||||
<% for (var og in opengraph) { %>
|
<% for (var og in opengraph) { %>
|
||||||
<% if (opengraph.hasOwnProperty(og) && opengraph[og].trim() !== '') { %>
|
<% if (opengraph.hasOwnProperty(og) && opengraph[og].trim() !== '') { %>
|
||||||
<meta property="og:<%- og %>" content="<%- opengraph[og] %>">
|
<meta property="og:<%- og %>" content="<%- opengraph[og] %>">
|
||||||
<% }} if (!opengraph.hasOwnProperty('image')) { %>
|
<% }} if (!opengraph.hasOwnProperty('image')) { %>
|
||||||
<meta property="og:image" content="<%- serverURL %>/codimd-icon-1024.png">
|
<meta property="og:image" content="<%- serverURL %>/icons/android-chrome-512x512">
|
||||||
<meta property="og:image:alt" content="CodiMD logo">
|
<meta property="og:image:alt" content="HedgeDoc logo">
|
||||||
<meta property="og:image:type" content="image/png">
|
<meta property="og:image:type" content="image/png">
|
||||||
<% } %>
|
<% } %>
|
||||||
<base href="<%- serverURL %>/">
|
<base href="<%- serverURL %>/">
|
|
@ -13,7 +13,10 @@
|
||||||
<ul class="dropdown-menu list" role="menu" aria-labelledby="menu">
|
<ul class="dropdown-menu list" role="menu" aria-labelledby="menu">
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<a class="navbar-brand pull-left" href="<%- serverURL %>/"><i class="fa fa-file-text"></i> CodiMD</a>
|
<a class="navbar-brand pull-left header-brand" href="<%- serverURL %>/" title="HedgeDoc (formerly CodiMD)">
|
||||||
|
<img src="<%- serverURL %>/banner/banner_h_bw.svg" alt="HedgeDoc" class="h-100 no-night">
|
||||||
|
<img src="<%- serverURL %>/banner/banner_h_wb.svg" alt="HedgeDoc" class="h-100 night">
|
||||||
|
</a>
|
||||||
<div class="nav-mobile pull-right visible-xs">
|
<div class="nav-mobile pull-right visible-xs">
|
||||||
<a data-toggle="dropdown" class="btn btn-link">
|
<a data-toggle="dropdown" class="btn btn-link">
|
||||||
<i class="fa fa-caret-down"></i>
|
<i class="fa fa-caret-down"></i>
|
11
public/views/includes/favicon.ejs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="<%- serverURL %>/icons/apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="<%- serverURL %>/icons/favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="<%- serverURL %>/icons/favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="<%- serverURL %>/icons/site.webmanifest">
|
||||||
|
<link rel="mask-icon" href="<%- serverURL %>/icons/safari-pinned-tab.svg" color="#b51f08">
|
||||||
|
<link rel="shortcut icon" href="<%- serverURL %>/icons/favicon.ico">
|
||||||
|
<meta name="apple-mobile-web-app-title" content="HedgeDoc - <%= __('Collaborative markdown notes') %>">
|
||||||
|
<meta name="application-name" content="HedgeDoc - <%= __('Collaborative markdown notes') %>">
|
||||||
|
<meta name="msapplication-TileColor" content="#b51f08">
|
||||||
|
<meta name="msapplication-config" content="<%- serverURL %>/icons/browserconfig.xml">
|
||||||
|
<meta name="theme-color" content="#303030">
|
|
@ -40,10 +40,13 @@
|
||||||
|
|
||||||
<div id="home" class="section"<% if(signin) { %> style="display:none;"<% } %>>
|
<div id="home" class="section"<% if(signin) { %> style="display:none;"<% } %>>
|
||||||
<div class="inner cover">
|
<div class="inner cover">
|
||||||
<h1 class="cover-heading"><i class="fa fa-file-text"></i> CodiMD</h1>
|
<h1 class="cover-heading"><img src="<%- serverURL %>/banner/banner_vertical_color.svg" width="400" alt="HedgeDoc logo"></h1>
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
<%= __('Best way to write and share your knowledge in markdown.') %>
|
<%= __('Best way to write and share your knowledge in markdown.') %>
|
||||||
</p>
|
</p>
|
||||||
|
<span class="alert alert-info" style="display: inline-block;">
|
||||||
|
CodiMD was renamed to HedgeDoc. <a href="INSERT_LINK" rel="noopener noreferrer" target="_blank" class="text-danger">Read more</a>
|
||||||
|
</span>
|
||||||
<% if (infoMessage && infoMessage.length > 0) { %>
|
<% if (infoMessage && infoMessage.length > 0) { %>
|
||||||
<div class="alert alert-info" style="max-width: 400px; margin: 0 auto;"><%= infoMessage %></div>
|
<div class="alert alert-info" style="max-width: 400px; margin: 0 auto;"><%= infoMessage %></div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
@ -156,10 +159,10 @@
|
||||||
<option value="ml">മലയാളം</option>
|
<option value="ml">മലയാളം</option>
|
||||||
</select>
|
</select>
|
||||||
<p>
|
<p>
|
||||||
<%- __('Powered by %s', '<a href="https://codimd.org">CodiMD</a>') %> | <a href="<%- serverURL %>/s/release-notes" target="_blank" rel="noopener"><%= __('Releases') %></a> | <a href="<%- sourceURL %>" target="_blank" rel="noopener"><%= __('Source Code') %></a><% if(imprint) { %> | <a href="<%- serverURL %>/s/imprint" target="_blank" rel="noopener"><%= __('Imprint') %></a><% } %><% if(privacyStatement) { %> | <a href="<%- serverURL %>/s/privacy" target="_blank" rel="noopener"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- serverURL %>/s/terms-of-use" target="_blank" rel="noopener"><%= __('Terms of Use') %></a><% } %>
|
<%- __('Powered by %s', '<a href="https://hedgedoc.org">HedgeDoc</a>') %> | <a href="<%- serverURL %>/s/release-notes" target="_blank" rel="noopener"><%= __('Releases') %></a> | <a href="<%- sourceURL %>" target="_blank" rel="noopener"><%= __('Source Code') %></a><% if(imprint) { %> | <a href="<%- serverURL %>/s/imprint" target="_blank" rel="noopener"><%= __('Imprint') %></a><% } %><% if(privacyStatement) { %> | <a href="<%- serverURL %>/s/privacy" target="_blank" rel="noopener"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- serverURL %>/s/terms-of-use" target="_blank" rel="noopener"><%= __('Terms of Use') %></a><% } %>
|
||||||
</p>
|
</p>
|
||||||
<h6 class="social-foot">
|
<h6 class="social-foot">
|
||||||
<%- __('Follow us on %s and %s.', '<a href="https://github.com/codimd/server" target="_blank" rel="noopener"><i class="fa fa-github"></i> GitHub</a>, <a href="https://community.codimd.org" target="_blank" rel="noopener"><i class="fa fa-users" aria-hidden="true"></i> Discourse</a>, <a href="https://matrix.to/#/#hedgedoc:matrix.org" target="_blank" rel="noopener"><i class="fa fa-comments"></i> Matrix</a>, <a href="https://social.codimd.org/mastodon" target="_blank" rel="noopener"><i class="fa fa-mastodon"></i> Mastodon</a>', '<a href="https://translate.codimd.org" target="_blank" rel="noopener"><i class="fa fa-globe"></i> POEditor</a>') %>
|
<%- __('Follow us on %s and %s.', '<a href="https://github.com/hedgedoc/server" target="_blank" rel="noopener"><i class="fa fa-github"></i> GitHub</a>, <a href="https://community.hedgedoc.org" target="_blank" rel="noopener"><i class="fa fa-users" aria-hidden="true"></i> Discourse</a>, <a href="https://matrix.to/#/#hedgedoc:matrix.org" target="_blank" rel="noopener"><i class="fa fa-comments"></i> Matrix</a>, <a href="https://social.hedgedoc.org/mastodon" target="_blank" rel="noopener"><i class="fa fa-mastodon"></i> Mastodon</a>', '<a href="https://translate.hedgedoc.org" target="_blank" rel="noopener"><i class="fa fa-globe"></i> POEditor</a>') %>
|
||||||
</h6>
|
</h6>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,17 +6,16 @@
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta name="description" content="<%= __('Best way to write and share your knowledge in markdown.') %>">
|
<meta name="description" content="<%= __('Best way to write and share your knowledge in markdown.') %>">
|
||||||
<meta name="keywords" content="Collaborative, Markdown, Notes">
|
<meta name="keywords" content="Collaborative, Markdown, Notes">
|
||||||
<meta property="og:title" content="CodiMD - <%= __('Collaborative markdown notes') %>">
|
<%- include ../includes/favicon %>
|
||||||
|
<meta property="og:title" content="HedgeDoc - <%= __('Collaborative markdown notes') %>">
|
||||||
<meta property="og:description" content="<%= __('Best way to write and share your knowledge in markdown.') %>">
|
<meta property="og:description" content="<%= __('Best way to write and share your knowledge in markdown.') %>">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:url" content="<%- serverURL %>">
|
<meta property="og:url" content="<%- serverURL %>">
|
||||||
<meta property="og:image" content="<%- serverURL %>/codimd-icon-1024.png">
|
<meta property="og:image" content="<%- serverURL %>/icons/android-chrome-512x512">
|
||||||
<meta property="og:image:alt" content="CodiMD logo">
|
<meta property="og:image:alt" content="HedgeDoc logo">
|
||||||
<meta property="og:image:type" content="image/png">
|
<meta property="og:image:type" content="image/png">
|
||||||
<base href="<%- serverURL %>/">
|
<base href="<%- serverURL %>/">
|
||||||
<title>CodiMD - <%= __('Collaborative markdown notes') %></title>
|
<title>HedgeDoc - <%= __('Collaborative markdown notes') %></title>
|
||||||
<link rel="icon" type="image/png" href="<%- serverURL %>/favicon.png">
|
|
||||||
<link rel="apple-touch-icon" href="<%- serverURL %>/apple-touch-icon.png">
|
|
||||||
<% if(useCDN) { %>
|
<% if(useCDN) { %>
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.0/css/bootstrap.min.css" integrity="sha256-H0KfTigpUV+0/5tn2HXC0CPwhhDhWgSawJdnFd0CGCo=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.0/css/bootstrap.min.css" integrity="sha256-H0KfTigpUV+0/5tn2HXC0CPwhhDhWgSawJdnFd0CGCo=" crossorigin="anonymous" />
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fork-awesome/1.1.3/css/fork-awesome.min.css" integrity="sha256-ZhApazu+kejqTYhMF+1DzNKjIzP7KXu6AzyXcC1gMus=" crossorigin="anonymous" />
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
<% if (opengraph.hasOwnProperty(og) && opengraph[og].trim() !== '') { %>
|
<% if (opengraph.hasOwnProperty(og) && opengraph[og].trim() !== '') { %>
|
||||||
<meta property="og:<%= og %>" content="<%= opengraph[og] %>">
|
<meta property="og:<%= og %>" content="<%= opengraph[og] %>">
|
||||||
<% }} if (!opengraph.hasOwnProperty('image')) { %>
|
<% }} if (!opengraph.hasOwnProperty('image')) { %>
|
||||||
<meta property="og:image" content="<%- serverURL %>/codimd-icon-1024.png">
|
<meta property="og:image" content="<%- serverURL %>/icons/android-chrome-512x512">
|
||||||
<meta property="og:image:alt" content="CodiMD logo">
|
<meta property="og:image:alt" content="HedgeDoc logo">
|
||||||
<meta property="og:image:type" content="image/png">
|
<meta property="og:image:type" content="image/png">
|
||||||
<% } %>
|
<% } %>
|
||||||
<base href="<%- serverURL %>/">
|
<base href="<%- serverURL %>/">
|
||||||
|
|
|
@ -15,13 +15,13 @@
|
||||||
<h3 class="panel-title"><%= __('Contacts') %></h3>
|
<h3 class="panel-title"><%= __('Contacts') %></h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<a href="https://community.codimd.org" target="_blank"><i class="fa fa-users fa-fw"></i> <%= __('Join the community') %></a>
|
<a href="https://community.hedgedoc.org" target="_blank"><i class="fa fa-users fa-fw"></i> <%= __('Join the community') %></a>
|
||||||
<br>
|
<br>
|
||||||
<a href="https://matrix.to/#/#hedgedoc:matrix.org" target="_blank"><i class="fa fa-hashtag fa-fw"></i> <%= __('Meet us on %s', 'Matrix') %></a>
|
<a href="https://matrix.to/#/#hedgedoc:matrix.org" target="_blank"><i class="fa fa-hashtag fa-fw"></i> <%= __('Meet us on %s', 'Matrix') %></a>
|
||||||
<br>
|
<br>
|
||||||
<a href="https://github.com/codimd/server/issues" target="_blank"><i class="fa fa-tag fa-fw"></i> <%= __('Report an issue') %></a>
|
<a href="https://github.com/hedgedoc/server/issues" target="_blank"><i class="fa fa-tag fa-fw"></i> <%= __('Report an issue') %></a>
|
||||||
<br>
|
<br>
|
||||||
<a href="https://translate.codimd.org" target="_blank"><i class="fa fa-language fa-fw"></i> <%= __('Help us translating') %></a>
|
<a href="https://translate.hedgedoc.org" target="_blank"><i class="fa fa-language fa-fw"></i> <%= __('Help us translating') %></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
|
|