manuals, deploy, docs

This commit is contained in:
2024-11-29 19:13:53 +02:00
parent 824249ed75
commit e264956831
11 changed files with 310 additions and 21 deletions
+229
View File
@@ -0,0 +1,229 @@
<?xml version="1.0" encoding="UTF-8"?>
<ElementBaseInitiationBlock>
<!-- Basic -->
<Inline template="General/Element Basic No Icon"/>
<!-- Stereotypes -->
<HasValueChecker property="stereotypes">
<Reference template="General/Stereotypes"/>
</HasValueChecker>
<!-- Tagged Values -->
<HasValueChecker property="taggedValues">
<Reference template="Tagged Values"/>
</HasValueChecker>
<!-- Summary - Template Parameters -->
<HasValueChecker property="templateParameters">
<Text style="@heading+">Template Parameters</Text>
<ParagraphBreak/>
<TableBlock colWidths="33, 33, 33" tableStyle="Summaries">
<TableRow>
<TableCell>
<Text>Name</Text>
</TableCell>
<TableCell>
<Text>Type</Text>
</TableCell>
<TableCell>
<Text>Default Value</Text>
</TableCell>
</TableRow>
<ForEach property="templateParameters">
<TableRow>
<TableCell>
<Property property="name"/>
</TableCell>
<TableCell>
<Property property="type"/>
</TableCell>
<TableCell>
<Property property="defaultValue"/>
</TableCell>
</TableRow>
</ForEach>
</TableBlock>
</HasValueChecker>
<!-- Attributes (Summary) -->
<HasChildElementChecker modelType="Attribute">
<Text style="@heading+">Атрибути</Text>
<ParagraphBreak/>
<TableBlock colWidths="30, 70" tableStyle="Summaries">
<TableRow>
<TableCell>
<Text>Име</Text>
</TableCell>
<TableCell>
<Text>Описание</Text>
</TableCell>
</TableRow>
<IterationBlock modelType="Attribute">
<TableRow>
<TableCell>
<Property property="name"/>
</TableCell>
<TableCell>
<Property property="description" style="Description"/>
</TableCell>
</TableRow>
</IterationBlock>
</TableBlock>
</HasChildElementChecker>
<!-- Enumeration Literals (Summary) -->
<HasChildElementChecker modelType="EnumerationLiteral">
<Text style="@heading+">Enumeration Literals Summary</Text>
<ParagraphBreak/>
<TableBlock colWidths="20, 80" tableStyle="Summaries">
<TableRow>
<TableCell>
<Text>Name</Text>
</TableCell>
<TableCell>
<Text>Description</Text>
</TableCell>
</TableRow>
<IterationBlock modelType="EnumerationLiteral">
<TableRow>
<TableCell>
<Icon/>
<Property property="name"/>
</TableCell>
<TableCell>
<Property property="description" style="Description"/>
</TableCell>
</TableRow>
</IterationBlock>
</TableBlock>
</HasChildElementChecker>
<!-- Operations (Summary) -->
<HasChildElementChecker modelType="Operation">
<Text style="@heading+">Методи</Text>
<ParagraphBreak/>
<TableBlock colWidths="20, 80" tableStyle="Summaries">
<TableRow>
<TableCell>
<Text>Име</Text>
</TableCell>
<TableCell>
<Text>Описание</Text>
</TableCell>
</TableRow>
<IterationBlock modelType="Operation">
<TableRow>
<TableCell>
<Property property="name"/>
</TableCell>
<TableCell>
<Property property="description" style="Description"/>
</TableCell>
</TableRow>
</IterationBlock>
</TableBlock>
</HasChildElementChecker>
<!-- Enumeration Literals (Detail) -->
<HasChildElementChecker modelType="EnumerationLiteral">
<Text style="@heading+">Enumeration Literals</Text>
<ParagraphBreak/>
<IterationBlock modelType="EnumerationLiteral">
<Inline template="Basic"/>
<TableBlock colWidths="20, 80" repeatTableHeader="false" tableStyle="Properties">
<TableRow>
<TableCell>
<Text>Specification</Text>
</TableCell>
<TableCell>
<ModelElementProperty property="specification">
<Property property="value"/>
</ModelElementProperty>
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<Text>Slots</Text>
</TableCell>
<TableCell>
<ForEach property="slots">
<Property property="feature"/>
<Text> = </Text>
<ForEach ignoreLastSeparator="true" property="values">
<Property property="value"/>
<Text>, </Text>
</ForEach>
<ParagraphBreak/>
</ForEach>
</TableCell>
</TableRow>
</TableBlock>
</IterationBlock>
</HasChildElementChecker>
<!-- Sub Diagrams & References -->
<Reference template="General/Sub and Referenced Diagrams"/>
<!-- Traceability -->
<HasValueChecker property="traceability">
<Reference template="Traceability"/>
</HasValueChecker>
<!-- Chart Relations -->
<HasValueChecker property="chartRelations">
<Text style="@heading+">Chart Relations</Text>
<ParagraphBreak/>
<TableBlock colWidths="20, 80" tableStyle="Summaries">
<TableRow>
<TableCell>
<Text>Code</Text>
</TableCell>
<TableCell>
<Text>Begin</Text>
</TableCell>
<TableCell>
<Text>End</Text>
</TableCell>
</TableRow>
<ForEach property="chartRelations">
<TableRow>
<TableCell>
<ModelElementProperty property="code">
<Property property="code"/>
</ModelElementProperty>
</TableCell>
<TableCell>
<ModelElementProperty property="from">
<Icon/>
<Property property="name"/>
</ModelElementProperty>
</TableCell>
<TableCell>
<ModelElementProperty property="to">
<Icon/>
<Property property="name"/>
</ModelElementProperty>
</TableCell>
</TableRow>
</ForEach>
</TableBlock>
</HasValueChecker>
</ElementBaseInitiationBlock>
+9
View File
@@ -0,0 +1,9 @@
module.exports = {
apps : [{
name : "pronature",
script : "/var/node/pronature/backend/main.js",
cwd : "/var/node/pronature/",
instances : 2,
exec_mode : "cluster"
}]
}
+45
View File
@@ -0,0 +1,45 @@
# Server and Application Installation
## Services to install
### [Mongo DB Community 8+ ](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/)
> sudo apt-get install gnupg curl
> curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
> echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
> sudo apt-get update
> sudo apt-get install -y mongodb-org
> sudo systemctl start mongod
> sudo systemctl status mongod
> sudo systemctl enable mongod
### NodeJS
> curl -fsSL https://fnm.vercel.app/install | bash
> source ~/.bashrc
> fnm use --install-if-missing 22
> node -v # should print `v22.11.0`
> npm -v # should print `10.9.0`
### PM2
> npm install pm2 -g
> pm2 startup
2. NGINX. Important config - set redirect from http to https. Virtual host config example - [**nginx.`your_dl_name`.conf** ](./nginx.your_dl_name.conf)
3. PM2. Install and enable the process manager for nodejs (after NodeJS and NPM are installed). Config and run using the nonroot user.
4. SPHINX. Install in **/opt/sphinx**. Create a service using config in sphinx.service. Copy to sphinx bin/ folder and configure FTS indexes in [**sphinx.conf**](./sphinx.conf) template. Make sure all paths are available. **/opt/sphinx** should be owned by the nonroot user.
## Tools to install
1. NodeJS and NPM (currently Node v16, NPM v8)
1. [Mongo DB tools](https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools)
1. Let's Encrypt CertBot, for certificates issuing and renewal. The certificate is installed using the following command: `certbot certonly -d your.server.name`. Use `--nginx` or `--apache` in order to have automatic renewal
1. ffmpeg - for converting video and audio content
1. ghostscript - for creating thumbnails for PDF files
1. OpenSSH Server - to be able to access the server remotely
1. UFW - Firewall, configure to allow access only on 443, 80, and 22 (if possible, only for specific hosts)
1. rsync - for backup
1. fail2ban - to protect from SSH attacks
1. postfix - in order to get CRON jobs notifications
1. mailutils - CRON jobs mail notifications
1. In order to enable web server monitoring you can install and run:
- Linux Dash using this [instruction](https://github.com/afaqurk/linux-dash). You can run it using `pm2 start ecosystem.config.js` (on https://your.server.name/host-monitor/) OR
<!-- - Netdata (`app install netdata`) and https://your.server.name/netdata/ -->
- [Netdata](https://learn.netdata.cloud/docs/installing/one-line-installer-for-all-linux-systems) - `wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel`