How to deploy GraphQL Apollo-Server on a local machine? - graphql

Follow the official doc I have buit a simple graphql server, and use express to serve it locally (for development), I also build a web app which uses Apollo-Client to get the data from the server.
Now I want to deploy my Apollo-Server to another computer which is on the same LAN, you can consider it as the "PROD".
I saw on the official site it recommends using Heroku, but I don't need any cloud platforms. What are the steps to serve my Apollo-Serve on a local machine? (because it's internal use only, I also want to turn on the graphql playground)

Assuming that:
You have your GraphQL server running at localhost:4000 (or any other port)
You have enabled the playground (it's enabled by default)
Your machine allows inbound network connections (at least from your LAN)
Then this is just a matter of figuring out what your machine's local network name or IP address is.
Let's say your local network name is wtf.local - then you should be able to connect to your server from another machine by going to the url http://wtf.local:4000
Or if you know your local IP, say 192.168.0.22, then try http://192.168.0.22:4000

Related

I don't have fixed IP address, how can I let others access my database?

I run Memgraph Platform on my laptop inside Docker container. When I'm at the office my colleague can access it, but when I work from home he can not get to the database. I don't have fixed IP address, and my ISP doesn't allow me to do port forwarding and dynamic DNS also doesn't work for me. What can I do to make my database accessible to others?
Try to follow the advice given by #Martheen. I have experience with running Tailscale for this purpose and it works.
I don't know why you can't deploy it to some server (if there are regulation issues or company policies in question) but if it is not any of those maybe you could use Memgraph Cloud and host your data. That way you would be sure that everyone with the right credentials could access your data. But it all depends on your setup and usage scenario. Since you are using Docker I presume that you have all of your environment configured right the way that you want on your laptop.

Fetch data from gatServerProps of NextJs app when another api server is also running in localhost

According NextJs Documentations:
You should not use fetch() to call an API route in getServerSideProps. Instead, directly import the logic used inside your API route. You may need to slightly refactor your code for this approach.
Fetching from an external API is fine!
So we cannot use NextJs built-in APIs in getStaticProps or getServerSidePropsbut when I'm going to use another API service that is based on Laravel Framework as the back server and fetch it by Axios on the getServerSideProps function, I get Error: connect ECONNREFUSED 127.0.0.1:8080 error.
It should also be noted that everything is fine if the API server is addressed out of our development machine. In Other words, It will face when it's the development environment and both Laravel backend server and NextJs front-end server locate at localhost.
Could you help me out finding a solution for this problem?
When using localhost or 127.0.0.1 inside a docker container, that points to that docker container only, not the host computer.
There are two pretty easy solutions.
Create a docker network, add both containers to that, and use container name instead of ip (https://www.tutorialworks.com/container-networking/)
Use host networking for this container: https://docs.docker.com/network/host/
Edit: Added a link for a tutorial on how to create and use docker networks
So, as #tperamaki's answer already mentions: "When using localhost or 127.0.0.1 inside a docker container, that points to that docker container only, not the host computer."
You can use the ip of your machine in your local network. By example, 196.168.0.10:8080 instead 127.0.0.1:8080.
But you also can connect to the special DNS name host.docker.internal which resolves to the internal IP address used by the host.
In your case just add the port where the othe container is listening:
http://host.docker.internal:8080
In this section of the documentation Networking features in Docker Desktop for Mac, they explain how to connect from a container to a service on the host. Note that a mac is mentioned there, but I tried it on a linux distro and it also works (also in this other answer it is mentioned that it works for windows).

Laravel Homestead needs to access local web server

I have the following setup in my DEV environment which is running on Windows 10 (which should be irrelevant).
Homestead with Virtual box to develop my Laravel applications
on my local OS I have a IBM Domino server running as dev1.mydomain.local
I'm trying to access the REST API on the Domino server from my Laravel installations. At the moment I'm getting 404 errors when trying because the domino server is not available from within the VirtualBox of Homestead.
Here is the network configuration of the homestead virtual box
Both webservers Domino and nginx on the virtual box are running on standard ports
Here is the ifconfig output of the virtual box
How can I make that possible?
UPDATE:
It just came to me that I am able to access the Domino server with LDAP, so perhaps changing the http and https port of the Domino server is already the answer...
I will test that and then get back here...
Changing the Port of the Domino server to 8080 enable me to access the server's REST API
dev1.mydomain.local:8080/api/data/
The connection to the local machine seems to be enable through the VirtualBox's second network adapter and the my call to the REST API got confused with the 2 web servers listening to the same port on localhost(127.0.0.1)
Update
although I was kind of able to connect to the server using the address above, still left me with the problem that authentication wasn't possible. In order to do so (and I have not the slightest idea why), I had to change to the local IP address of my PC to access the REST services
http://192.168.0.155:8080/api/data
If someone could explain that I would be happy :-)

Turning laptop into a server to run spring tool suite over the internet

I am trying to run a website from my computer using Spring Tool Suite (STS). Using pivotal tc Server I can access this website that I made by running the server and using localhost:8080 as a url.
My laptop contains other software that is permitted to only run in the laptop and it is needed to run my code in Spring tool suite.(School policy to SSH's into another computer to get access to my database; it is a requirement)
How would I be able to access that website that is running in my laptop that uses pivotal tc Server. Please assume I know nothing about IP address and DNS. Also, assume that I can move my laptop around like a mobile device.
To solve this problem you need to tunnel to your local machine

how to setup a SVN server with collabnet subversion edge on windows server, and how to connect to it remotely using Xcode on Mac?

I am a newbie about SVN server. I've certainly used SVN to check in/out codes before, but never learned how to setup a Subversion server it up from ground up.
What I have:
Server | Windows Server 2012 Standard, Activated:
Installed Collabnet Subversion Edge,
Created a repository,
Created users and also started the server, using start button at GUI on localhost:4434/csvn/.
Client | MacOSX Mountain, with Xcode 4.5 Installed:
I have tried to add repository by using the external IP address and the repository name
like https://1.1.1.1/svn/, but as expected, it does not work and says "Host is unreachable".
I have tried to use the local hostname, no luck either. Although I did notice in their documentation, they mentioned IP address setting, but I cannot find it anywhere.
I would like to make it so that users can access and use the SVN repository remotely and locally.
I have no idea what to do, please help me. Thanks for your time!
Go back to the server for a minute. When you are configuring it, are you only using the local web browser? Have you tried accessing the server using web browser from your Mac? I would see if the Mac can reach the web gui first. Maybe you have network issues you have to resolve, such as DNS, routing or firewall.
In terms of using XCode, or any SVN Client, the URL you must enter is the URL to your repository. That will not be:
https://1.1.1.1/svn/
It will be something like:
https://1.1.1.1/svn/reposname
In the Subversion Edge web GUI if you go to the list of repositories, you will see an example checkout command next to each repository. This command shows you the URL to enter in a SVN client to reach the root of the repository. Example screenshot here:
https://ctf.open.collab.net/sf/projects/svnedge/screenshots/screens/repos/repos.png
I think I have sloved the problem. I knew I have to access the repo using my external IP address somehow, but when I tried something like, for example my IP is 1.1.1.1, when I typeed https://1.1.1.1/svn/reposname, I got a no response message.
I figured that since there are more than 1 computers on my local network, the router has to somehow direct the request to my server only, not some other machine. After some reaserch I found that port forwarding does the trick. Since apache server uses port 80 as default, just get the default gateway ip using ipconfig from CMD, then enable port forwarding for port 80, to the server's local ip address. At least I can access it using my external ip on my local network. I will try to access it remotely and see.

Resources