AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 518849
Accepted
bitinerant
bitinerant
Asked: 2019-05-15 02:36:56 +0800 CST2019-05-15 02:36:56 +0800 CST 2019-05-15 02:36:56 +0800 CST

Como configurar o CodiMD como um wiki pessoal?

  • 772

O CodiMD é ótimo para trabalho colaborativo, mas gostaria de usá-lo para anotações pessoais no meu laptop (Ubuntu 18.04), configurado para funcionar sem conexão com a internet e usar o mínimo de recursos possível. A instalação manual parece ser um bom ponto de partida, mas as instruções pressupõem conhecimento de Node, npm, administração de banco de dados, etc. com os quais não estou familiarizado. Não preciso de TLS, autenticação de usuário ou conexões com serviços em nuvem.

Isto é o que tenho até agora:

sudo apt install -y nodejs npm sqlite3
sudo npm install -g node-gyp
sudo npm install -g yarn
# broken: sudo apt install -y libssl-dev
git clone https://github.com/codimd/server.git
cd server
sudo bin/setup
sudo vi config.json .sequelizerc
# in vi, copy 4 "db" lines from "development" to "production"
# in vi, disable "hsts" and "csp"
# in vi, what should go in the "url" line?
# in vi, what else needs modificaiton?
sudo npm run build
sudo npm start --production  # fails:  sequelize db:migrate && node app.js
# what is the best way to start CodiMD at boot?

Em resumo, estou procurando instruções detalhadas para configurar um CodiMD mínimo de 1 usuário no Ubuntu.

ubuntu node.js
  • 1 1 respostas
  • 1419 Views

1 respostas

  • Voted
  1. Best Answer
    bitinerant
    2019-05-17T02:32:00+08:002019-05-17T02:32:00+08:00

    Eu descobri isso. Coloquei-o em um contêiner LXC para isolamento e segurança. Gostaria de receber conselhos sobre melhores maneiras de fazer essas etapas.

    lxc launch ubuntu:18.04/amd64 codimd
    lxc exec codimd -- apt update
    lxc exec codimd -- apt install -y nodejs npm sqlite3
    lxc exec codimd -- npm install -g node-gyp
    lxc exec codimd -- npm install -g yarn
    lxc exec codimd -- git clone https://github.com/codimd/server.git
    lxc exec codimd -- bash -c 'cd server && bin/setup'
    VMIP=$(lxc list codimd -c4 --format=csv |grep -o '^\S*'); echo $VMIP  # use this IP below
    lxc exec codimd -- vi server/config.json
    # in vi, under "production", set "domain" to the IP displayed above
    # in vi, copy 4 "db" lines from "development" to "production", add final comma
    # in vi, delete 8 "db" lines for "postgres"
    # in vi, delete 15 "saml" lines
    lxc exec codimd -- vi server/.sequelizerc
    # in vi, set "url" to 'sqlite://./db.codimd.sqlite'
    lxc exec codimd -- vi server/lib/config/default.js
    # in vi, set port to 80
    lxc exec codimd -- bash -c 'cd server && npm run build'
    #test it: lxc exec codimd -- bash -c 'cd server && npm start --production'
    lxc exec codimd -- bash -c '(crontab -l 2>/dev/null; echo @reboot /bin/bash -c \""cd /root/server && npm start --production"\") |sudo crontab'
    lxc stop codimd && sleep 3 && lxc start codimd
    firefox "http://$VMIP"
    

    Atualização 2020-04-26 : Percorri um longo caminho com o CodiMD, mas ainda o amo. As etapas abaixo são meu processo de instalação 'novo e aprimorado'. Em particular, não se deve editar .jsarquivos como fiz acima, use Postgres em vez de SQLite e http s .

    Por fim, se alguém estiver interessado em um recurso de pesquisa global, adicionei-o ao meu fork CodiMD no Github . No entanto, ele precisa de 2 ressalvas importantes: ele quebra o modelo de permissões do CodiMD porque permite que qualquer usuário logado encontre as páginas de outros usuários; e considero qualidade 'alfa' (embora eu o use há 7 meses sem problemas).

    Aqui está o meu procedimento de instalação atualizado.

    • instale o LXD:
    sudo apt install -y lxd
    sudo lxd init --auto --storage-backend=dir
    
    • criar e atualizar contêiner:
    lxc launch ubuntu:18.04 codimd
    lxc exec codimd -- apt update && lxc exec codimd -- apt upgrade -y
    
    • instale o CodiMD:
    lxc exec codimd -- apt install -y git nodejs npm postgresql
    lxc exec codimd -- npm install -g node-gyp
    lxc exec codimd -- npm install -g yarn
    lxc exec codimd -- git clone https://github.com/codimd/server.git
    lxc exec codimd -- bash -c 'cd server && bin/setup'
    
    • instale o PostgreSQL:
    lxc exec codimd -- sudo -i -u postgres createuser --createdb codimd
    lxc exec codimd -- sudo -i -u postgres createdb codimd
    lxc exec codimd -- useradd codimd
    lxc exec codimd -- mkdir /home/codimd
    lxc exec codimd -- chown -R codimd:codimd /home/codimd
    lxc exec codimd -- sudo -i -u codimd psql --command='\password codimd'  # set password to <pgpass>
    lxc exec codimd -- sudo -i -u codimd psql --command='\conninfo'  # verify
    
    • gerar certificado TLS autoassinado ( source ):
    lxc exec codimd -- openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/codimdselfsigned.key -out /etc/ssl/certs/codimdselfsigned.crt  # use defaults except Common Name: $MYURL
    lxc exec codimd -- openssl dhparam -dsaparam -out /etc/ssl/dhparam.pem 4096
    
    • construir:
    lxc exec codimd -- bash -c 'cd server && npm run build'
    
    • habilite o firewall (bloqueie a internet de saída para ter certeza de que não é necessário):
    lxc exec codimd -- ufw enable
    lxc exec codimd -- ufw default allow incoming # allow inbound https, ssh
    lxc exec codimd -- ufw default deny outgoing
    
    • execute uma vez para verificar se há erros (ctrl-c para sair):
    #test it: lxc exec codimd -- bash -c 'cd server && npm start --production'
    
    • adicionar contas de usuário:
    lxc exec codimd -- bash -c "cd server && NODE_ENV=production bin/manage_users --pass $USERPASSW --add $EMAIL1"
    lxc exec codimd -- bash -c "cd server && NODE_ENV=production bin/manage_users --pass $USERPASSW --add $EMAIL2"
    lxc exec codimd -- bash -c "cd server && NODE_ENV=production bin/manage_users --pass $USERPASSW --add $EMAIL3"
    
    • inicie na inicialização ( edição nº 46 ):
    cd /tmp
    printf "[Unit]\nDescription=CodiMD collaborative markdown notes\n" >codimd.service
    printf "Documentation=https://github.com/codimd/server\nAfter=network.target\nAfter=postgresql.service\n\n" >>codimd.service
    printf "[Service]\nType=exec\nRestartSec=2s\nUser=root\nGroup=root\nWorkingDirectory=/root/server\n" >>codimd.service
    printf "ExecStart=/usr/bin/npm start --production\nRestart=always\nPrivateTmp=true\nPrivateDevices=true\n\n" >>codimd.service
    printf "[Install]\nWantedBy=multi-user.target\n" >>codimd.service
    lxc file push codimd.service codimd/lib/systemd/system/codimd.service
    lxc exec codimd -- systemctl enable /lib/systemd/system/codimd.service
    lxc exec codimd -- systemctl daemon-reload
    lxc exec codimd -- systemctl enable codimd
    
    • para depuração, visualize log.console()a saída via:
    lxc exec codimd -- systemctl stop codimd
    lxc exec codimd -- bash -c 'cd server && npm start --production'
    #... monitor output; ctrl-c to quit
    lxc stop codimd; sleep 5; lxc start codimd
    
    • reinicie e conecte:
    lxc stop codimd; sleep 5; lxc start codimd
    firefox "https://$MYURL"
    
    • no Firefox, aceite o certificado autoassinado e entre
    • 3

relate perguntas

  • Torne as configurações do teclado Apple persistentes em ../hid_apple/parameters/

  • traçar gráfico 2D com pontos de um arquivo

  • Como faço para verificar se estou usando 9.9.9.9 para DNS?

  • Instale várias distribuições Linux em paralelo

  • O OpenVPN auto-compilado não inicia a partir do systemd

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve