Skip to content

Commit

Permalink
proper debian build
Browse files Browse the repository at this point in the history
  • Loading branch information
KaiGVilbig committed Dec 7, 2023
1 parent 9d46828 commit bee6c86
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 20 deletions.
22 changes: 19 additions & 3 deletions DEBIAN/postinst
Original file line number Diff line number Diff line change
@@ -1,6 +1,22 @@
#!/bin/bash

apt-get update
apt-get install -y nodejs npm
sudo apt-get update
ARCHITECTURE=$(dpkg --print-architecture)
if [ "$ARCHITECTURE" == "amd64" ]; then
USEARCH="x64"
else
USEARCH=$ARCHITECTURE
fi
wget "https://nodejs.org/download/release/v18.18.2/node-v18.18.2-linux-$USEARCH.tar.gz"
tar -zxvf node-v18.18.2-linux-$USEARCH.tar.gz
sudo cp -r node-v18.18.2-linux-$USEARCH/{bin,include,lib,share} /usr/
npm install -g ts-node
chown -R :auto-services /opt/auto/LeekDuck/
chmod g+rwx /opt/auto/LeekDuck/

npm install -g ts-node
systemctl daemon-reload
systemctl enable leek-duck
echo "After installation, please navigate to the project directory located at: /opt/auto/LeekDuck and run 'npm install' to install dependencies, then run 'systemctl start leek-duck' to start the service"

# systemctl start leek-duck
exit 0
8 changes: 3 additions & 5 deletions DEBIAN/postrm
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/bash

userdel -r leek-duck
if [ "$1" = "0" ]; then
rm -rf /opt/auto/LeekDuck
rm -f /etc/systemd/system/leek-duck.service
fi

systemctl daemon-reload
userdel leek-duck

exit 0
3 changes: 2 additions & 1 deletion DEBIAN/preinst
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/bin/bash

useradd --system leek-duck
useradd --system --create-home --home-dir /home/leek-duck leek-duck
groupadd auto-services
usermod -a -G auto-services leek-duck
exit 0
1 change: 1 addition & 0 deletions DEBIAN/prerm
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#!/bin/bash
systemctl stop leek-duck
systemctl disable leek-duck
exit 0
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,19 @@
## Running
- To run the aplication in dev mode:
- Run `npm run dev` to run in dev mode or,
- Run `ts-node index.ts`
- Run `ts-node index.ts`

## Rasberry Pi?
- If you want to run this on a rasberyr pi the only way I found that works so far is:
- use Rasberry Pi OS (Latest 64 bit)
- curl -sSL https://get.docker.com | sh
- mkdir mongodb (in /home/user/)
- sudo docker pull mongo:4.4.13
- sudo docker run --rm -d -p 27017:27017 -v ~/mongodb:/data/db --name mongodb mongo:4.4.13
- To install .deb on RPi, Since the debian version < 12, zstd is needed to modify the .deb package.
- ar x leek-duck_0.0.1_all.deb
- zstd -d < control.tar.zst | xz > control.tar.xz
- zstd -d < data.tar.zst | xz > data.tar.xz
- ar -m -c -a sdsd /tmp/leek-duck_0.0.1_all.deb debian-binary control.tar.xz data.tar.xz
- rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst
- apt-get install /tmp/some-package.deb
5 changes: 2 additions & 3 deletions buildDebian.bat
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
docker build -f DebianDockerfile --cache-from debianbuilder -t debianbuilder .
rmdir shared /s /q
mkdir shared\opt\auto\LeekDuck\node_modules
mkdir shared\opt\auto\LeekDuck
mkdir shared\etc\systemd\system

xcopy /s node_modules shared\opt\auto\LeekDuck\node_modules
xcopy /s /I DEBIAN shared\DEBIAN
copy connectMango.tsx shared\opt\auto\LeekDuck
copy dbOps.ts shared\opt\auto\LeekDuck
Expand All @@ -13,6 +12,6 @@ copy index.ts shared\opt\auto\LeekDuck
copy package-lock.json shared\opt\auto\LeekDuck
copy package.json shared\opt\auto\LeekDuck
copy tsconfig.json shared\opt\auto\LeekDuck
copy leek-duck.service shared\etc\systemd\system\
copy leek-duck-debian.service shared\etc\systemd\system\

docker run --rm -it -v E:\Projects\Home_auto\checkLeekDuck\shared:/leek-duck_0.0.1_all debianbuilder
5 changes: 5 additions & 0 deletions buildDebian.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
mv leek-duck_0.0.1_all/etc/systemd/system/leek-duck-debian.service leek-duck_0.0.1_all/etc/systemd/system/leek-duck.service
chmod -R 755 leek-duck_0.0.1_all/DEBIAN
chmod 644 leek-duck_0.0.1_all/DEBIAN/control leek-duck_0.0.1_all/etc/systemd/system/leek-duck.service

chmod 755 leek-duck_0.0.1_all
chmod 755 leek-duck_0.0.1_all/DEBIAN leek-duck_0.0.1_all/opt leek-duck_0.0.1_all/etc leek-duck_0.0.1_all/etc/systemd leek-duck_0.0.1_all/etc/systemd/system

dpkg-deb --build leek-duck_0.0.1_all

Expand Down
2 changes: 1 addition & 1 deletion buildTestDebian.bat
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ copy tests\index.ts shared\opt\auto\LeekDuck
copy package-lock.json shared\opt\auto\LeekDuck
copy package.json shared\opt\auto\LeekDuck
copy tsconfig.json shared\opt\auto\LeekDuck
copy leek-duck.service shared\etc\systemd\system\
copy leek-duck-debian.service shared\etc\systemd\system

docker run --rm -it -v E:\Projects\Home_auto\checkLeekDuck\shared:/leek-duck_0.0.1_all debianbuilder
24 changes: 18 additions & 6 deletions index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
const puppeteer = require('puppeteer')
const puppeteer = require('puppeteer-core')
import { Browser } from 'puppeteer'
import db from './dbOps'
import DuckInt from './duckInferface'
const cron = require('node-cron')

const basedDuck = 'https://leekduck.com'
const duck = basedDuck + '/events'
const basedDuck: string = 'https://leekduck.com'
const duck: string = basedDuck + '/events'

const main = async () => {
const browser: Browser = await puppeteer.launch({headless: true})
const get = async () => {
// When building for or running on Linux, add the field executablePath: '/path/to/chromium-browser'
const browser: Browser = await puppeteer.launch({ headless: true})
const page = await browser.newPage()
await page.goto(duck)

Expand All @@ -33,7 +34,18 @@ const main = async () => {
await browser.close()

let formatted: Array<DuckInt> = duckData;
await db(formatted);
return formatted
}

const send = async (ducks: Array<DuckInt>) => {
await db(ducks);
}


const main = async () => {

let ducks: Array<DuckInt> = await get()
await send(ducks)
}

main()
Expand Down
13 changes: 13 additions & 0 deletions leek-duck-debian.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[Unit]
Description=LeekDuck Service for

[Service]
Type=simple
User=leek-duck
Group=auto-services
WorkingDirectory=/opt/auto/LeekDuck/
ExecStart=/usr/bin/ts-node /opt/auto/LeekDuck/index.ts
Restart=on-failure

[Install]
WantedBy=multi-user.target
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"mongoose": "^8.0.1",
"node-cron": "^3.0.3",
"puppeteer": "^21.5.2",
"puppeteer-core": "^21.5.2",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
}
Expand Down

0 comments on commit bee6c86

Please sign in to comment.