Leanote este o alternativă liberă, ușoară și open source la Evernote, care este scrisă în Golang. Având în vedere experiența utilizatorului, Leanote oferă utilizatorilor o mulțime de caracteristici practice, inclusiv suport multiplă platformă, scriere în sintaxa MarkDown, bloguri publice sau private, colectarea și distribuirea cunoștințelor și colaborarea în echipă.
În acest articol, vă voi ghida prin Configurarea unui server Leanote pe o instanță a serverului CentOS 7. În scopuri de securitate, activarea HTTPS supportutilizării unui certificat SSL Encrypt SSL și Nginx vor fi de asemenea acoperite.
Cerințe preliminare
- O instanță recent instalată a serverului Vultr CentOS 7. Spune că adresa sa IPv4 este
203.0.113.1.
- Un utilizator sudo numit
leanote.
- Toate pachetele software de pe mașină au fost actualizate la starea cea mai recentă stabilă utilizând repoziția EPEL YUM Vezi detalii aici .
- Un domeniu
leanote.example.comfiind indicat spre instanța de server menționată mai sus.
Pasul 1: Creați un fișier swap
Când se lansează o nouă instanță a serverului Vultr CentOS 7, se recomandă întotdeauna configurarea unui fișier swap pentru a vă asigura că sistemul funcționează fără probleme. De exemplu, crearea unui fișier swap de dimensiune 2048MB este potrivită pentru o mașină cu 2 GB memorie.
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
Notă: Dacă utilizați o dimensiune diferită a serverului, poate fi necesar să modificați dimensiunea fișierului swap.
Pasul 2: Obțineți fișiere binare Leanote 2.6.1
Descărcați și extrageți cea mai recentă versiune stabilă a Leanote pentru sistemul Linux pe 64 de biți:
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
Așa cum a cerut Leanote, DBMS MongoDB NoSQL trebuie să fie pe loc înainte de a putea configura cu succes un server Leanote.
Configurați repoziția MongoDB 4.0 YUM
Creați repetiția MongoDB 4.0 YUM după cum urmează:
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
Instalați pachetele MongoDB 4.0 utilizând YUM
Instalați toate componentele și instrumentele MongoDB folosind repoțiunea MongoDB 4.0 YUM creată anterior:
sudo yum install -y mongodb-org
Configurați SELinux pentru MongoDB 4.0
În mod implicit, MongoDB ar utiliza 27017portul atunci când lucrează, ceea ce nu este permis dacă SELinux este în enforcingmodul de pe aparatul CentOS 7. Folosiți următoarea comandă pentru a confirma modul SELinux curent:
sudo getenforce
Pe o instanță a serverului Vultr CentOS 7, SELinux este dezactivat implicit. Deci rezultatul comenzii de mai sus ar fi:
Disabled
În acest caz, puteți să nu ezitați să ignorați următoarele instrucțiuni privind configurarea SELinux și să continuați.
Cu toate acestea, dacă executați o instanță de server CentOS 7 originală, rezultatul comenzii de mai sus ar fi Enforcing. Trebuie să efectuați oricare dintre cele trei opțiuni de mai jos înainte de a putea porni și activa serviciul MongoDB.
-
Opțiunea 1: Permiteți MongoDB să utilizeze 27017portul
sudo semanage port -a -t mongod_port_t -p tcp 27017
-
Opțiunea 2: Dezactivați SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sudo shutdown -r now
-
Opțiunea 3: Modificați SELinux în permissivemod
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo shutdown -r now
Porniți serviciul MongoDB și faceți-l să înceapă după o repornire a sistemului:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Pasul 4: Importați datele inițiale ale Leanote în MongoDB
Utilizați comenzile de mai jos pentru a importa datele inițiale ale Leanote în 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/
Pasul 5: Activați autentificarea MongoDB
În scopuri de securitate, trebuie să activați controlul de acces la MongoDB imediat după ce serviciul MongoDB este pornit. În acest scop, trebuie să creați cel puțin două conturi de utilizator MongoDB: un cont de utilizator de utilizator și un cont de administrator de bază de date. De asemenea, va trebui să modificați configurația MongoDB.
Introduceți shell-ul MongoDB:
mongo --host 127.0.0.1:27017
Comutați la adminbaza de date:
use admin
Creați un administrator de nume useradmincare utilizează o parolă useradminpassword:
db.createUser({ user: "useradmin", pwd: "useradminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
Notă: Se useradminpresupune că administratorul utilizatorului gestionează toți utilizatorii MongoDB, deci este înțelept să alegeți o parolă puternică. Desigur, un sfat mai sigur este înlocuirea useradmincu un nume de utilizator greu de ghicit.
Comutați la leanotebaza de date:
use leanote
Creați un administrator de bază de date numit leanoteadmincare utilizează o parolă leanoteadminpassword:
db.createUser({ user: "leanoteadmin", pwd: "leanoteadminpassword", roles: [{ role: "dbOwner", db: "leanote" }] })
Notă : din nou, este recomandat să alegeți un nume de utilizator mai puțin cunoscut și o parolă greu de ghicit.
După crearea utilizatorilor MongoDB, puteți confirma rezultatele:
use admin
db.auth("useradmin", "useradminpassword")
Confirmați administratorul bazei de date:
use leanote
db.auth("leanoteadmin", "leanoteadminpassword")
Ambele vor ieși 1ca confirmare.
Ieșiți de shell-ul MongoDB:
exit
Pentru a activa controlul accesului la MongoDB, trebuie să adăugați două linii la fișierul de configurare MongoDB /etc/mongod.conf, după cum urmează:
sudo bash -c "echo 'security:' >> /etc/mongod.conf"
sudo bash -c "echo ' authorization: enabled' >> /etc/mongod.conf"
Reporniți serviciul MongoDB pentru ca modificările să aibă efect:
sudo systemctl restart mongod.service
De acum, puteți utiliza cele două conturi de utilizator pentru a accesa și gestiona MongoDB, useradminpentru gestionarea tuturor utilizatorilor MongoDB și leanoteadminpentru gestionarea leanotebazei de date numai.
Copia de rezervă a fișierului de configurare Leanote /home/leanote/leanote/conf/app.conf:
cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak
Folosiți vieditorul pentru a deschide fișierul de configurare Leanote:
vi app.conf
Găsiți rândurile următoare una câte 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
Înlocuiți-le, așa cum se arată mai jos:
site.url=http://leanote.example.com:9000
db.username=leanoteadmin
db.password=leanoteadminpassword
app.secret=E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA
Notă: în scopuri de securitate, valoarea app.secretparametrului TREBUIE să fie un șir de caractere aleatoriu pe 64 de biți diferit de cel inițial. Asigurați-vă că înlocuiți valoarea E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sAcu propria valoare aleatorie pe 64 de biți.
Salvează și închide:
:wq!
Pasul 7: Porniți Leanote
Modificați regulile firewallului pentru a permite traficul TCP de intrare în port 9000:
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo systemctl reload firewalld.service
Porniți Leanote folosind scriptul oficial:
cd /home/leanote/leanote/bin
bash run.sh
Când vedeți Listening on.. 0.0.0.0:9000, indicați browserul dvs. web preferat pentru http://leanote.example.com:9000a începe să utilizați site-ul Leanote.
Folosiți contul implicit de administrare Leanote pentru a vă conecta:
- Nume de utilizator:
admin
- Parola:
abc123
În scopuri de securitate, ar trebui să schimbați parola implicită imediat după conectare.
Pasul 8: Activați HTTPSaccesul
Deocamdată, puteți accesa deja serverul Leanote folosind protocolul HTTP, un protocol mai puțin sigur. Pentru a îmbunătăți securitatea sistemului, puteți activa HTTPSutilizând atât un certificat Let's Encrypt SSL, cât și un proxy Nginx reverse pe mașina dvs.
Configurați corect un nume de gazdă și un nume de domeniu complet calificat (FQDN)
Înainte de a putea obține certificatul Let's Encrypt SSL, trebuie să configurați corect numele de gazdă și FQDN pe aparatul dvs.
Mai întâi, apăsați CTRL+ Cpentru a opri scriptul Leanote run.sh.
În continuare, configurați numele de gazdă și FQDN după cum urmează:
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
Puteți confirma și rezultatele:
hostname
hostname -f
Modificați regulile firewall-ului
Blocați traficul de intrare în port 9000și permiteți traficul de intrare în porturi HTTPși HTTPSservicii:
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
Aplicați pentru un certificat Let's Encrypt SSL
Instalați utilitarul Certbot:
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
Solicitați un certificat SSL Let's Encrypt pentru domeniu leanote.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d leanote.example.com
Certificatul și lanțul vor fi salvate după cum urmează:
/etc/letsencrypt/live/leanote.example.com/fullchain.pem
Fișierul cu cheie privată va fi salvat după cum urmează:
/etc/letsencrypt/live/leanote.example.com/privkey.pem
În mod implicit, certificatul Let's Encrypt SSL va expira în trei luni. Puteți configura o lucrare cron, după cum se arată mai jos, pentru reînnoirea automată a certificatelor Let's Encrypt:
sudo crontab -e
Apăsați Ipentru a intra în insertmodul, apoi introduceți următoarea linie:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Salvează și închide:
:wq!
Acest job cron va încerca să reînnoiască certificatul Let's Encrypt în fiecare zi la prânz.
Instalați Nginx ca proxy invers
Instalați Nginx folosind repetiția EPEL YUM:
sudo yum install -y nginx
Creați un fișier de configurare pentru 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
Reporniți Nginx pentru a aplica modificările:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Modificați site.urlsetarea în fișierul de configurare Leanote:
cd /home/leanote/leanote/conf/
vi app.conf
Găsiți următoarea linie:
site.url=http://leanote.example.com:9000
Inlocuieste-l:
site.url=https://leanote.example.com
Salvează și închide:
:wq!
Executați scriptul Leanote din nou:
cd /home/leanote/leanote/bin
bash run.sh
Acum, îndreaptă-ți browserul web preferat http://leanote.example.com/și vei vedea că HTTPSprotocolul este activat automat. adminTrebuie doar să vă conectați ca utilizator cu noua parolă pe care ați configurat-o mai devreme sau să înregistrați noi conturi de utilizator pentru colaborarea în echipă.
Din nou, apăsați CTRL+ Cpentru a opri scriptul Leanote. Vom daemoniza acest script mai târziu.
Pasul 9: Instalează wkhtmltopdfprogramul
Leanote alege să utilizeze wkhtmltopdfprogramul pentru a exporta pagini HTML ca fișiere PDF. Instalați 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
Nu uitați să trimiteți wkhtmltopdfcalea binară /usr/local/bin/wkhtmltopdfîn Export PDFsecțiunea din tabloul de bord Leanote web adminboard atunci când Leanote este pornit din nou.
Notă: Dacă găsiți caractere necitibile în fișierele PDF exportate, puteți încerca să remediați problema adăugând fișierele de caractere necesare în /usr/share/fonts/director.
Pasul 10: Utilizați Supervizorul pentru a menține scriptul Leanote în funcțiune
Pentru a vă menține site-ul Leanote online, puteți utiliza utilitarul Supervisor pentru a porni automat scriptul Leanote dacă se blochează.
Instalați Supervisor folosind YUM:
sudo yum install -y supervisor
Creați un .inifișier simplu de Supervizor pentru 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
Porniți serviciul de Supervizor, precum și serviciul Leanote:
sudo supervisord -c /etc/supervisord.conf
Confirmați starea serviciului Leanote:
sudo supervisorctl status leanote
Rezultatul va fi asemănător cu următoarele:
leanote RUNNING pid 3707, uptime 0:02:36