Requisits previs
Pas 1: creeu un fitxer d'intercanvi
Pas 2: obteniu fitxers binaris Leanote 2.6.1
Pas 3: instal·leu MongoDB Community Edition 4.0
Pas 4: importeu les dades inicials de Leanote a MongoDB
Pas 5: habiliteu l'autenticació de MongoDB
Pas 6: configureu Leanote
Pas 7: inicieu Leanote
Pas 8: habiliteu l'accés HTTPS
Pas 9: instal·leu el programa wkhtmltopdf
Pas 10: utilitzeu Supervisor per mantenir l'script Leanote en funcionament
Leanote és una alternativa gratuïta, lleugera i de codi obert a Evernote, que està escrit en Golang. Tenint en compte l'experiència de l'usuari, Leanote ofereix als usuaris moltes funcions pràctiques, com ara suport multiplataforma, escriptura amb la sintaxi de MarkDown, blocs públics o privats, recopilació i intercanvi de coneixements i col·laboració en equip.
En aquest article, us guiaré a través de la configuració d'un servidor Leanote en una instància del servidor CentOS 7. Per motius de seguretat, HTTPS supporttambé es tractarà l' habilitació de l' ús d'un certificat SSL Let's Encrypt i Nginx.
Requisits previs
- Una instància de servidor Vultr CentOS 7 recentment desplegada. Diguem que la seva adreça IPv4 és
203.0.113.1.
- Un usuari de sudo anomenat
leanote.
- Tots els paquets de programari de la màquina s'han actualitzat a l'estat estable més recent mitjançant el repo EPEL YUM. Vegeu els detalls aquí .
- Un domini
leanote.example.comapuntat a la instància del servidor esmentada anteriorment.
Pas 1: creeu un fitxer d'intercanvi
Quan engegueu una nova instància del servidor Vultr CentOS 7, sempre es recomana configurar un fitxer d'intercanvi per garantir que el sistema funcioni correctament. Per exemple, crear un fitxer d'intercanvi de 2048 MB és adequat per a una màquina amb 2 GB de memòria.
sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
Nota: si utilitzeu una mida de servidor diferent, és possible que hàgiu de modificar la mida del fitxer d'intercanvi.
Pas 2: obteniu fitxers binaris Leanote 2.6.1
Baixeu i extreu la darrera versió estable de Leanote per al sistema Linux de 64 bits:
cd
wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz
Tal com requereix Leanote, el SGBD NoSQL de MongoDB ha d'estar al seu lloc abans de poder configurar correctament un servidor Leanote.
Configura el dipòsit MongoDB 4.0 YUM
Creeu el dipòsit MongoDB 4.0 YUM de la següent manera:
cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
Instal·leu els paquets MongoDB 4.0 mitjançant YUM
Instal·leu tots els components i eines de MongoDB mitjançant el repo YUM de MongoDB 4.0 creat anteriorment:
sudo yum install -y mongodb-org
Configureu SELinux per a MongoDB 4.0
De manera predeterminada, MongoDB utilitzaria el 27017port quan treballa, cosa que no està permès si SELinux està en enforcingmode a la màquina CentOS 7. Utilitzeu l'ordre següent per confirmar el mode SELinux actual:
sudo getenforce
En una instància del servidor Vultr CentOS 7, SELinux està desactivat per defecte. Així que la sortida de l'ordre anterior seria:
Disabled
En aquest cas, podeu ometre les instruccions següents sobre la configuració de SELinux i seguir endavant.
Tanmateix, si esteu executant una instància de servidor CentOS 7 original, la sortida de l'ordre anterior seria Enforcing. Heu de realitzar qualsevol de les tres opcions següents abans de poder iniciar i habilitar el servei MongoDB.
Opció 1: permeteu que MongoDB utilitzi el 27017port
sudo semanage port -a -t mongod_port_t -p tcp 27017
Opció 2: desactiva SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sudo shutdown -r now
Opció 3: canvieu SELinux al permissivemode
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo shutdown -r now
Inicieu el servei MongoDB i feu-lo començar després d'un reinici del sistema:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Pas 4: importeu les dades inicials de Leanote a MongoDB
Utilitzeu les ordres següents per importar les dades inicials de Leanote a MongoDB:
rm /home/leanote/leanote/mongodb_backup/leanote_install_data/.DS_Store
mongorestore --host localhost -d leanote --dir /home/leanote/leanote/mongodb_backup/leanote_install_data/
Pas 5: habiliteu l'autenticació de MongoDB
Per motius de seguretat, heu d'habilitar el control d'accés a MongoDB just després que el servei MongoDB estigui en funcionament. Per a aquest propòsit, heu de crear almenys dos comptes d'usuari de MongoDB: un compte d'administrador d'usuaris i un compte d'administrador de bases de dades. També haureu de modificar la configuració de MongoDB.
Introduïu el shell de MongoDB:
mongo --host 127.0.0.1:27017
Canvia a la adminbase de dades:
use admin
Creeu un administrador d'usuaris anomenat useradminque utilitzi una contrasenya useradminpassword:
db.createUser({ user: "useradmin", pwd: "useradminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
Nota: L'administrador d'usuaris useradminse suposa que gestionar tots els usuaris MongoDB, pel que és convenient triar una contrasenya segura. Per descomptat, un consell més segur és substituir useradmin-lo per un nom d'usuari difícil d'endevinar.
Canvia a la leanotebase de dades:
use leanote
Creeu un administrador de base de dades anomenat leanoteadminque utilitzi una contrasenya leanoteadminpassword:
db.createUser({ user: "leanoteadmin", pwd: "leanoteadminpassword", roles: [{ role: "dbOwner", db: "leanote" }] })
Nota : de nou, es recomana triar un nom d'usuari menys conegut i una contrasenya difícil d'endevinar.
Un cop creats els usuaris de MongoDB, podeu confirmar els resultats:
use admin
db.auth("useradmin", "useradminpassword")
Confirmeu l'administrador de la base de dades:
use leanote
db.auth("leanoteadmin", "leanoteadminpassword")
Tots dos sortiran 1com a confirmació.
Sortiu de l'intèrpret d'ordres de MongoDB:
exit
Per habilitar el control d'accés a MongoDB, també heu d'afegir dues línies al fitxer de configuració de MongoDB /etc/mongod.conf, de la següent manera:
sudo bash -c "echo 'security:' >> /etc/mongod.conf"
sudo bash -c "echo ' authorization: enabled' >> /etc/mongod.conf"
Reinicieu el servei MongoDB perquè les modificacions tinguin efecte:
sudo systemctl restart mongod.service
A partir d'ara, només podeu utilitzar els dos comptes d'usuari per accedir i gestionar MongoDB, useradminper gestionar tots els usuaris de MongoDB i només leanoteadminper gestionar la leanotebase de dades.
Feu una còpia de seguretat del fitxer de configuració de Leanote /home/leanote/leanote/conf/app.conf:
cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak
Utilitzeu l' vieditor per obrir el fitxer de configuració de Leanote:
vi app.conf
Troba les línies següents una per una:
site.url=http://localhost:9000
db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank
app.secret=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y
Substituïu-los, respectivament, tal com es mostra a continuació:
site.url=http://leanote.example.com:9000
db.username=leanoteadmin
db.password=leanoteadminpassword
app.secret=E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA
Nota: per motius de seguretat, el valor del app.secretparàmetre HA de ser una cadena aleatòria de 64 bits diferent de l'original. Assegureu-vos de substituir el valor E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sApel vostre propi valor aleatori de 64 bits.
Desa i surt:
:wq!
Pas 7: inicieu Leanote
Modifiqueu les regles del tallafoc per permetre el trànsit TCP entrant al port 9000:
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo systemctl reload firewalld.service
Inicieu Leanote utilitzant l'script oficial:
cd /home/leanote/leanote/bin
bash run.sh
En veure Listening on.. 0.0.0.0:9000, apunta el teu navegador web preferit http://leanote.example.com:9000per començar a utilitzar el lloc Leanote.
Utilitzeu el compte d'administració de Leanote predeterminat per iniciar la sessió:
- Nom d'usuari:
admin
- Contrasenya:
abc123
Per motius de seguretat, hauríeu de canviar la contrasenya predeterminada immediatament després d'iniciar la sessió.
Pas 8: habiliteu l' HTTPSaccés
For now, you can already access the Leanote server using the HTTP protocol, a less secure protocol. In order to improve system security, you can enable HTTPS by deploying both a Let's Encrypt SSL certificate and the Nginx reverse proxy on your machine.
Properly setup a hostname and fully qualified domain name (FQDN)
Before you can obtain the Let's Encrypt SSL certificate, you need to properly setup the hostname and FQDN on your machine.
First, press CTRL+C to stop the Leanote script run.sh.
Next, setup the hostname and FQDN as follows:
sudo hostnamectl set-hostname leanote
cat <<EOF | sudo tee /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
203.0.113.1 leanote.example.com leanote
EOF
You can confirm the results, as well:
hostname
hostname -f
Modify firewall rules
Block inbound traffic on port 9000 and allow inbound traffic on ports for HTTP and HTTPS services:
sudo firewall-cmd --permanent --remove-port=9000/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Apply for a Let's Encrypt SSL certificate
Install the Certbot utility:
sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot
Sol·liciteu un certificat SSL Let's Encrypt per al domini leanote.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d leanote.example.com
El certificat i la cadena es desaran de la següent manera:
/etc/letsencrypt/live/leanote.example.com/fullchain.pem
El fitxer de clau privada es desarà de la següent manera:
/etc/letsencrypt/live/leanote.example.com/privkey.pem
De manera predeterminada, el certificat SSL Let's Encrypt caducarà en tres mesos. Podeu configurar un treball de cron, com es mostra a continuació, per renovar automàticament els vostres certificats Let's Encrypt:
sudo crontab -e
Premeu Iper entrar al insertmode i, a continuació, introduïu la línia següent:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Desa i surt:
:wq!
Aquest treball cron intentarà renovar el certificat Let's Encrypt cada dia al migdia.
Instal·leu Nginx com a servidor intermediari invers
Instal·leu Nginx mitjançant el repo EPEL YUM:
sudo yum install -y nginx
Creeu un fitxer de configuració per a Leanote:
cat <<EOF | sudo tee /etc/nginx/conf.d/leanote.conf
# Redirect HTTP to HTTPS
server {
listen 80;
server_name leanote.example.com;
return 301 https://\$server_name\$request_uri;
}
server {
# Setup HTTPS certificates
listen 443 default ssl;
server_name leanote.example.com;
ssl_certificate /etc/letsencrypt/live/leanote.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/leanote.example.com/privkey.pem;
# Proxy to the Leanote server
location / {
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host \$http_host;
proxy_set_header Host \$http_host;
proxy_max_temp_file_size 0;
proxy_pass http://127.0.0.1:9000;
proxy_redirect http:// https://;
}
}
EOF
Reinicieu Nginx per posar en pràctica les vostres modificacions:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Modifiqueu la site.urlconfiguració al fitxer de configuració de Leanote:
cd /home/leanote/leanote/conf/
vi app.conf
Busca la línia següent:
site.url=http://leanote.example.com:9000
Substituïu-lo:
site.url=https://leanote.example.com
Desa i surt:
:wq!
Torna a executar l'script Leanote:
cd /home/leanote/leanote/bin
bash run.sh
Ara, apunteu el vostre navegador web preferit a http://leanote.example.com/, i trobareu que el HTTPSprotocol s'activa automàticament. Només adminheu d' iniciar la sessió com a usuari amb la nova contrasenya que heu configurat anteriorment o registrar nous comptes d'usuari per col·laborar en equip.
De nou, premeu CTRL+ Cper aturar l'script Leanote. Demonitzarem aquest script més endavant.
Pas 9: instal·leu el wkhtmltopdfprograma
Leanote opta per utilitzar el wkhtmltopdfprograma per exportar pàgines HTML com a fitxers PDF. Instal·lar wkhtmltopdf:
cd
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
sudo yum localinstall -y wkhtmltox-0.12.5-1.centos7.x86_64.rpm
which wkhtmltopdf
No oblideu enviar la wkhtmltopdfruta binària /usr/local/bin/wkhtmltopdfa la Export PDFsecció del tauler d'administració web de Leanote quan Leanote torni a estar en funcionament.
Nota: si trobeu caràcters il·legibles als fitxers PDF exportats, podeu intentar solucionar el problema afegint els fitxers de tipus de lletra necessaris al /usr/share/fonts/directori.
Pas 10: utilitzeu Supervisor per mantenir l'script Leanote en funcionament
Per mantenir el vostre lloc Leanote en línia, podeu utilitzar la utilitat Supervisor per iniciar automàticament l'script Leanote si es bloqueja.
Instal·leu Supervisor mitjançant YUM:
sudo yum install -y supervisor
Creeu un .inifitxer de supervisor senzill per a Leanote:
cat <<EOF | sudo tee /etc/supervisord.d/leanote.ini
[program:leanote]
command=bash /home/leanote/leanote/bin/run.sh
directory=/home/leanote/leanote/bin/
priority=999
autostart=true
autorestart=true
user=leanote
redirect_stderr=true
EOF
Inicieu el servei Supervisor, així com el servei Leanote:
sudo supervisord -c /etc/supervisord.conf
Confirmeu l'estat del servei Leanote:
sudo supervisorctl status leanote
La sortida s'assemblarà a la següent:
leanote RUNNING pid 3707, uptime 0:02:36