DFabric / DPlatform-Shell

Deploy self-hosted apps easily: simple, bloat-free, independent installation
https://dfabric.github.io/DPlatform-Shell
MIT License
271 stars 44 forks source link

Rocketchat install fails on Rpi3 #37

Closed drcross closed 7 years ago

drcross commented 7 years ago

I cant get Rocketchat to start

Process- Brand New install of Rasbian, got the full updates and then ran the script. it complained about node.js not being able to be installed without root so i reran it. The I tried an install again and got the following errors-

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/6.10.0"

gyp WARN EACCES attempting to reinstall using temporary dev dir "/var/www/rocketchat/programs/server/node_modules/fibers/.node-gyp" make: Entering directory '/var/www/rocketchat/programs/server/node_modules/fibers/build'

npm WARN lifecycle meteor-dev-bundle@0.0.0~install: cannot run in wd %s %s (wd=%s) meteor-dev-bundle@0.0.0 node npm-rebuild.js /var/www/rocketchat/programs/server

The I uninstalled rocketchat and tried it again-

pi@raspberrypi:~/DPlatform-ShellCore $ sudo sh init.sh Already up-to-date. Obtaining the IPv4 address from http://ipv4.icanhazip.com... done. Removed symlink /etc/systemd/system/multi-user.target.wants/rocket.chat.service. You have Node.js installed mv: cannot move ‘bundle/..’ to ‘./..’: Device or resource busy rm: cannot remove ‘rocket.chat.tgz’: No such file or directory

fibers@1.0.15 install /var/www/rocketchat/programs/server/node_modules/fibers node build.js || nodejs build.js

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/6.10.0" gyp WARN EACCES attempting to reinstall using temporary dev dir "/var/www/rocketchat/programs/server/node_modules/fibers/.node-gyp" make: Entering directory '/var/www/rocketchat/programs/server/node_modules/fibers/build'

j8r commented 7 years ago

Hi drcross. Seeing your logs, I don't see fatal errors, just WARNS. Your first install used the meteor bundle, which is no longer needed. You have done right to remove and trying to reinstall Rocket.Chat.

If you have outputs with npm ERR!, it will be a problem - is this the case? Maybe Rocket.Chat works anyway?

drcross commented 7 years ago

Hi Julian, Thanks for making this the easiest way to install rocketchat, it was working fine a few months ago in a similar situation but I haven't been able to get it working since, I tried last weekend too with the same result. Are there further logs that I can provide to help debug? Its easy to replicate the issue for yourself, just put a fresh install on a SD, run the updates and start your script?

j8r commented 7 years ago

Thanks you too. Since this last months the installation has changed because RC have upgraded its techs. By the way I'm preparing a big release of DPlatform that will have tests for installation, a Web UI and better error handling.

I've tested on my side with my Pine64, no problems. Can you print me a systemctl status rocket.chat -l?

drcross commented 7 years ago

That sounds good, when is the release date? It would also be helpful if you could give details of a "known good" version of Raspbian so maybe I could revert to that release and it will work? I will send you over the results of that command in a few hours :)

Also one other suggestion is to give more information at the gui screen that says "local only or External IP". Its not clear why you need this information, what is the setting doing? For example my Rpi will have an internal DHCP LAN address but I might port forward from my router to the internet, so in this case do I still select "local only"?

j8r commented 7 years ago

You can have more informations in "About", Local is 192.168.x.x and External it simply bind to 0.0.0.0 on the application. It often change nothing indeed, but that's an extra security, specially for those on IPv6.

This unclear zone will be fixed on the next release, all the apps will listen to localhost/127.0.0.1/::1 and the Caddy reverse proxy will open them to your router and the world, or to nothing, depending of the configurations.

For testing, this is the pros and cons of supporting lots of hardwares. I've only Raspberry equivalent like Pine64 and BananaPi. So when it works on them, I suppose it also works on other ARM boards, and this is nearly always the case except for specific changes on their custom OS.

drcross commented 7 years ago

pi@raspberrypi:~ $ systemctl status rocket.chat -l ● rocket.chat.service - Rocket.Chat server Loaded: loaded (/etc/systemd/system/rocket.chat.service; enabled) Active: active (running) since Wed 2017-03-01 23:17:05 UTC; 1 day 21h ago Main PID: 521 (node) CGroup: /system.slice/rocket.chat.service └─521 /usr/bin/node main.js

This is the result of the command but the web address doesnt work- http://IP-ADDRESS:3004

j8r commented 7 years ago

Thus this is only a network problem :). Look at /etc/systemd/system/rocket.chat.service and modify the ROOT_URL. That's why there are "Local" and "Global" for network access: the local IP works out of the box without router configurations. The other is usefull for IPv6 (no NAT configurations needed).

Don't forget to do a systemctl daemon-reload and then °systemctl restart rocket.chat` after modifying the service.

drcross commented 7 years ago

Hi, The ROOT_URL is my local IP address but I still cannot access that address when I go to the webpage-

pi@raspberrypi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:57:77:52
inet addr:192.168.0.248 Bcast:192.168.0.255 Mask:255.255.255.0

pi@raspberrypi:~ $ cat /etc/systemd/system/rocket.chat.service | grep ROOT Environment=NODE_ENV=production ROOT_URL=http://192.168.0.248:3004/ PORT=3004

Is there anything else it could be?

j8r commented 7 years ago

Sounds good! This issue is related to your network - you should be able to access your Raspberry local IP http://192.168.0.248:3004/. If not, i can't do much on my side. Have you ever be able to connect to a simple http server like nc -lp 8000? When you connect to this server, you will see informations about the request in the terminal.