To setup Firefox Send on shared hosting you will need a Shared hosting that supports NodeJS.
SSH support is very much recommended but not necessary for non-production service.
Following the following steps:
1. Prepare dist/
You probably shall have issue running npm run build
since you can't npm link webpack
which requires sudo
which is impossible under shared hosting environment.
On you local machine, grab /app/dist/
in the official Docker image: docker run registry.gitlab.com/timvisee/send:latest
then do a docker cp <container-id>:/app/dist ./
.
Zip the directory: tar zcvf dist.tar.gz dist
.
2. Prepare hosting
SSH into the instance or use the Web SSH: if your host does not have SSH support, continue but your instance won't be able to handle production workload.
Clone the latest code to public_html
(for DirectAdmin: adjust as needed) git clone https://github.com/timvisee/send.git
, or upload with zip file and unzip.
Setup hosting as usual NodeJS website, probably with NodeJS Selector
. Use NodeJS >=16. Setup SSL certs, etc.Use production
if you have SSH access and can setup Redis; If not use development
with caveats listed at https://github.com/timvisee/send/issues/66 .
Setup environment variables per https://github.com/timvisee/send/blob/master/docs/docker.md .
Entrypoint is server/bin/prod.js
.
3. (Optional but very much recommended) Setup Redis
If you have SSH access, follow https://www.cnbeining.com/2022/03/redis-object-cache-on-shared-hosting-directadmin-cpanel-plesk-etc-without-native-support/ but tell Redis to listen on 6379
:
# create a unix domain socket to listen on
unixsocket /tmp/redis.sock
# set permissions for the socket
unixsocketperm 775
# No password
# requirepass passwordtouse
# Do not listen on IP
port 6379
daemonize yes
stop-writes-on-bgsave-error no
rdbcompression yes
# maximum memory allowed for redis - 50MB for small site, 128MB+ for high traffic
maxmemory 50M
# how redis will evice old objects - least recently used
maxmemory-policy allkeys-lru
If you don't have Redis it may be possible to transport Redis binary to the server to bypass building step but I have not tried that yet.
4. Fake install
Either:
4.1 With SSH
Follow command proposed by NodeJS Selector
to enter Virtual Environment.
Run npm install
.
4.2 Without SSH
Use NodeJS Selector
to conduct npm install
.
5. Combine dist/
and code
Upload the dist.tar.gz
created in Step 1 to the same folder of the code. Unzip.
IMPORTANT: server
and dist
should be under the same folder after this step.
6. Start Server
Start server and everything should be working.
Potential Issues
UI not working. Tons of underfined
in requests
You did not run npm build
. Can you setup webpack? If so setup and build; If not follow Step 5.
403 Error
Did you start the server?
500 Error
- Did you setup Redis? If not see Step 1.
- Is everything accessible? Double check environment variables.
- Failed
npm build
: See Step 5 to do a combination to bypass this step.
Hi,
I did exactly all steps (except Redis) but I still have a problem with UI/App, I didn’t try “npm build” but transfered dist directory, please find snaps for the errors. in the dev window, error links refer to root of my website despite app root is installed on domain.com/send.
Main page:
https://imageupload.io/1PmHlJn2k6E1P5C
Dev window:
https://imageupload.io/t57vaEhbX1OfVsr
Thank you for your help !
I say try other tools – Send is abandonware now. Not the news we want to hear but still 🙁