Ինչպես տեղադրել ստանդարտ Notes սերվեր Rocky Linux 9-ում
Այս էջում
- Նախադրյալներ
- Քայլ 1 - Կարգավորել Firewall-ը
- Քայլ 2 - Տեղադրեք Docker-ը և Docker Compose-ը
- Քայլ 3 - Տեղադրեք Nginx
- Քայլ 4 - Տեղադրեք SSL-ը
- Քայլ 5 - Ներբեռնեք և կարգավորեք ստանդարտ նշումները
- Քայլ 6 - Գործարկել Ստանդարտ նշումների սերվերը
Քայլ 7 - Տեղադրեք Standard Notes վեբ հավելվածը
- Տեղադրեք Git-ը
- Տեղադրեք NodeJS-ը
- Տեղադրեք Yarn
- Տեղադրեք PM2 փաթեթի կառավարիչ:
- Տեղադրեք վեբ հավելվածը
Standard Notes-ը բաց կոդով և ամբողջությամբ կոդավորված նշումների հավելված է: Այն առաջարկում է և՛ անվճար, և՛ վճարովի պլաններ և առաջարկում է երկուսն էլ՝ ամպային հոսթինգ և այն ձեր սերվերում հյուրընկալելու տարբերակ: Դուք կարող եք օգտագործել ձեր սերվերը՝ տարբեր սարքերի միջև պահված նշումները համաժամեցնելու համար: Standard Notes-ն առաջարկում է հավելվածներ բոլոր աշխատասեղանի օպերացիոն համակարգերի և շարժական հարթակների համար:
Այս ձեռնարկը սովորեցնում է ձեզ, թե ինչպես ինքնուրույն հյուրընկալել ձեր ստանդարտ նշումների սերվերը Rocky Linux 9 մեքենայի վրա: Դուք նաև կսովորեք, թե ինչպես կարելի է անվճար ակտիվացնել վճարովի պլանները սերվերում և ինչպես միացնել ֆայլերի վերբեռնումը:
Նախադրյալներ
Rocky Linux 9-ով աշխատող սերվեր՝ առնվազն 2 ԳԲ օպերատիվ հիշողությամբ:
Ոչ արմատային օգտատեր՝ sudo արտոնություններով:
Լիովին որակավորված տիրույթի անուն, որը մատնանշված է դեպի սերվերը: Մեր ձեռնարկի համար մենք կօգտագործենք standardnotes.example.com
տիրույթը: Ձեզ անհրաժեշտ կլինի ևս երկու տիրույթի անուն՝ մեկը ֆայլերի սերվերի համար, իսկ երկրորդը՝ վեբ հավելվածի համար: Մենք կօգտագործենք snotes-files.example.com
տիրույթը ֆայլերի սերվերի համար և snotes-web.example.com
վեբ հավելվածի համար:
Ամեն ինչ թարմացվում է։
$ sudo dnf update
Մի քանի փաթեթներ, որոնք անհրաժեշտ են ձեր համակարգին:
$ sudo dnf install -y wget nano unzip yum-utils policycoreutils-python-utils
Այս փաթեթներից որոշները կարող են արդեն տեղադրված լինել ձեր համակարգում:
Քայլ 1 - Կարգավորել Firewall-ը
Նախքան որևէ փաթեթ տեղադրելը, առաջին քայլը կարգավորել է firewall-ը HTTP-ի և HTTPS-ի համար պորտերը բացելու համար: Rocky Linux-ն օգտագործում է Firewalld Firewall-ը: Ստուգեք firewall-ի կարգավիճակը:
$ sudo firewall-cmd --state
running
Firewall-ը աշխատում է տարբեր գոտիների հետ, և հանրային գոտին լռելյայն է, որը մենք կօգտագործենք: Թվարկեք բոլոր ծառայություններն ու նավահանգիստները, որոնք ակտիվ են firewall-ում:
$ sudo firewall-cmd --zone=public --list-all
Այն պետք է ցույց տա հետևյալ արդյունքը.
public
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Բացեք HTTP և HTTPS պորտերը firewall-ում:
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
Կրկին ստուգեք firewall-ի կարգավիճակը:
$ sudo firewall-cmd --zone=public --list-all
Դուք պետք է տեսնեք նմանատիպ արդյունք:
public
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client http https ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Բոլոր փոփոխությունները դարձրեք մշտական և վերաբեռնեք firewall-ը՝ փոփոխությունները միացնելու համար:
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
Քայլ 2 - Տեղադրեք Docker-ը և Docker Compose-ը
Տեղադրեք պաշտոնական Docker պահոցը:
$ sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
Տեղադրեք Docker-ը:
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Միացնել և գործարկել Docker daemon-ը:
$ sudo systemctl enable docker --now
Ստուգեք Docker ծառայության կարգավիճակը:
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
Active: active (running) since Tue 2024-04-16 23:35:00 UTC; 5s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 23273 (dockerd)
Tasks: 9
Memory: 34.0M
CPU: 176ms
CGroup: /system.slice/docker.service
??23273 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Apr 16 23:35:00 standard-notes systemd[1]: Starting Docker Application Container Engine...
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.050964934Z" level=info msg="Starting up"
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.083526973Z" level=info msg="Loading containers: start."
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.654481705Z" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.772647844Z" level=info msg="Loading containers: done."
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.793814339Z" level=info msg="Docker daemon" commit=60b9add containerd-snapshotter=false storage-driver=overlay2 version=26.0.1
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.793962347Z" level=info msg="Daemon has completed initialization"
Apr 16 23:35:00 standard-notes dockerd[23273]: time="2024-04-16T23:35:00.827030005Z" level=info msg="API listen on /run/docker.sock"
Apr 16 23:35:00 standard-notes systemd[1]: Started Docker Application Container Engine.
Ավելացրեք ձեր համակարգի օգտվողին Docker խմբին՝ Docker հրամանները գործարկելու համար sudo
չօգտագործելու համար:
$ sudo usermod -aG docker $(whoami)
Դուրս գալուց հետո նորից մուտք գործեք ձեր սերվեր՝ փոփոխությունը միացնելու համար:
Ստուգեք փոփոխությունը:
$ groups
navjot wheel docker
Քայլ 3 - Տեղադրեք Nginx
Rocky Linux 9-ը մատակարարվում է Nginx-ի ավելի հին տարբերակով: Վերջին տարբերակը տեղադրելու համար անհրաժեշտ է օգտագործել պաշտոնական Nginx պահոցը:
Ստեղծեք և բացեք ֆայլը /etc/yum.repos.d/nginx.repo
խմբագրման համար:
$ sudo nano /etc/yum.repos.d/nginx.repo
Դրա մեջ տեղադրեք հետևյալ կոդը.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է: Մենք կօգտագործենք Nginx-ի հիմնական տարբերակը և, հետևաբար, միացրել ենք հիմնական ռեպո վերը նշված ֆայլում՝ օգտագործելով enabled=1
հիմնական բաժնի տակ՝ կայունի փոխարեն: Դուք կարող եք ընտրել կամ մեկը:
Տեղադրեք Nginx-ը:
$ sudo dnf install nginx -y
Ստուգեք տեղադրումը:
$ nginx -v
nginx version: nginx/1.25.5
Միացնել և գործարկել Nginx սերվերի ծառայությունը:
$ sudo systemctl enable nginx --now
Ստուգեք ծառայության կարգավիճակը:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Tue 2024-04-16 23:41:23 UTC; 6s ago
Docs: http://nginx.org/en/docs/
Process: 4886 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 4887 (nginx)
Tasks: 3 (limit: 10819)
Memory: 3.1M
CPU: 11ms
CGroup: /system.slice/nginx.service
??4887 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??4888 "nginx: worker process"
??4889 "nginx: worker process"
Apr 16 23:41:23 standard-notes systemd[1]: Starting nginx - high performance web server...
Apr 16 23:41:23 standard-notes systemd[1]: Started nginx - high performance web server.
Քայլ 4 - Տեղադրեք SSL-ը
SSL վկայագիր ստեղծելու համար մենք պետք է տեղադրենք Certbot-ը: Դրա համար մենք կօգտագործենք Snapd փաթեթի տեղադրիչը։ Քանի որ Rocky Linux-ը դրա հետ չի առաքվում, տեղադրեք Snapd տեղադրիչը: Այն պահանջում է EPEL (Extra Packages for Enterprise Linux) պահոցն աշխատելու համար:
Տեղադրեք EPEL պահեստը:
$ sudo dnf install epel-release -y
Տեղադրեք Snapd փաթեթը:
$ sudo dnf install snapd -y
Միացնել և գործարկել Snap ծառայությունը:
$ sudo systemctl enable snapd --now
Տեղադրեք Snap հիմնական փաթեթը և համոզվեք, որ Snapd-ի ձեր տարբերակը արդիական է:
$ sudo snap install core && sudo snap refresh core
Ստեղծեք անհրաժեշտ հղումներ Snapd-ի աշխատանքի համար:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Տեղադրեք Certbot-ը:
$ sudo snap install --classic certbot
Օգտագործեք հետևյալ հրամանը՝ համոզվելու համար, որ Certbot հրամանը կարող է գործարկվել՝ ստեղծելով խորհրդանշական հղում դեպի /usr/bin
գրացուցակը:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ստուգեք Certbot տարբերակը:
$ certbot --version
certbot 2.10.0
Գործարկեք հետևյալ հրամանը՝ SSL վկայական ստեղծելու համար:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d standardnotes.example.com
Վերոնշյալ հրամանը վկայական կներբեռնի ձեր սերվերի /etc/letsencrypt/live/standardnotes.example.com
գրացուցակում:
Նույնը պետք է անենք Files ենթադոմեյնի համար:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d snotes-files.example.com
Եվ վերջինը, կրկին վեբ հավելվածի համար:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d snotes-web.example.com
Ստեղծեք Diffie-Hellman խումբ վկայագիր:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Ստուգեք Certbot-ի նորացման ժամանակացույցի ծառայությունը:
$ systemctl list-timers
Դուք կգտնեք snap.certbot.renew.service
որպես սպասարկվող ծառայություններից մեկը:
NEXT LEFT LAST PASSED UNIT ACTIVATES ----------------------------------------------------------------------------------------------------------------------------------
Wed 2024-04-17 00:00:00 UTC 5min left Tue 2024-04-16 23:29:44 UTC 24min ago logrotate.timer logrotate.service
Wed 2024-04-17 00:31:26 UTC 36min left - - dnf-makecache.timer dnf-makecache.service
Wed 2024-04-17 11:00:00 UTC 11h left - - snap.certbot.renew.timer snap.certbot.renew.service
Կատարեք գործընթացի չոր գործարկում՝ ստուգելու, թե արդյոք SSL-ի նորացումը լավ է աշխատում:
$ sudo certbot renew --dry-run
Եթե սխալներ չեք տեսնում, ամեն ինչ պատրաստ է: Ձեր վկայականը ինքնաբերաբար կերկարաձգվի:
Քայլ 5 - Ներբեռնեք և կարգավորեք ստանդարտ նշումները
Համոզվեք, որ դուք գտնվում եք ձեր համակարգի գլխավոր գրացուցակում:
$ cd ~
Ստեղծեք աշխատանքային գրացուցակ Standard Notes Server-ի համար և անցեք դրան:
$ mkdir standardnotes
$ cd ~/standardnotes
Ներբեռնեք շրջակա միջավայրի օրինակի ֆայլը Standard Notes GitHub պահոցից:
$ wget https://raw.githubusercontent.com/standardnotes/server/main/.env.sample
Ներբեռնված օրինակի ֆայլից ստեղծեք աշխատանքային միջավայրի ֆայլը:
$ cp .env.sample .env
.env
ֆայլը կարգավորելու համար ձեզ անհրաժեշտ կլինի նույնականացման և գաղտնագրման երեք բանալի: Գործարկեք հետևյալ հրամանը՝ երեք առանձին ստեղներ ստեղծելու և դրանց արդյունքը պատճենելու համար:
$ openssl rand -hex 32
Ձեզ նույնպես անհրաժեշտ կլինի տվյալների բազայի ուժեղ գաղտնաբառ: Դուք կարող եք գործարկել հետևյալ հրամանը՝ տվյալների բազայի անվտանգ գաղտնաբառ ստեղծելու համար:
$ openssl rand -hex 12
Բացեք միջավայրի ֆայլը խմբագրման համար:
$ nano .env
Ընտրեք տվյալների բազայի հզոր գաղտնաբառ և ավելացրեք այն DB_PASSWORD
փոփոխականին:
######
# DB #
######
DB_HOST=db
DB_PORT=3306
DB_USERNAME=std_notes_user
DB_PASSWORD=changeme
DB_DATABASE=standard_notes_db
DB_TYPE=mysql
#########
# CACHE #
#########
REDIS_PORT=6379
REDIS_HOST=cache
CACHE_TYPE=redis
########
# KEYS #
########
AUTH_JWT_SECRET=
AUTH_SERVER_ENCRYPTION_SERVER_KEY=
VALET_TOKEN_SECRET=
Ավելացրե՛ք նախկինում ստեղծված ստեղները և դրե՛ք դրանք KEYS
բաժնում երեք փոփոխականների հետ:
Լռելյայնորեն, Օգտագործողի գրանցումը միացված է: Եթե ցանկանում եք անջատել հանրային օգտատերերի գրանցումը ձեր Standard Notes սերվերում, ապա շրջակա միջավայրի ֆայլում ավելացրեք հետևյալ փոփոխականը: Սակայն դա արեք միայն այն բանից հետո, երբ դրա վրա ստեղծեք ձեր առաջին հաշիվը: Եթե դուք օգտագործում եք կարգավորումը հենց սկզբում, դուք չեք կարողանա ինքներդ օգտագործել հավելվածը:
AUTH_SERVER_DISABLE_USER_REGISTRATION=true
Ավելացրեք հետևյալ փոփոխականը՝ ձեր Ստանդարտ նշումների ֆայլերի URL-ը սահմանելու համար:
PUBLIC_FILES_SERVER_URL=https://snotes-files.example.com
Ամբողջական .env
ֆայլը պետք է նման լինի հետևյալին.
######
# DB #
######
DB_HOST=db
DB_PORT=3306
DB_USERNAME=std_notes_user
DB_PASSWORD=<YourDBPassword>
DB_DATABASE=standard_notes_db
DB_TYPE=mysql
#########
# CACHE #
#########
REDIS_PORT=6379
REDIS_HOST=cache
CACHE_TYPE=redis
########
# KEYS #
########
AUTH_JWT_SECRET=52b354ad5d8f11c995b4eed33870a1a7afbbc84b8da61e0b583660b075d0390c
AUTH_SERVER_ENCRYPTION_SERVER_KEY=fce4fe78972c3407be47127aee57d67e86b84afb628020b7ab6999edb3c905f1
VALET_TOKEN_SECRET=50aad911a283f252713139667b6475ac105280a220e009e05f733cf785630ce5
AUTH_SERVER_DISABLE_USER_REGISTRATION=true
PUBLIC_FILES_SERVER_URL=https://snotes-files.example.com
Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում են ավարտելուց հետո:
Ներբեռնեք Localstack bootstrap սցենարը GitHub պահոցից:
$ wget https://raw.githubusercontent.com/standardnotes/server/main/docker/localstack_bootstrap.sh
Տվեք սկրիպտին գործարկվող թույլտվություններ:
$ chmod +x localstack_bootstrap.sh
Ներբեռնեք Docker Compose Ֆայլը Standard Notes սերվերի համար GitHub պահոցից:
$ wget https://raw.githubusercontent.com/standardnotes/server/main/docker-compose.example.yml
Ներբեռնված օրինակի կազմման ֆայլից ստեղծեք աշխատանքային Docker կոմպոզիցիոն ֆայլ:
$ cp docker-compose.example.yml docker-compose.yml
Բացեք այն խմբագրելու համար:
$ nano docker-compose.yml
Փոխեք MYSQL_ROOT_PASSWORD
և MYSQL_PASSWORD
արժեքը .env
ֆայլում նախկինում ընտրված տվյալների բազայի գաղտնաբառով: Ձեր Docker Compose Ֆայլը պետք է նման լինի հետևյալին.
services:
server:
image: standardnotes/server
env_file: .env
container_name: server_self_hosted
restart: unless-stopped
ports:
- 3000:3000
- 3125:3104
volumes:
- ./logs:/var/lib/server/logs
- ./uploads:/opt/server/packages/files/dist/uploads
networks:
- standardnotes_self_hosted
localstack:
image: localstack/localstack:3.0
container_name: localstack_self_hosted
expose:
- 4566
restart: unless-stopped
environment:
- SERVICES=sns,sqs
- HOSTNAME_EXTERNAL=localstack
- LS_LOG=warn
volumes:
- ./localstack_bootstrap.sh:/etc/localstack/init/ready.d/localstack_bootstrap.sh
networks:
- standardnotes_self_hosted
db:
image: mysql:8
container_name: db_self_hosted
environment:
- MYSQL_DATABASE=standard_notes_db
- MYSQL_USER=std_notes_user
- MYSQL_ROOT_PASSWORD=<YourDBPassword>
- MYSQL_PASSWORD=<YourDBPassword>
expose:
- 3306
restart: unless-stopped
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
volumes:
- ./data/mysql:/var/lib/mysql
- ./data/import:/docker-entrypoint-initdb.d
networks:
- standardnotes_self_hosted
cache:
image: redis:6.0-alpine
container_name: cache_self_hosted
volumes:
- ./data/redis/:/data
expose:
- 6379
restart: unless-stopped
networks:
- standardnotes_self_hosted
networks:
standardnotes_self_hosted:
name: standardnotes_self_hosted
Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշում է ավարտելուց հետո: Սա ավարտում է Standard Notes սերվերի կարգավորումների ներբեռնումն ու կազմաձևումը:
Քայլ 6 - Գործարկել Ստանդարտ նշումների սերվերը
Գործարկեք հետևյալ հրամանը՝ սերվերը գործարկելու համար.
$ docker compose up -d
Այս հրամանն ավարտելու համար մի քանի րոպե կպահանջվի: Այս ընթացքում գործընթացը կքաշի բոլոր համապատասխան Docker պատկերները և կստեղծի կոնտեյներներ բոլոր ծառայությունների համար: Այն նաև կլրացնի տվյալների բազան և կկատարի համապատասխան միգրացիաներ: CPU-ի օգտագործումը կարող է աճել մի քանի րոպեով, բայց շուտով այն պետք է իջնի:
Դուք կարող եք գտնել տեղեկամատյաններ Standard Notes սերվերի համար logs
գրացուցակում: Դուք կարող եք ստուգել գործընթացի տեղեկամատյանները՝ օգտագործելով հետևյալ հրամանը.
$ tail -f logs/*.log
Սեղմեք Ctrl + C՝ գրանցամատյաններից դուրս գալու համար: Դուք կարող եք ստուգել գործող բեռնարկղերի կարգավիճակը՝ օգտագործելով հետևյալ հրամաններից որևէ մեկը:
$ docker compose ps
OR
$ docker ps
Դուք կստանաք նմանատիպ արդյունք:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
cache_self_hosted redis:6.0-alpine "docker-entrypoint.s…" cache 16 minutes ago Up 5 minutes 6379/tcp
db_self_hosted mysql:8 "docker-entrypoint.s…" db 16 minutes ago Up 5 minutes 3306/tcp, 33060/tcp
localstack_self_hosted localstack/localstack:3.0 "docker-entrypoint.sh" localstack 16 minutes ago Up 5 minutes (healthy) 4510-4559/tcp, 4566/tcp, 5678/tcp
server_self_hosted standardnotes/server "docker-entrypoint.sh" server 16 minutes ago Up 5 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:3125->3104/tcp, :::3125->3104/tcp
Դուք կարող եք ստուգել սերվերի առողջությունը՝ օգտագործելով հետևյալ հրամանը.
$ curl http://localhost:3000/healthcheck
OK
Standard Notes-ը լռելյայն օգտագործում է 3000 պորտը: Եթե դուք կարգավորել եք այլ նավահանգիստ .env
ֆայլում, դուք պետք է թարմացնեք այն վերը նշված հրամանում:
Քայլ 7 - Տեղադրեք Standard Notes վեբ հավելվածը
Դուք կարող եք կամ օգտագործել առկա Standard Notes վեբ հավելվածը կամ հյուրընկալել ձերը: Մեր ձեռնարկի համար մենք ինքնուրույն կհյուրընկալենք Standard Notes վեբ հավելվածը:
Տեղադրեք Git-ը
Նախքան առաջ շարժվելը, մենք պետք է տեղադրենք մի քանի բան, որոնցից մեկը Git-ն է: Տեղադրեք Git-ը:
$ sudo dnf install git -y
Տեղադրեք NodeJS-ը
Հաջորդ քայլը NodeJS-ի տեղադրումն է: Դրա համար մենք կտեղադրենք Node 18.x LTS տարբերակը: NodeJS-ը տեղադրելու համար թողարկեք հետևյալ հրամանները.
$ curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
$ sudo dnf install -y nodejs
Հաստատեք տեղադրումը:
$ node --version
v18.20.2
Տեղադրեք Yarn
Մեզ անհրաժեշտ է նաև Yarn փաթեթի մենեջեր։ Տեղադրեք այն Node-ի միջոցով:
$ sudo npm install --global yarn
Տեղադրեք PM2 փաթեթի կառավարիչ:
Մեզ անհրաժեշտ է PM2, որպեսզի օգնի գործարկել Standard Notes վեբ հավելվածը որպես ֆոնային ծառայություն:
$ sudo npm install --global pm2
Տեղադրեք վեբ հավելվածը
Ստեղծեք գրացուցակ վեբ հավելվածի համար և անցեք դրան:
$ cd ~
$ mkdir snotes-app
$ cd ~/snotes-app
Ներբեռնեք Standard Notes հավելվածը GitHub-ից:
$ git clone https://github.com/standardnotes/app.git .
Կախվածությունները տեղադրելու համար օգտագործեք Yarn: Անտեսեք ցանկացած նախազգուշացում:
$ yarn install
Կառուցեք փաթեթներ վեբ հավելվածի համար:
$ yarn build:web
Անցեք վեբ գրացուցակին:
$ cd packages/web
Գործարկեք վեբ հավելվածը՝ օգտագործելով PM2:
$ pm2 start "yarn start" --name api
Դուք կարող եք ստուգել ծառայության կարգավիճակը՝ օգտագործելով հետևյալ հրամանը.
$ pm2 status
[PM2] Starting /usr/bin/bash in fork_mode (1 instance)
[PM2] Done.
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id ? name ? namespace ? version ? mode ? pid ? uptime ? ? ? status ? cpu ? mem ? user ? watching ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0 ? api ? default ? N/A ? fork ? 15090 ? 0s ? 0 ? online ? 0% ? 26.2mb ? navjot ? disabled ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Հավելվածը կգործարկվի և հասանելի է 3001 նավահանգստի միջոցով: Մենք կօգտագործենք այս տեղեկատվությունը վեբ հավելվածի համար Nginx կոնֆիգուրացիա ստեղծելու համար:
PM2-ը չի վերագործարկում հավելվածը վերաբեռնումից հետո: Դա անելու համար մենք պետք է ստեղծենք գործարկման սցենար:
$ pm2 startup
Դուք պետք է ստանաք նմանատիպ արդյունք:
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot
Գործարկեք ելքում տրված հրամանը:
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot
Սա կստեղծի և կակտիվացնի systemd ծառայության ֆայլը:
Պահպանեք գործընթացը, որը պետք է ինքնաբերաբար սկսվի վերագործարկման ժամանակ:
$ pm2 save
Քայլ 8 - Կարգավորեք Nginx-ը
Բացեք ֆայլը /etc/nginx/nginx.conf
խմբագրման համար:
$ sudo nano /etc/nginx/nginx.conf
Ավելացրեք հետևյալ տողը include /etc/nginx/conf.d/*.conf;
տողից առաջ:
server_names_hash_bucket_size 64;
Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:
Ստեղծեք և բացեք ֆայլը /etc/nginx/conf.d/standardnotes.conf
խմբագրման համար:
$ sudo nano /etc/nginx/conf.d/standardnotes.conf
Դրա մեջ տեղադրեք հետևյալ կոդը. Փոխարինեք standardnotes.example.com
ձեր տիրույթի անունով: Մենք սահմանել ենք client_max_body_size
արժեքը 50 ՄԲ: Դուք կարող եք փոխել այն ըստ ձեր պահանջների:
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
http3 on;
quic_retry on;
server_name standardnotes.example.com;
client_max_body_size 50M;
access_log /var/log/nginx/standardnotes.access.log;
error_log /var/log/nginx/standardnotes.error.log;
ssl_certificate /etc/letsencrypt/live/standardnotes.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/standardnotes.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/standardnotes.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
resolver 8.8.8.8;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_cache off;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name standardnotes.example.com;
return 301 https://$host$request_uri;
}
Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է:
Վերոնշյալ ֆայլը նախատեսված է հիմնական Standard Notes հավելվածի համար: Հաջորդը, մենք պետք է կարգավորենք մեկ այլ ֆայլ Files ենթատիրույթի համար:
$ sudo nano /etc/nginx/conf.d/files-standardnotes.conf
Դրա մեջ տեղադրեք հետևյալ կոդը. Փոխարինեք snotes-files.example.com
ձեր տիրույթի անունով: Մենք սահմանել ենք client_max_body_size
փոփոխականի արժեքը 50 ՄԲ: Դուք կարող եք փոխել այն ըստ ձեր պահանջների:
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
http3 on;
quic_retry on;
server_name snotes-files.example.com;
client_max_body_size 50M;
access_log /var/log/nginx/files-standardnotes.access.log;
error_log /var/log/nginx/files-standardnotes.error.log;
ssl_certificate /etc/letsencrypt/live/snotes-files.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/snotes-files.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/snotes-files.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
resolver 8.8.8.8;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:3125;
proxy_cache off;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name snotes-files.example.com;
return 301 https://$host$request_uri;
}
Եվ վերջապես, մենք պետք է ստեղծենք կոնֆիգուրացիայի ֆայլ վեբ հավելվածի համար:
$ sudo nano /etc/nginx/conf.d/web-standardnotes.conf
Դրա մեջ տեղադրեք հետևյալ կոդը.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
http3 on;
quic_retry on;
server_name snotes-web.example.com;
client_max_body_size 50M;
access_log /var/log/nginx/standardnotes-web.access.log;
error_log /var/log/nginx/standardnotes-web.error.log;
ssl_certificate /etc/letsencrypt/live/snotes-web.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/snotes-web.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/snotes-web.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
resolver 8.8.8.8;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:3125;
proxy_cache off;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name snotes-web.example.com;
return 301 https://$host$request_uri;
}
Ստուգեք ձեր Nginx կոնֆիգուրացիան:
$ sudo nginx -t
Կազմաձևման ֆայլերը միացնելու համար վերագործարկեք Nginx սերվերը:
$ sudo systemctl restart nginx
Քայլ 9 - Կարգավորեք SELinux-ը
Կիրառեք քաղաքականությունը, որպեսզի թույլատրեք կապեր հաստատել արտաքին հյուրընկալողների հետ:
$ sudo setsebool -P httpd_can_network_connect 1
Կիրառեք քաղաքականությունը՝ թույլ տալու Nginx-ին մուտք գործել PostgreSQL:
$ sudo setsebool -P httpd_can_network_connect_db 1
Քայլ 10 - Օգտագործեք ստանդարտ նշումներ
Եթե ձեր դիտարկիչում բացեք https://standardnotes.example.com
URL-ը, ապա պետք է տեսնեք հետևյալ ելքը:
Սա նշանակում է, որ ձեր սերվերը գործում է և աշխատում է: Ստանդարտ նշումներ օգտագործելու համար դուք պետք է օգտագործեք պաշտոնական հավելվածները: Մեր ձեռնարկի համար մենք կօգտագործենք նրանց վեբ հավելվածը, բայց մեթոդը կմնա նույնը աշխատասեղանի և բջջային հավելվածների համար:
Բացեք URL https://snotes-web.example.com
՝ վեբ հավելված մուտք գործելու համար: Սեղմեք Ստեղծել անվճար հաշիվ հղումը էջի ներքևի ձախ մասում և լրացրեք ձեր էլ․ հասցեն և գաղտնաբառը: Կտտացրեք Ընդլայնված գործառույթներ կոճակին, ապա նշեք Պատվերով համաժամացման սերվերի տարբերակը, և լրացրեք https://standardnotes.example.com
URL-ը: տուփը։
Շարունակելու համար սեղմեք Հաջորդ կոճակը: Ձեզանից նորից կպահանջվի ձեր գաղտնաբառը:
Մուտք գործելուց հետո կարող եք սկսել գրառումներ ստեղծել և օգտագործել հավելվածը:
Քայլ 11 - Միացնել վճարովի գործառույթները
Մինչ այժմ մենք միացրել ենք «Standard Notes» հավելվածի հիմնական գործառույթները: Այնուամենայնիվ, դուք կարող եք ակտիվացնել վճարովի սերվերի կողմից որոշ գործառույթներ, և Standard Notes-ը թույլ է տալիս դրանք կատարել անվճար: Սա չի ակտիվացնի հաճախորդի կողմից պրեմիում գործառույթները, ինչպիսիք են Super Notes-ը և Nested պիտակները: Դուք կարող եք ձեռք բերել խիստ զեղչված բաժանորդագրություն Standard Notes Offline պլանի միջոցով՝ դրանք ակտիվացնելու համար:
Դուք պետք է գործարկեք հետևյալ հրամանը Standard Notes գրացուցակից՝ ինքնակառավարվող հավելվածում սերվերի կողմից պրեմիում գործառույթները միացնելու համար:
$ cd ~/standardnotes
$ docker compose exec db sh -c "MYSQL_PWD=\$MYSQL_ROOT_PASSWORD mysql \$MYSQL_DATABASE -e \
'INSERT INTO user_roles (role_uuid , user_uuid) VALUES ((SELECT uuid FROM roles WHERE name=\"PRO_USER\" ORDER BY version DESC limit 1) ,(SELECT uuid FROM users WHERE email=\"EMAIL@ADDR\")) ON DUPLICATE KEY UPDATE role_uuid = VALUES(role_uuid);' \
"
$ docker compose exec db sh -c "MYSQL_PWD=\$MYSQL_ROOT_PASSWORD mysql \$MYSQL_DATABASE -e \
'INSERT INTO user_subscriptions SET uuid=UUID(), plan_name=\"PRO_PLAN\", ends_at=8640000000000000, created_at=0, updated_at=0, user_uuid=(SELECT uuid FROM users WHERE email=\"EMAIL@ADDR\"), subscription_id=1, subscription_type=\"regular\";' \
"
Վերբեռնեք վեբ հավելվածը, և վճարովի գործառույթները պետք է ակտիվացվեն ձեր հաշվի համար: Հաճախորդի կողմի գործառույթներն ակտիվացնելու համար բացեք ձեր հավելվածի նախապատվությունները, ընտրեք Ընդհանուր >> Անցանց ակտիվացում ընտրացանկը և մուտքագրեք ակտիվացման կոդը, որը ստացել եք՝ գնելով անցանց պլանը:
Քայլ 12 - Կարգավորեք սերվերը ֆայլերի վերբեռնման համար
Ֆայլի վերբեռնումը Standard Notes-ի վճարովի հատկանիշ է և չի աշխատի առանց օֆլայն պլանը գնելու: Մենք միացրել ենք հատուկ API URL-ը ֆայլերի վերբեռնման համար: Բայց նրանք դեռ չեն աշխատի։ Որպեսզի դրանք աշխատեն, մենք պետք է համապատասխան թույլտվություններ տանք վերբեռնումների գրացուցակին: Վերբեռնումները պահվում են ~/standardnotes/uploads
գրացուցակում: Թույլտվությունները փոխելու համար գործարկեք հետևյալ հրամանները.
$ sudo chmod -R 775 data
$ sudo chmod -R 755 uploads
$ sudo chown -R 1001.1001 uploads
Այժմ Standard Notes-ը զրո է սահմանում որպես վերբեռնման սահմանաչափ յուրաքանչյուր օգտագործողի համար: Դա նշանակում է, որ ոչ մի օգտատեր չի կարող ֆայլեր վերբեռնել, եթե ձեռքով քվոտա չտրվի: Հետևաբար, ֆայլերի վերբեռնումն արդյունավետ դարձնելու վերջին քայլը վճարովի օգտատիրոջ հաշվի համար ֆայլերի քվոտան միացնելն է: Մենք կարող ենք դա անել՝ կատարելով SQL հարցում տվյալների բազայի կոնտեյների ներսում:
Մուտք գործեք MySQL վահանակ՝ տվյալների շտեմարանի կոնտեյների ներսում:
$ docker exec -it db-standalone mysql -u std_notes_user -p
Enter password:
Երբ ներս մտնենք MySQL վահանակում, եկեք ստուգենք տվյալների բազաների ցանկը:
mysql > show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| standard_notes_db |
+--------------------+
3 rows in set (0.01 sec)
Անցեք ստանդարտ նշումների տվյալների բազայի:
mysql > use standard_notes_db;
Գործարկեք հետևյալ SQL հրամանը՝ վերևում ակտիվացված վճարովի օգտատիրոջը 10 ԳԲ ֆայլի քվոտա ավելացնելու համար:
mysql> INSERT INTO subscription_settings(uuid, name, value, created_at, updated_at, user_subscription_uuid) VALUES (UUID(), "FILE_UPLOAD_BYTES_LIMIT", 10737418240, FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), (SELECT us.uuid FROM user_subscriptions us INNER JOIN users u ON us.user_uuid=u.uuid WHERE u.email="[email "));
Այստեղ 10737418240-ը վերաբերում է ընդհանուր բայթերին, որը թարգմանվում է 10 ԳԲ: Դուք կարող եք փոփոխել այս համարը այն ամենի համար, ինչ ձեզ հարկավոր է:
Դուրս եկեք MySQL կեղևից և տվյալների բազայի կոնտեյներից:
mysql > exit
Քայլ 13 - Թարմացրեք ստանդարտ Notes սերվերը և վեբ հավելվածը
Standard Notes Server-ի արդիականացման առաջին քայլը գոյություն ունեցող բեռնարկղերի դադարեցումն ու հեռացումն է:
$ cd ~/standardnotes
$ docker compose stop
$ docker compose remove --orphans
Ձեռք բերեք վերջին .env
, localstack_bootstrap.sh
և Docker ֆայլերը GitHub պահոցից: Կատարեք անհրաժեշտ փոփոխությունները և փոխարինեք ձեր առկա ֆայլերը թարմացվածներով:
Նորից գործարկեք Սերվերի բեռնարկղերը:
$ docker compose up -d
Ձեր թարմացված համաժամացման սերվերն այժմ աշխատում է:
Անցեք վեբ հավելվածների գրացուցակին:
$ cd ~/snotes-app
Անցեք վեբ հավելվածի արմատային գրացուցակին:
$ cd packages/web
Դադարեցրեք գոյություն ունեցող գործընթացը:
$ pm2 stop api
Վերադարձեք ծրագրի հիմնական գրացուցակին:
$ cd ~/snotes-app
Քաշեք վերջին փոփոխությունները GitHub-ի պահոցից:
$ git pull
Վերադարձեք վեբ գրացուցակի ներսում:
$ cd packages/web
Սկսեք գործընթացը:
$ pm2 start api
Ձեր վեբ հավելվածը պետք է թարմացվի:
Եզրակացություն
Սա ավարտում է մեր ձեռնարկը Rocky Linux 9 սարքի վրա Standard Notes սերվերի տեղադրման և կազմաձևման վերաբերյալ: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: