diff --git a/server/scripts/install.md b/server/scripts/install.md new file mode 100644 index 0000000..0758564 --- /dev/null +++ b/server/scripts/install.md @@ -0,0 +1,130 @@ +# Install +## Files needed to be downloaded before install. +### To run the server +* [PostgresSQL](https://www.postgresql.org/download/windows/) - current version using is 17 +* [NodeJS](https://nodejs.org) +* [NSSM](https://nssm.cc/) +### To manage the server +* [VSCODE](https://code.visualstudio.com/) +* [Postman](https://www.postman.com/downloads/) + +## Creating directories needed +* Create a new folder where we will host the server files. + * Copy the nssm.exe into this folder +* Copy the build files to the server (only needed for intial install). + * This will house all the compiles and minified files needed to start the server up, this includes the frontend. +* Save the nssm.exe into this folder as well, this will be used to control the service. + +## Do the intial install +### DB instal setup +1. Install postgres +2. Open pgAdmin +3. create a new Database named lst_db + +### Intial server setup +1. Open VSCode and navigate to the folder where you extracted the files. +2. Click trusted when it pops up. +3. Open a terminal window inside vscode. +4. Run the install script this will install all dependaceys needed as well as do all the database migrations +```bash +npm run prodinstall +``` +### Create the .env file +In the root of the folder create a new .env file +add in the below and change each setting area that says change me to something that suits your needs +```env +# PORTS +# To keep it all simple we will pass VITE to the ports that are used on both sides. +VITE_SERVER_PORT=4400 + +# logLevel +LOG_LEVEL=debug + +# Auth stuff +SALTING=12 +SECRET=CHANGEME +JWT_SECRET=CHANGEME +JWT_REFRESH_SECRET=CHANGEME + +# Expire info plus refresh change as needed +JWT_EXPIRES=60 +JWT_REFRESH_THRESHOLD=30 +JWT_ACCESS_EXPIRATION="1h" +JWT_REFRESH_EXPIRATION="7d" + +# this code will need to be used when a user needs to have access to everything. +SECRETOVERRIDECODE="mVSDCpBdxreIJ979ziI71GRubBc2mqVqvZdfA22CB7smBfqlE9S3rKTE909yCHte" + +# Database url - please change the password if this is all you changed +DATABASE_URL="postgresql://postgres:PASSWORD@localhost:5432/lst_db" + +# This is for usday1 restrictions with the lgvs and customer constraints. +FIFO=100 +MAXLOTS=3 +``` + +### Run the start command to get all the basic settings and modules installed +1. Run the below +```bash +npm start +``` +This command will start up the server and seed the database. +* Settings will be set here. +* All modules will be added. + +2. Press CTRL + C to stop the server. +3. Reopen postgres and review the settings make the changes to match the server your going to be running in. + * Change the server + * change the dbServer + * change plantToken + * then the remaining settings confirm if you need on or want to leave as default. + +### Creating first user. +1. Start the server back up. +```bash +npm start +``` +2. Open http://[SERVER]:[PORT]/api/docs or postman and create a user. + * Please do not try to manually enter a new user this is due to how the password is hashed, as well as setting systemAdmin for the first user. + * Change the server and port to what you changed in the DB. +3. Stop the server again with CTRL + C. + +### Running as a serivice. +You want to CD into the scripts folder. +```bash +cd .\dist\server\scripts\ +``` +Next use the example command below to get the service up and running. +* Options legend + * serviceName = not recommended to change to reduce issues with the update process + * option = use install for the install, but you can use this script later to stop, start, restart the service. + * appPath = where did you extract the server files + * description = no need to change this unless you want it to be something else + * command = do not change this unless you know what your doing and really need to change this. +```powershell +.\services.ps1 -serviceName "LSTV2" -option "install" -appPath "E:\LST\lstV2" -description "Logistics Support Tool V2" -command "run start" +``` + +# Migrating From V1 to V2 +## User migration +1. Open the sqlite db and export to sql the users table +2. OPen the sql in notepad++ or your editor of choice and change the query to be similar to below. + * we only need to have save the username, role, email, password + +An example new query will look like +* Below is how it looks when exported from sqlite +```sql +INSERT INTO "User" ("id", "username", "email", "role", "password", "passwordToken", "tokenExpire", "active", "pinCode", "lastLogin", "add_user", "add_date", "upd_user", "upd_date") VALUES +(1, 'matthes01', 'blake.matthes@alpla.com', 'admin', 'JDJiJDEMUJEdGtL', NULL, NULL, '1', NULL, '1721075647687', 'LST_System', '1721075647687', 'LST_System', '1721075647687'); +``` + +The way we want to put recreate the query to work with the new db +* Below example +```sql +INSERT INTO "users" ("username", "email", "role", "password") VALUES +('matthes01','blake.matthes@alpla.com','admin','JDJiJDE1FuNFpkYlk4NGdHUXpEMzlHR1BD'), +('leland001','jordan.leland@alpla.com','manager','vekJhN1dIVVVZa3pxR1l0T2hX'), +('brandon001','brandon.harry@alpla.com','manager','wdm1RSXJlZnJDYTZP'); +; +``` +* You could have many users and just add like above with the identical info from the db \ No newline at end of file