Can I change the port in project clone URLs? - gitlab

I have installed gitlab in a virtual machine and set up following port forwards:
host 8080 -> guest 80
host 2222 -> guest 22
Now I can access gitlab web interface via gitlab.example.com:8080 (I also have added gitlab.example.com to /etc/hosts on the host).
However, all the project URLs for cloning look like git#gitlab.example.com:zoran/zoran-s-project-1.git and http://gitlab.example.com/zoran/zoran-s-project-1.git. Can I configure gitlab to add 2222 and 8080 ports to the clone URLs?

Sure you can-- they're in the config/gitlab.yml file. The following two values are what you're looking for:
# ...
gitlab:
# ...
port: 8080
# ...
gitlab-shell:
# ...
ssh_port: 2222

Related

Is it possible to install GitLab server on virtual machine with a invalid IP address?

I have installed GitLab server on a virtual machine (VMWare). GitLab IP address is 192.168.1.4 . I can see GitLab from browser. I generated ssh-key and added to GitLab server.
When I run ssh -T git#192.168.1.4 I got this error:
ssh: connect to host 192.168.1.4 port 22: Connection refused
Not only you need to run SSHD in your GitLab server (type netstat -l -t -n to check that it listens on port 22, as in here).
But you also need to check for:
firewall rules
port mapping (in your VMWare configuration)

How to configure port forwarding in gitlab?

I have configured gitlab so that I can only connect to it from a specific ip address. In gitlab.rb file I configured the url this way:
external_url 'gitlab.example.pl:2000'
and also configured ufw:
[ 1] 2000 ALLOW IN 192.169.0.1/24
When I want to access gitlab by browser I have to type additionally port 2000, so I would like to port forwarding to 443. I can't give access to port 443 only to a specific ip address in ufw because i configured mattermost in this same server and must be access from everywhere. I tried port forwarding with apache2 or ngnix but gitlab listens on port 80 and because of this apache2 and nginx are not working. I also tried find solution in file gitlab.rb
nginx['listen_port'] = 443
nginx['redirect_http_to_https_port'] = 80
nginx['redirect_http_to_https'] = false
Please give me a solution to this problem.
You do you not have to configure listeners for gitlab and mattermost separately. Both your mattermost and gitlab URL will point to the same IP address and port and both should route to NGINX.
NGINX will route traffic appropriately to gitlab or mattermost based on the hostname header. Just configure the external_url for gitlab and mattermost_external_url for mattermost appropriately within the same gitlab installation. There's no particular need to put apache in front of gitlab's nginx.
external_url 'https://gitlab.example.com'
mattermost_external_url 'https://mattermost.example.com'
nginx['listen_port'] = 443
nginx['listen_https'] = true
As long as your firewall allows traffic on port 443 to nginx, you're OK. If you need that to be a specific IP address, set nginx['listen_address'].

Copying file from Vagrant-VM to host failed... connect to host 127.0.0.1 port 2222: Connection refused

I want to copy file from vagrant machine to my host machine to do that I'm using this command
scp -P 2222 vagrant#127.0.0.1:/home/vagrant/pjsip-build/lib/armeabi-v7a/libyuv.so .
but it gives me this error ssh: connect to host 127.0.0.1 port 2222: Connection refused
If i don't mention the port and just run this way
scp vagrant#127.0.0.1:/home/vagrant/pjsip-build/lib/armeabi-v7a/libyuv.so
it gives me error scp : home/vagrant/pjsip-build/lib/armeabi-v7a/libyuv.so: No such file or directory
So what's going wrong here? how can i copy file from guest to host machine.
EDIT:
MY ssh configuration is this
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile C:/Users/arfeen/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
and when i do vagrant up my port forwarding is this
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)s this
first issue - you probably have no one listening on 2222. it should not say port 22 as the P flag should call the 2222 port.
** after your correction - check that the port is open in iptables if you have blocking and check the sshd is listening on this port:
netstat -l
second - better use the src and dst:
scp vagrant#127.0.0.1:/home/vagrant/pjsip-build/lib/armeabi-v7a/libyuv.so .
(notice the . in the end that means copy to local folder)
and make sure the machine at 127.0.0.1 has the path: /home/vargant.... ect, and the user vargant has access to the so file.
I also can't understand why you use 127.0.0.1 - as this would be your own address. unless you use this to hide the real address of the server in question - or you local card is bridged, and then - did you change the listening port of ssh on the machine to 2222 ?
when you run vagrant up it should give you some indication (this is my own example, the port will differ for you)
xxxx
==> jenkins: Setting the name of the VM: jenkins
==> jenkins: Fixed port collision for 22 => 2222. Now on port 2205.
xxxx
==> jenkins: Forwarding ports...
jenkins: 22 (guest) => 2205 (host) (adapter 1)
In this case it runs ssh port on port 2205 on my host so I would need to run the scp -P 2205 ....
You can also review this information by running `vagrant ssh-config``
$ vagrant ssh-config
Host jenkins
HostName 127.0.0.1
User vagrant
Port 2205
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/fhenri/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
If your vagrant VM is running on your host machine (a.k.a. there's just one computer involved) you can transfer files by placing them in the "Synced folder" within vagrant.
When vagrant provisions a virtual machine, by default it links the /vagrant folder to whatever folder the vagrant file is located in. And by linked, I mean the /vagrant folder on the virtual machine contains all of the same stuff as the Vagrantfile folder on the host machine. Copying any files to that folder from either machine will make those files available on both machines.
By editing your vagrant file, you can add other folders that are synced in this manner. You can learn more by reading the vagrant docs on the topic here: https://www.vagrantup.com/docs/synced-folders/

Gerrit Change Canonical URL

I have set up gerrit on my subdomain at gerrit.mydomain.com. By default gerrit is running on port 8080 so i have changed the port in gerrit.config [httpd] section to 80 so now gerrit.mydomain.com open gerrit home page.
Now when i print canonical url by running following command:
git config -f ~/gerrit_folder/etc/gerrit.config gerrit.canonicalWebUrl
It still shows url as follows:
http://localhost:8080/
And its the problem now when i sign in by openID it returns to my domain as gerrit.mydomain.com:8080 and nothing happens because there is no server there
Can you please tell me how can i fix this so that it redirects to gerrit.mydomain.com and canonical url will be changed to http://localhost:80?
The gerrit.canonicalWebUrl is not related to the httpd.port configuration. This makes sense if you use a proxy server (such as nginx or apache) where you forward port 80 or 443 (webserver) to port 8080 (gerrit)
You have to edit your gerrit.config and adjust the canonicalWebUrl line to the hostname it should be.
You should able to run git config -f ~/gerrit_folder/etc/gerrit.config --add gerrit.canonicalWebUrl "http://gerrit.mydomain.com/"
I also highly recommend using a reverse proxy with ssl.

Vagrant port forwarding 80 to 8000 with Laravel Homestead

My Problem:
I can only access my sites through port 8000, but not 80, which makes me think it is not redirecting 80 to 8000 as it says it should be. I want to simply type local.kujif.com into my browser and it loads the site, which I read was port 80 by default. I am using curl to check it and it returns:
curl 'http://local.kujif.com'
curl: (7) Failed connect to local.kujif.com:80; No error
However if I add :8000 to the url then it works; it returns my index.php which simply prints 'test':
curl 'http://local.kujif.com:8000'
test
My Details:
I am using Laravel Homestead and Vagrant with Oracle VM VirtualBox.
In the Homestead.rb it has the port forwarding. I haven't edited it at all:
config.vm.network "forwarded_port", guest: 80, host: 8000
config.vm.network "forwarded_port", guest: 3306, host: 33060
config.vm.network "forwarded_port", guest: 5432, host: 54320
I also have Microsoft IIS installed for my work stuff. I obviously stop that service whenever I need vagrant to use the localhost.
"vagrant up" shows:
My Homestead.yaml file:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
authorize: /Users/Tyler/.ssh/id_rsa.pub
keys:
- /Users/Tyler/.ssh/id_rsa
folders:
- map: C:\DEV\Linux
to: /var/www/
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
- map: local.kujif.com
to: /var/www/kujif
variables:
- key: APP_ENV
value: local
You should continue to use ports above 1024 since they are non-privileged ports, BUT if you do want you can run as port 80 on the Homestead VM, as long as you don't have anything holding on to that port on the host machine. Just tried it and it worked, with a few gotchas. First, you change that line in the .rb file from:
config.vm.network "forwarded_port", guest: 80, host: 8000
to
config.vm.network "forwarded_port", guest: 80, host: 80
When you fire your VM up after saving you will get a warning from vagrant:
==> default: You are trying to forward to privileged ports (ports <= 1024). Most
==> default: operating systems restrict this to only privileged process (typically
==> default: processes running as an administrative user). This is a warning in case
==> default: the port forwarding doesn't work. If any problems occur, please try a
==> default: port higher than 1024.
==> default: Forwarding ports...
default: 80 => 80 (adapter 1)
But it worked for me. Now, to actually get to the VM I had to use it's private IP instead of the localhost name:
http://192.168.10.10/
But sure enough my site was there and everything was working. If you decide to keep it that was you can add that IP address to your hosts file to give it a nice short name.
Hope this helps.
I see there is an accepted answer, but this alternative may also help someone.
If I understand correctly you really dislike the port "8000"!
Have you tried setting a private network?
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
/*other config stuff here */
config.vm.network :private_network, ip: "192.168.33.22"
This way you can simply use that IP address, or edit you hosts file to map the local domain to that IP.
Take a look at the Vagrant docs:Vagrant Private Networks
BTW, You shouldn't need to shutdown your IIS local server as that is running on a totally different IP range. I have Apache running locally while also accessing the VM server. This allows you to use tools like composer (to pull in laravel) on your local if needed.
I'm not sure what the confusion is - this is the way it's supposed to work.
The web server on the VM listens on port 80. Vagrant/VirtualBox forwards that port from 80 (on the VM) to 8000 (on localhost) so that you can access the site at http://localhost:8000.
Port 80 on the VM's domain name is not going to be available - that domain name probably resolves to localhost.
Try the following: dig local.kujif.com (or nslookup or even ping - I don't know what tools are available on Windows) to find out what IP address that name is resolving to. You will probably find that it's 127.0.0.1 (localhost).
You could try using the IP address set in the homestead file instead: http://192.168.10.10/ - this might work, but it will depend on how networking is configured in the VM.
Ideally, you need to set networking to "bridged" in the VM - this will make the VM look (to your network) like any other device on the network. Other networking options in the VM (sorry, I'm not familiar with the options in VirtualBox) will set the VM up with its own network that is not accessible outside the VM - this is why port forwarding is used to expose network services on the VM.
You can disable the default port forwarding completely by adding the following to the Homestead.yaml:
default_ports: false
Or configure however you like by adding something like:
ports:
- send: 80
to: 80

Resources