Installing Parse Server Generic Email Adapter - amazon-elastic-beanstalk

I use parse-server with AWS elastic beanstalk.
There was the mailgun email adapter installed as default, but I want to install the generic email adapter so I can send e-mails with a gmail account. I want to install the plugin below but I do not now how to.
The Parse Server Generic Email Adapter
The command to install is as below:
$ npm install --save parse-server-generic-email-adapter
But I am not very professional in server side. Generally what I do is open terminal from my mac computer and write eb init then make changes in the index and cloud code file and write eb deploy.
I don't know where and how to run the command above to install the email adapter. First I run eb init, then eb labs download and in the location where the sever files are downloaded; I try to run the command above from terminal and I get the messages as below:
usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
[-o owner] file1 file2
install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
[-o owner] file1 ... fileN directory
install -d [-v] [-g group] [-m mode] [-o owner] directory ...
Any help would be great.

Ok,
I found how to do it, if you use elastic beanstalk with parse-server, and want to use generic mail adapter;
1) in your package.json file dependencies add:
"parse-server-generic-email-adapter": "0.0.4"
2) in your index.js file - email adapter part, add:
module: 'parse-server-generic-email-adapter',
options: {
service: 'Gmail',
email: 'xxxxxxx#gmail.com',
password: 'xxxxxxx',
}
And deploy your files to your elastic beanstalk server with eb deploy.

Related

How can i add packages to alpine netboot

I have download Alpine netboot distribution from this URL:
https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/x86/alpine-netboot-3.16.1-x86.tar.gz
I have run a virtual machine with QEMU this way:
qemu-system-i386 -m 256 -kernel boot/vmlinuz-lts -initrd boot/initramfs-lts -append "console=ttyS0 ip=dhcp alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main/"
With this command, a virtual machine is created and 22 apk pacakges are installed.
I am able to install additionnal apk packages, but I have to do it by hand (apk add command).
How can I script packages installation in QEMU command line ?
Please note: I can replace http://dl-cdn.alpinelinux.org/ by a local mirror. So, I can also change files on the repository.

Google-chrome on AWS Lambda

It is possible to run Google-chrome not Chromium with puppeteer in AWS Lambda with container?
Script stuck when I create new page in browser:
const page = await browser.newPage();
Logs from AWS lambda:
mkdir: cannot create directory ‘/.local’: Read-only file system
touch: cannot touch ‘/.local/share/applications/mimeapps.list’: No such file or directory
/usr/bin/google-chrome-stable: line 45: /dev/fd/62: No such file or directory
/usr/bin/google-chrome-stable: line 46: /dev/fd/62: No such file or directory
[0213/000419.523205:ERROR:bus.cc(397)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0213/000419.528197:ERROR:bus.cc(397)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0213/000419.648505:WARNING:audio_manager_linux.cc(60)] Falling back to ALSA for audio output. PulseAudio is not available or could not be initialized.
DevTools listening on ws://127.0.0.1:46195/devtools/browser/1d348770-1c99-48a5-934c-fae5254fc766
[0213/000419.769218:WARNING:bluez_dbus_manager.cc(248)] Floss manager not present, cannot set Floss enable/disable.
prctl(PR_SET_NO_NEW_PRIVS) failed
prctl(PR_SET_NO_NEW_PRIVS) failed
I do not use puppeteer but that doesn't matter much.
FROM public.ecr.aws/lambda/provided:al2
RUN yum install unzip atk at-spi2-atk gtk3 cups-libs pango libdrm \
libXcomposite libXcursor libXdamage libXext libXtst libXt \
libXrandr libXScrnSaver alsa-lib \
xorg-x11-server-Xvfb wget shadow-utils -y
COPY install-chrome.sh /tmp/
RUN /usr/bin/bash /tmp/install-chrome.sh
ENV DBUS_SESSION_BUS_ADDRESS="/dev/null"
I am not 100% DBUS_SESSION_BUS_ADDRESS is necessary. I am also not 100% sure whether explicitly naming all these packages are necessary, I stole everything from a dozen different places, likely the chrome rpm will pull in what it needs, but I never used any RHEL based system so I am totally clueless. I know this works. Optimizations are welcome.
Here's the script:
#!/usr/bin/bash
# Download and install chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
# Without -y it doesn't run because it needs to add dependencies.
yum install -y google-chrome-stable_current_x86_64.rpm
rm google-chrome-stable_current_x86_64.rpm
CHROMEVERSION=`wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE`
wget --no-verbose -O /tmp/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROMEVERSION/chromedriver_linux64.zip
unzip /tmp/chromedriver_linux64.zip -d /opt
rm /tmp/chromedriver_linux64.zip
mv /opt/chromedriver /opt/chromedriver-$CHROMEVERSION
chmod 755 /opt/chromedriver-$CHROMEVERSION
ln -fs /opt/chromedriver-$CHROMEVERSION /usr/local/bin/chromedriver
# Create a user. /usr/sbin is not on $PATH.
/usr/sbin/groupadd --system chrome
/usr/sbin/useradd --system --create-home --gid chrome --groups audio,video chrome
You can verify it is working by starting it locally with docker run --mount type=tmpfs,destination=/tmp --read-only this simulates well the environment of AWS Lambda. Then you need to run su chrome -c 'xvfb-run chromedriver --allowed-ips=127.0.0.1'. I am using https://github.com/instaclick/php-webdriver/ which is a very thin PHP client for W3C and Selenium 2 webdriver. I used this to test:
<?php
namespace WebDriver;
require 'vendor/autoload.php';
#mkdir('/tmp/chrome');
chmod('/tmp/chrome', 0777);
$wd_host = 'http://localhost:9515';
$web_driver = new WebDriver($wd_host);
$session = $web_driver->session('chrome', [['goog:chromeOptions' => ['args' => [
'--no-sandbox',
'--user-data-dir=/tmp/chrome'
]]]]);
$session->open('https://google.com');

npm command not found pm2: command not found

NVM node is installed under Ubuntu19.04 but local pm2 deploy production update will report errors such as pm2: command not found
On the remote server
root#vultr:/usr/bin# git --version
git version 2.20.1
root#vultr:/usr/bin# nvm --version
0.34.0
root#vultr:/usr/bin# node -v
v10.15.3
root#vultr:/usr/bin# npm -v
6.4.1
On the local server
pm2 deploy production update
--> Deploying to production environment
--> on host 202.182.98.13
○ deploying origin/master
○ executing pre-deploy-local
○ hook pre-deploy
○ fast forward master
Already on 'master'
Your branch is up to date with 'origin/master'.
From github.com:zq0904/pm2
Updating d79b633..2fe1d22
Fast-forward
README.md | 3 ++-
ecosystem.config.js | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
* branch master -> FETCH_HEAD
d79b633..2fe1d22 master -> origin/master
○ executing post-deploy `git pull && npm install && pm2 reload ecosystem.config.js --env production`
Already up to date.
npm WARN 06-pm2#1.0.0 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents#1.2.9 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents#1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
up to date in 3.997s
pm2: command not found
post-deploy hook failed
Deploy failed
1
I can do it on a remote server
whereis npm
lh -s /root/.nvm/versions/node/v10.15.3/bin/node /usr/bin/node
lh -s /root/.nvm/versions/node/v10.15.3/bin/npm /usr/bin/npm
lh -s /root/.nvm/versions/node/v10.15.3/bin/pm2 /usr/bin/pm2
That would solve the problem,
But I don't understand why,
The server can already output NPM node pm2 and other versions,
But why do I have to set up a soft connection?
Is there any good solution to this troublesome problem,
Thank you very much!
I am not sure what's the route cause of this issue. But, it was happening to me when I created a new user in AWS EC2 ubuntu instance and try to deploy my NodeJS app using pm2 through that new user.
I followed this github thread and this particular comment solved my issue. Simply comment the following line in your server's .bashrc file
#If not running interactively, don 't do anything
case $ - in
*
i * );;
*) return;;
esac

Run statsd as a daemon on EC2 instances programatically

EDIT: My goal is to be able to emit metrics from my spring-boot application and have them sent to a Graphite server. For that I am trying to set up statsd. If you can suggest a cleaner approach, that would be better.
I have a Beanstalk application which requires statsd to run as a background process. I was able to specify commands and packages through ebextensions config file as follows:
packages:
yum:
git: []
commands:
01_nodejs_install:
command: sudo yum -y install nodejs npm --enablerepo=epel
ignoreErrors: true
02_mkdir_statsd:
command: mkdir /home/ec2-user/statsd
03_fetch_statsd:
command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
ignoreErrors: true
04_run_statsd:
command: node stats.js exampleConfig.js
cwd: /home/ec2-user/statsd
When I try to deploy the application to a new environment, the EC2 node never comes up fully. I logged in to check what might be going on and noticed in /var/log/cfn-init.log that 01_nodejs_install, 02_mkdir_statsd and 03_fetch_statsd were executed successfully. So I guess the system was stuck on the fourth command (04_run_statsd).
2016-05-24 01:25:09,769 [INFO] Yum installed [u'git']
2016-05-24 01:25:37,751 [INFO] Command 01_nodejs_install succeeded
2016-05-24 01:25:37,755 [INFO] Command 02_mkdir_statsd succeeded
2016-05-24 01:25:38,700 [INFO] Command 03_fetch_statsd succeeded
cfn-init.log (END)
I need help with the following:
If there is a better way to install and run statsd while instantiating an environment, I would appreciate if you could provide details on that approach. This current scheme seems hacky.
If this is the approach I need to stick with, how can I run the fourth command so that statsd can be run as a background process?
Tried a few things and found that the following ebextensions configs work:
packages:
yum:
git: []
commands:
01_nodejs_install:
command: sudo yum -y install nodejs npm --enablerepo=epel
ignoreErrors: true
02_mkdir_statsd:
command: mkdir /home/ec2-user/statsd
03_fetch_statsd:
command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
ignoreErrors: true
04_change_config:
command: cat exampleConfig.js | sed 's/2003/<graphite server port>/g' | sed 's/graphite.example.com/my.graphite.server.hostname/g' > config.js
cwd: /home/ec2-user/statsd
05_run_statsd:
command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null &
cwd: /home/ec2-user/statsd
Note that I added another command (04_change_config) so that I may configure my own Graphite server and port in statsd configs. This change is not needed to address the original question, though.
The actual run command uses setsid to run the command as a daemon.

OpenShift Origin on Fedora 19

I have problem to deploy OpenShift Origin on Fedora 19. I'm getting error:
Preflight check: verifying system and resource availability.
Checking broker.example.com:
* SSH connection succeeded
* Target host is running non-Fedora, non-RHEL
* Located getenforce
* SELinux is running in please login as the user "fedora" rather than
the user "root". mode
* Located yum
* Located puppet
* Located augtool
* Located dnssec-keygen
* Located htpasswd
* Located scl
* ERROR: The ruby193 software collection is not installed. Correct
this by running `yum install ruby193` on this system.
* ERROR: The 'epel' repository isn't available via yum. Install /
enable this repository and try again.
That's weird:
Target host is running non-Fedora, non-RHEL
Release:
[root#broker tmp]# cat /etc/issue
Fedora release 19 (Schrödinger’s Cat)
Kernel \r on an \m (\l)
I'm not able to install ruby193 via yum. Dependency problem. Fedora 19 has ruby version 2.0.0. Log from installation of ruby193: http://pastebin.com/raw.php?i=TpJEF4Rw
So I'm using rvm:
[root#broker tmp]# ruby -v
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
[root#broker tmp]#
At the end, I'm installing Origin by:
sh <(curl -s https://install.openshift.com/)
And my configuration file: http://pastebin.com/raw.php?i=sSgYVVMt
I figured out that problem was in ssh check. I was not able to ssh to broker but installation script was facing as if ssh is OK.
Needed packages: (yum -y install) ruby unzip httpd-tools puppet augeas bind
Interesting. I solved it by adding repos and install some things:
cat <<EOF> /etc/yum.repos.d/openshift-origin-deps.repo
[openshift-origin-deps]
name=openshift-origin-deps
baseurl=http://mirror.openshift.com/pub/origin-server/release/3/fedora-19/dependencies/x86_64/
gpgcheck=0
enabled=1
EOF
cat <<EOF> /etc/yum.repos.d/openshift-origin.repo
[openshift-origin]
name=openshift-origin
baseurl=http://mirror.openshift.com/pub/origin-server/release/3/fedora-19/packages/x86_64/
gpgcheck=0
enabled=1
EOF
yum clean all
yum -y update
yum -y install ruby unzip httpd-tools puppet bind vim rubygem-openshift-origin-container-selinux</strike>
I would email this to the openshift origin users list here (https://lists.openshift.redhat.com/openshiftmm/listinfo/users) alot of the developers are on that list and should be able to help you with a solution. Then once you have one come back here and update us so that if anyone else runs into it they'll have something to reference.