I use CodiMD for drafting blog posts (published with Jekyll), collaborating with others, and for taking notes in class. With the last use, MathJax integration has been absolutely wonderful. It took me a long time to get up to speed but I can take realtime notes in calculus with it and share them with the rest of the class.
I’m also the admin that runs the instance so I’ll share a little bit about infrastructure as well
It’s just a manual installation on a server that runs 17 other applications (there’s a list with descriptions at nixnet.xyz). The OS is Debian Stable ,though I may go with Unstable next time, and I run CodiMD as a systemd service. That way, I don’t have to worry about starting it every time my server reboots; it’s automatic. The application is also run by its own user, codimd
, so there’s little risk of it messing with other components of my system.
~ $ cat /etc/systemd/system/codimd.service
[Unit]
Description=Application service for collaborative markdown notes
After=systemd-networkd.service network.target
[Service]
Type=simple
#Environment=NODE_ENV=production
ExecStart=/usr/bin/npm start --production
RuntimeDirectory=codimd
WorkingDirectory=/home/codimd/codimd
StandardOutput=null
StandardError=null
User=codimd
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
Here’s my config file as well in case you’re curious:
{
"production": {
"domain": "codi.nixnet.xyz",
"loglevel": "info",
"hsts": {
"enable": true,
"maxAgeSeconds": 31536000,
"includeSubdomains": true,
"preload": true
},
"csp": {
"enable": true,
"directives": {
},
"upgradeInsecureRequests": false,
"addDefaults": true,
"addDisqus": false,
"addGoogleAnalytics": false
},
"db": {
"username": "codimd",
"password": "<redacted>",
"database": "codimd",
"host": "localhost",
"port": "3306",
"dialect": "mysql"
},
"protocolUseSSL": true,
"useCDN": false,
"allowAnonymousEdits": true,
"defaultPermission": "locked",
"email": true,
"allowEmailRegister": true,
"allowGravatar": false,
"imageUploadType": "filesystem",
"port": "3000",
"sessionSecret": "<redacted>"
}
}